diff --git a/wp-content/plugins/buddypress/bp-activity/actions/delete.php b/wp-content/plugins/buddypress/bp-activity/actions/delete.php new file mode 100644 index 0000000000000000000000000000000000000000..9a4f4b2e704ee3d5c02b799821f275e149dfeae5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/delete.php @@ -0,0 +1,72 @@ +<?php +/** + * Activity: Delete action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Delete specific activity item and redirect to previous page. + * + * @since 1.1.0 + * + * @param int $activity_id Activity id to be deleted. Defaults to 0. + * @return bool False on failure. + */ +function bp_activity_action_delete_activity( $activity_id = 0 ) { + // Not viewing activity or action is not delete. + if ( !bp_is_activity_component() || !bp_is_current_action( 'delete' ) ) + return false; + + if ( empty( $activity_id ) && bp_action_variable( 0 ) ) + $activity_id = (int) bp_action_variable( 0 ); + + // Not viewing a specific activity item. + if ( empty( $activity_id ) ) + return false; + + // Check the nonce. + check_admin_referer( 'bp_activity_delete_link' ); + + // Load up the activity item. + $activity = new BP_Activity_Activity( $activity_id ); + + // Check access. + if ( ! bp_activity_user_can_delete( $activity ) ) + return false; + + /** + * Fires before the deletion so plugins can still fetch information about it. + * + * @since 1.5.0 + * + * @param int $activity_id The activity ID. + * @param int $user_id The user associated with the activity. + */ + do_action( 'bp_activity_before_action_delete_activity', $activity_id, $activity->user_id ); + + // Delete the activity item and provide user feedback. + if ( bp_activity_delete( array( 'id' => $activity_id, 'user_id' => $activity->user_id ) ) ) + bp_core_add_message( __( 'Activity deleted successfully', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error when deleting that activity', 'buddypress' ), 'error' ); + + /** + * Fires after the deletion so plugins can act afterwards based on the activity. + * + * @since 1.1.0 + * + * @param int $activity_id The activity ID. + * @param int $user_id The user associated with the activity. + */ + do_action( 'bp_activity_action_delete_activity', $activity_id, $activity->user_id ); + + // Check for the redirect query arg, otherwise let WP handle things. + if ( !empty( $_GET['redirect_to'] ) ) + bp_core_redirect( esc_url( $_GET['redirect_to'] ) ); + else + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'bp_activity_action_delete_activity' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/actions/favorite.php b/wp-content/plugins/buddypress/bp-activity/actions/favorite.php new file mode 100644 index 0000000000000000000000000000000000000000..297ee96f57858473e36b9775c1b5ad06f8bc3004 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/favorite.php @@ -0,0 +1,31 @@ +<?php +/** + * Activity: Favorite action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Mark activity as favorite. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_mark_favorite() { + if ( !is_user_logged_in() || !bp_is_activity_component() || !bp_is_current_action( 'favorite' ) ) + return false; + + // Check the nonce. + check_admin_referer( 'mark_favorite' ); + + if ( bp_activity_add_user_favorite( bp_action_variable( 0 ) ) ) + bp_core_add_message( __( 'Activity marked as favorite.', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error marking that activity as a favorite. Please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#activity-' . bp_action_variable( 0 ) ); +} +add_action( 'bp_actions', 'bp_activity_action_mark_favorite' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/actions/feeds.php b/wp-content/plugins/buddypress/bp-activity/actions/feeds.php new file mode 100644 index 0000000000000000000000000000000000000000..e96d6b7fa146422bc56ad905a83f996c2406431e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/feeds.php @@ -0,0 +1,183 @@ +<?php +/** + * Activity: RSS feed actions + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Load the sitewide activity feed. + * + * @since 1.0.0 + * + * @return bool False on failure. + */ +function bp_activity_action_sitewide_feed() { + $bp = buddypress(); + + if ( ! bp_is_activity_component() || ! bp_is_current_action( 'feed' ) || bp_is_user() || ! empty( $bp->groups->current_group ) ) + return false; + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'sitewide', + + /* translators: Sitewide activity RSS title - "[Site Name] | Site Wide Activity" */ + 'title' => sprintf( __( '%s | Site-Wide Activity', 'buddypress' ), bp_get_site_name() ), + + 'link' => bp_get_activity_directory_permalink(), + 'description' => __( 'Activity feed for the entire site.', 'buddypress' ), + 'activity_args' => 'display_comments=threaded' + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_sitewide_feed' ); + +/** + * Load a user's personal activity feed. + * + * @since 1.0.0 + * + * @return bool False on failure. + */ +function bp_activity_action_personal_feed() { + if ( ! bp_is_user_activity() || ! bp_is_current_action( 'feed' ) ) { + return false; + } + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'personal', + + /* translators: Personal activity RSS title - "[Site Name] | [User Display Name] | Activity" */ + 'title' => sprintf( __( '%1$s | %2$s | Activity', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ), + + 'link' => trailingslashit( bp_displayed_user_domain() . bp_get_activity_slug() ), + 'description' => sprintf( __( 'Activity feed for %s.', 'buddypress' ), bp_get_displayed_user_fullname() ), + 'activity_args' => 'user_id=' . bp_displayed_user_id() + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_personal_feed' ); + +/** + * Load a user's friends' activity feed. + * + * @since 1.0.0 + * + * @return bool False on failure. + */ +function bp_activity_action_friends_feed() { + if ( ! bp_is_active( 'friends' ) || ! bp_is_user_activity() || ! bp_is_current_action( bp_get_friends_slug() ) || ! bp_is_action_variable( 'feed', 0 ) ) { + return false; + } + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'friends', + + /* translators: Friends activity RSS title - "[Site Name] | [User Display Name] | Friends Activity" */ + 'title' => sprintf( __( '%1$s | %2$s | Friends Activity', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ), + + 'link' => trailingslashit( bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() ), + 'description' => sprintf( __( "Activity feed for %s's friends.", 'buddypress' ), bp_get_displayed_user_fullname() ), + 'activity_args' => 'scope=friends' + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_friends_feed' ); + +/** + * Load the activity feed for a user's groups. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_my_groups_feed() { + if ( ! bp_is_active( 'groups' ) || ! bp_is_user_activity() || ! bp_is_current_action( bp_get_groups_slug() ) || ! bp_is_action_variable( 'feed', 0 ) ) { + return false; + } + + // Get displayed user's group IDs. + $groups = groups_get_user_groups(); + $group_ids = implode( ',', $groups['groups'] ); + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'mygroups', + + /* translators: Member groups activity RSS title - "[Site Name] | [User Display Name] | Groups Activity" */ + 'title' => sprintf( __( '%1$s | %2$s | Group Activity', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ), + + 'link' => trailingslashit( bp_displayed_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() ), + 'description' => sprintf( __( "Public group activity feed of which %s is a member.", 'buddypress' ), bp_get_displayed_user_fullname() ), + 'activity_args' => array( + 'object' => buddypress()->groups->id, + 'primary_id' => $group_ids, + 'display_comments' => 'threaded' + ) + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_my_groups_feed' ); + +/** + * Load a user's @mentions feed. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_mentions_feed() { + if ( ! bp_activity_do_mentions() ) { + return false; + } + + if ( !bp_is_user_activity() || ! bp_is_current_action( 'mentions' ) || ! bp_is_action_variable( 'feed', 0 ) ) { + return false; + } + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'mentions', + + /* translators: User mentions activity RSS title - "[Site Name] | [User Display Name] | Mentions" */ + 'title' => sprintf( __( '%1$s | %2$s | Mentions', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ), + + 'link' => bp_displayed_user_domain() . bp_get_activity_slug() . '/mentions/', + 'description' => sprintf( __( "Activity feed mentioning %s.", 'buddypress' ), bp_get_displayed_user_fullname() ), + 'activity_args' => array( + 'search_terms' => '@' . bp_core_get_username( bp_displayed_user_id() ) + ) + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_mentions_feed' ); + +/** + * Load a user's favorites feed. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_favorites_feed() { + if ( ! bp_is_user_activity() || ! bp_is_current_action( 'favorites' ) || ! bp_is_action_variable( 'feed', 0 ) ) { + return false; + } + + // Get displayed user's favorite activity IDs. + $favs = bp_activity_get_user_favorites( bp_displayed_user_id() ); + $fav_ids = implode( ',', (array) $favs ); + + // Setup the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'favorites', + + /* translators: User activity favorites RSS title - "[Site Name] | [User Display Name] | Favorites" */ + 'title' => sprintf( __( '%1$s | %2$s | Favorites', 'buddypress' ), bp_get_site_name(), bp_get_displayed_user_fullname() ), + + 'link' => bp_displayed_user_domain() . bp_get_activity_slug() . '/favorites/', + 'description' => sprintf( __( "Activity feed of %s's favorites.", 'buddypress' ), bp_get_displayed_user_fullname() ), + 'activity_args' => 'include=' . $fav_ids + ) ); +} +add_action( 'bp_actions', 'bp_activity_action_favorites_feed' ); diff --git a/wp-content/plugins/buddypress/bp-activity/actions/post.php b/wp-content/plugins/buddypress/bp-activity/actions/post.php new file mode 100644 index 0000000000000000000000000000000000000000..e10ca2ac9ace7e6c7a57288b57ebe07c3899e1e6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/post.php @@ -0,0 +1,97 @@ +<?php +/** + * Activity: Post action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Post user/group activity update. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_post_update() { + // Do not proceed if user is not logged in, not viewing activity, or not posting. + if ( !is_user_logged_in() || !bp_is_activity_component() || !bp_is_current_action( 'post' ) ) + return false; + + // Check the nonce. + check_admin_referer( 'post_update', '_wpnonce_post_update' ); + + /** + * Filters the content provided in the activity input field. + * + * @since 1.2.0 + * + * @param string $value Activity message being posted. + */ + $content = apply_filters( 'bp_activity_post_update_content', $_POST['whats-new'] ); + + if ( ! empty( $_POST['whats-new-post-object'] ) ) { + + /** + * Filters the item type that the activity update should be associated with. + * + * @since 1.2.0 + * + * @param string $value Item type to associate with. + */ + $object = apply_filters( 'bp_activity_post_update_object', $_POST['whats-new-post-object'] ); + } + + if ( ! empty( $_POST['whats-new-post-in'] ) ) { + + /** + * Filters what component the activity is being to. + * + * @since 1.2.0 + * + * @param string $value Chosen component to post activity to. + */ + $item_id = apply_filters( 'bp_activity_post_update_item_id', $_POST['whats-new-post-in'] ); + } + + // No activity content so provide feedback and redirect. + if ( empty( $content ) ) { + bp_core_add_message( __( 'Please enter some content to post.', 'buddypress' ), 'error' ); + bp_core_redirect( wp_get_referer() ); + } + + // No existing item_id. + if ( empty( $item_id ) ) { + $activity_id = bp_activity_post_update( array( 'content' => $content ) ); + + // Post to groups object. + } elseif ( 'groups' == $object && bp_is_active( 'groups' ) ) { + if ( (int) $item_id ) { + $activity_id = groups_post_update( array( 'content' => $content, 'group_id' => $item_id ) ); + } + + } else { + + /** + * Filters activity object for BuddyPress core and plugin authors before posting activity update. + * + * @since 1.2.0 + * + * @param string $object Activity item being associated to. + * @param string $item_id Component ID being posted to. + * @param string $content Activity content being posted. + */ + $activity_id = apply_filters( 'bp_activity_custom_update', $object, $item_id, $content ); + } + + // Provide user feedback. + if ( !empty( $activity_id ) ) + bp_core_add_message( __( 'Update Posted!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error when posting your update. Please try again.', 'buddypress' ), 'error' ); + + // Redirect. + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'bp_activity_action_post_update' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/actions/reply.php b/wp-content/plugins/buddypress/bp-activity/actions/reply.php new file mode 100644 index 0000000000000000000000000000000000000000..103b4ded98d578d4bd287b9f38189c7d2395718d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/reply.php @@ -0,0 +1,60 @@ +<?php +/** + * Activity: Reply action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Post new activity comment. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_post_comment() { + if ( !is_user_logged_in() || !bp_is_activity_component() || !bp_is_current_action( 'reply' ) ) + return false; + + // Check the nonce. + check_admin_referer( 'new_activity_comment', '_wpnonce_new_activity_comment' ); + + /** + * Filters the activity ID a comment will be in reply to. + * + * @since 1.2.0 + * + * @param string $value ID of the activity being replied to. + */ + $activity_id = apply_filters( 'bp_activity_post_comment_activity_id', $_POST['comment_form_id'] ); + + /** + * Filters the comment content for a comment reply. + * + * @since 1.2.0 + * + * @param string $value Comment content being posted. + */ + $content = apply_filters( 'bp_activity_post_comment_content', $_POST['ac_input_' . $activity_id] ); + + if ( empty( $content ) ) { + bp_core_add_message( __( 'Please do not leave the comment area blank.', 'buddypress' ), 'error' ); + bp_core_redirect( wp_get_referer() . '#ac-form-' . $activity_id ); + } + + $comment_id = bp_activity_new_comment( array( + 'content' => $content, + 'activity_id' => $activity_id, + 'parent_id' => false + )); + + if ( !empty( $comment_id ) ) + bp_core_add_message( __( 'Reply Posted!', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error posting that reply. Please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#ac-form-' . $activity_id ); +} +add_action( 'bp_actions', 'bp_activity_action_post_comment' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/actions/spam.php b/wp-content/plugins/buddypress/bp-activity/actions/spam.php new file mode 100644 index 0000000000000000000000000000000000000000..f3f5f3ddce2638dd9987e937e3103617e2d7b082 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/spam.php @@ -0,0 +1,77 @@ +<?php +/** + * Activity: Spam action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Mark specific activity item as spam and redirect to previous page. + * + * @since 1.6.0 + * + * @param int $activity_id Activity id to be deleted. Defaults to 0. + * @return bool False on failure. + */ +function bp_activity_action_spam_activity( $activity_id = 0 ) { + $bp = buddypress(); + + // Not viewing activity, or action is not spam, or Akismet isn't present. + if ( !bp_is_activity_component() || !bp_is_current_action( 'spam' ) || empty( $bp->activity->akismet ) ) + return false; + + if ( empty( $activity_id ) && bp_action_variable( 0 ) ) + $activity_id = (int) bp_action_variable( 0 ); + + // Not viewing a specific activity item. + if ( empty( $activity_id ) ) + return false; + + // Is the current user allowed to spam items? + if ( !bp_activity_user_can_mark_spam() ) + return false; + + // Load up the activity item. + $activity = new BP_Activity_Activity( $activity_id ); + if ( empty( $activity->id ) ) + return false; + + // Check nonce. + check_admin_referer( 'bp_activity_akismet_spam_' . $activity->id ); + + /** + * Fires before the marking activity as spam so plugins can modify things if they want to. + * + * @since 1.6.0 + * + * @param int $activity_id Activity ID to be marked as spam. + * @param object $activity Activity object for the ID to be marked as spam. + */ + do_action( 'bp_activity_before_action_spam_activity', $activity->id, $activity ); + + // Mark as spam. + bp_activity_mark_as_spam( $activity ); + $activity->save(); + + // Tell the user the spamming has been successful. + bp_core_add_message( __( 'The activity item has been marked as spam and is no longer visible.', 'buddypress' ) ); + + /** + * Fires after the marking activity as spam so plugins can act afterwards based on the activity. + * + * @since 1.6.0 + * + * @param int $activity_id Activity ID that was marked as spam. + * @param int $user_id User ID associated with activity. + */ + do_action( 'bp_activity_action_spam_activity', $activity_id, $activity->user_id ); + + // Check for the redirect query arg, otherwise let WP handle things. + if ( !empty( $_GET['redirect_to'] ) ) + bp_core_redirect( esc_url( $_GET['redirect_to'] ) ); + else + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'bp_activity_action_spam_activity' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/actions/unfavorite.php b/wp-content/plugins/buddypress/bp-activity/actions/unfavorite.php new file mode 100644 index 0000000000000000000000000000000000000000..da74fe7e41581a0e1dc13244800ef1703873892e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/actions/unfavorite.php @@ -0,0 +1,31 @@ +<?php +/** + * Activity: Unfavorite action + * + * @package BuddyPress + * @subpackage ActivityActions + * @since 3.0.0 + */ + +/** + * Remove activity from favorites. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_remove_favorite() { + if ( ! is_user_logged_in() || ! bp_is_activity_component() || ! bp_is_current_action( 'unfavorite' ) ) + return false; + + // Check the nonce. + check_admin_referer( 'unmark_favorite' ); + + if ( bp_activity_remove_user_favorite( bp_action_variable( 0 ) ) ) + bp_core_add_message( __( 'Activity removed as favorite.', 'buddypress' ) ); + else + bp_core_add_message( __( 'There was an error removing that activity as a favorite. Please try again.', 'buddypress' ), 'error' ); + + bp_core_redirect( wp_get_referer() . '#activity-' . bp_action_variable( 0 ) ); +} +add_action( 'bp_actions', 'bp_activity_action_remove_favorite' ); \ 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 03a65c61d56eb5da99ea0b655e1c05ff5d669446..ab68de61b578be3fabcfb3dcec2690c90cb1ad6b 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-admin.php @@ -94,7 +94,7 @@ function bp_activity_admin_reply() { // @todo: Check if user is allowed to create new activity items // if ( ! current_user_can( 'bp_new_activity' ) ) - if ( ! current_user_can( 'bp_moderate' ) ) + if ( ! bp_current_user_can( 'bp_moderate' ) ) die( '-1' ); // Add new activity comment. @@ -232,7 +232,7 @@ function bp_activity_admin_load() { 'title' => __( 'Item, Link, Type', 'buddypress' ), 'content' => '<p>' . __( '<strong>Primary Item/Secondary Item</strong> - These identify the object that created the activity. For example, the fields could reference a comment left on a specific site. Some types of activity may only use one, or none, of these fields.', 'buddypress' ) . '</p>' . - '<p>' . __( '<strong>Link</strong> - Used by some types of activity (e.g blog posts and comments, and forum topics and replies) to store a link back to the original content.', 'buddypress' ) . '</p>' . + '<p>' . __( '<strong>Link</strong> - Used by some types of activity (blog posts and comments) to store a link back to the original content.', 'buddypress' ) . '</p>' . '<p>' . __( '<strong>Type</strong> - Each distinct kind of activity has its own type. For example, <code>created_group</code> is used when a group is created and <code>joined_group</code> is used when a user joins a group.', 'buddypress' ) . '</p>' . '<p>' . __( 'For information about when and how BuddyPress uses all of these settings, see the Managing Activity link in the panel to the side.', 'buddypress' ) . '</p>' ) ); @@ -296,12 +296,11 @@ function bp_activity_admin_load() { ); // Add accessible hidden heading and text for Activity screen pagination. - if ( bp_get_major_wp_version() >= 4.4 ) { - get_current_screen()->set_screen_reader_content( array( - /* translators: accessibility text */ - 'heading_pagination' => __( 'Activity list navigation', 'buddypress' ), - ) ); - } + get_current_screen()->set_screen_reader_content( array( + /* translators: accessibility text */ + 'heading_pagination' => __( 'Activity list navigation', 'buddypress' ), + ) ); + } // Enqueue CSS and JavaScript. @@ -800,7 +799,7 @@ function bp_activity_admin_edit_metabox_link( $item ) { _e( 'Link', 'buddypress' ); ?></label> <input type="url" name="bp-activities-link" id="bp-activities-link" value="<?php echo esc_url( $item->primary_link ); ?>" aria-describedby="bp-activities-link-description" /> - <p id="bp-activities-link-description"><?php _e( 'Activity generated by posts and comments, forum topics and replies, and some plugins, uses the link field for a permalink back to the content item.', 'buddypress' ); ?></p> + <p id="bp-activities-link-description"><?php _e( 'Activity generated by posts and comments uses the link field for a permalink back to the content item.', 'buddypress' ); ?></p> <?php } 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 de9c79754d86f16b69e24f4038247362a73ba3be..3c53712c657b4b428503c2302502adc472645ed3 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-embeds.php @@ -19,9 +19,7 @@ defined( 'ABSPATH' ) || exit; * @since 2.6.0 */ function bp_activity_setup_oembed() { - if ( version_compare( $GLOBALS['wp_version'], '4.5', '>=' ) && bp_is_active( 'activity', 'embeds' ) ) { - buddypress()->activity->oembed = new BP_Activity_oEmbed_Extension; - } + buddypress()->activity->oembed = new BP_Activity_oEmbed_Extension; } add_action( 'bp_loaded', 'bp_activity_setup_oembed' ); 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 e11dbda857ec3a240560b9224ab53a2a78d268ea..189ef2599f13e3c002da4db955bf70016860a6b9 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-filters.php @@ -96,8 +96,6 @@ add_filter( 'bp_get_activity_latest_update_excerpt', 'bp_activity_make_nofollow_ add_filter( 'bp_get_activity_feed_item_description', 'bp_activity_make_nofollow_filter' ); add_filter( 'pre_comment_content', 'bp_activity_at_name_filter' ); -add_filter( 'group_forum_topic_text_before_save', 'bp_activity_at_name_filter' ); -add_filter( 'group_forum_post_text_before_save', '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' ); @@ -204,36 +202,6 @@ function bp_activity_check_blacklist_keys( $activity ) { * @return string $content Filtered activity content. */ function bp_activity_filter_kses( $content ) { - global $allowedtags; - - $activity_allowedtags = $allowedtags; - $activity_allowedtags['a']['aria-label'] = array(); - $activity_allowedtags['a']['class'] = array(); - $activity_allowedtags['a']['data-bp-tooltip'] = array(); - $activity_allowedtags['a']['id'] = array(); - $activity_allowedtags['a']['rel'] = array(); - $activity_allowedtags['a']['title'] = array(); - - $activity_allowedtags['b'] = array(); - $activity_allowedtags['code'] = array(); - $activity_allowedtags['i'] = array(); - - $activity_allowedtags['img'] = array(); - $activity_allowedtags['img']['src'] = array(); - $activity_allowedtags['img']['alt'] = array(); - $activity_allowedtags['img']['width'] = array(); - $activity_allowedtags['img']['height'] = array(); - $activity_allowedtags['img']['class'] = array(); - $activity_allowedtags['img']['id'] = array(); - - $activity_allowedtags['span'] = array(); - $activity_allowedtags['span']['class'] = array(); - $activity_allowedtags['span']['data-livestamp'] = array(); - - $activity_allowedtags['ul'] = array(); - $activity_allowedtags['ol'] = array(); - $activity_allowedtags['li'] = array(); - /** * Filters the allowed HTML tags for BuddyPress Activity content. * @@ -241,7 +209,7 @@ function bp_activity_filter_kses( $content ) { * * @param array $value Array of allowed HTML tags and attributes. */ - $activity_allowedtags = apply_filters( 'bp_activity_allowed_tags', $activity_allowedtags ); + $activity_allowedtags = apply_filters( 'bp_activity_allowed_tags', bp_get_allowedtags() ); return wp_kses( $content, $activity_allowedtags ); } 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 062cd52c52d4c07daed2b8a894955e90dd312963..1a8ac1211fcd7f8c62d7524e00a2216b9486b05a 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-functions.php @@ -748,11 +748,14 @@ function bp_activity_post_type_get_tracking_arg( $activity_type, $arg = '' ) { function bp_activity_get_actions() { $bp = buddypress(); - $post_types = bp_activity_get_post_types_tracking_args(); + // Set the activity track global if not set yet. + if ( empty( $bp->activity->track ) ) { + $bp->activity->track = bp_activity_get_post_types_tracking_args(); + } // Create the actions for the post types, if they haven't already been created. - if ( ! empty( $post_types ) ) { - foreach ( $post_types as $post_type ) { + if ( ! empty( $bp->activity->track ) ) { + foreach ( $bp->activity->track as $post_type ) { if ( isset( $bp->activity->actions->{$post_type->component_id}->{$post_type->action_id} ) ) { continue; } @@ -937,11 +940,6 @@ function bp_activity_get_user_favorites( $user_id = 0 ) { */ function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) { - // Favorite activity stream items are for logged in users only. - if ( ! is_user_logged_in() ) { - return false; - } - // Fallback to logged in user if no user_id is passed. if ( empty( $user_id ) ) { $user_id = bp_loggedin_user_id(); @@ -1011,11 +1009,6 @@ function bp_activity_add_user_favorite( $activity_id, $user_id = 0 ) { */ function bp_activity_remove_user_favorite( $activity_id, $user_id = 0 ) { - // Favorite activity stream items are for logged in users only. - if ( ! is_user_logged_in() ) { - return false; - } - // Fallback to logged in user if no user_id is passed. if ( empty( $user_id ) ) { $user_id = bp_loggedin_user_id(); @@ -1260,9 +1253,7 @@ function bp_activity_add_meta( $activity_id, $meta_key, $meta_value, $unique = f * @return bool */ function bp_activity_remove_all_user_data( $user_id = 0 ) { - - // Do not delete user data unless a logged in user says so. - if ( empty( $user_id ) || ! is_user_logged_in() ) { + if ( empty( $user_id ) ) { return false; } @@ -1427,6 +1418,21 @@ function bp_activity_ham_all_user_data( $user_id = 0 ) { } add_action( 'bp_make_ham_user', 'bp_activity_ham_all_user_data' ); +/** + * Allow core components and dependent plugins to register activity actions. + * + * @since 1.2.0 + */ +function bp_register_activity_actions() { + /** + * Fires on bp_init to allow core components and dependent plugins to register activity actions. + * + * @since 1.2.0 + */ + do_action( 'bp_register_activity_actions' ); +} +add_action( 'bp_init', 'bp_register_activity_actions', 8 ); + /** * Register the activity stream actions for updates. * @@ -1715,7 +1721,7 @@ function bp_activity_get( $args = '' ) { * 'user_id' => false, // User ID to filter on. * 'object' => false, // Object to filter on e.g. groups, profile, status, friends. * 'action' => false, // Action to filter on e.g. activity_update, profile_updated. - * 'primary_id' => false, // Object ID to filter on e.g. a group_id or forum_id or blog_id etc. + * 'primary_id' => false, // Object ID to filter on e.g. a group_id or blog_id etc. * 'secondary_id' => false, // Secondary object ID to filter on e.g. a post_id. * ); */ @@ -2629,10 +2635,12 @@ function bp_activity_new_comment( $args = '' ) { * Filters the content of a new comment. * * @since 1.2.0 + * @since 3.0.0 Added $context parameter to disambiguate from bp_get_activity_comment_content(). * - * @param string $r Content for the newly posted comment. + * @param string $r Content for the newly posted comment. + * @param string $context This filter's context ("new"). */ - $comment_content = apply_filters( 'bp_activity_comment_content', $r['content'] ); + $comment_content = apply_filters( 'bp_activity_comment_content', $r['content'], 'new' ); // Insert the activity comment. $comment_id = bp_activity_add( array( @@ -3089,6 +3097,64 @@ function bp_activity_get_permalink( $activity_id, $activity_obj = false ) { return apply_filters_ref_array( 'bp_activity_get_permalink', array( $link, &$activity_obj ) ); } +/** + * Can a user see a particular activity item? + * + * @since 3.0.0 + * + * @param BP_Activity_Activity $activity Activity object. + * @param integer $user_id User ID. + * @return boolean True on success, false on failure. + */ +function bp_activity_user_can_read( $activity, $user_id = 0 ) { + $retval = true; + + // Fallback. + if ( empty( $user_id ) ) { + $user_id = bp_loggedin_user_id(); + } + + // If activity is from a group, do extra cap checks. + if ( bp_is_active( 'groups' ) && buddypress()->groups->id === $activity->component ) { + // Check to see if the user has access to the activity's parent group. + $group = groups_get_group( $activity->item_id ); + if ( $group ) { + // For logged-in user, we can check against the 'user_has_access' prop. + if ( bp_loggedin_user_id() === $user_id ) { + $retval = $group->user_has_access; + + // Manually check status. + } elseif ( 'private' === $group->status || 'hidden' === $group->status ) { + // Only group members that are not banned can view. + if ( ! groups_is_user_member( $user_id, $activity->item_id ) || groups_is_user_banned( $user_id, $activity->item_id ) ) { + $retval = false; + } + } + } + } + + // Spammed items are not visible to the public. + if ( $activity->is_spam ) { + $retval = false; + } + + // Site moderators can view anything. + if ( bp_current_user_can( 'bp_moderate' ) ) { + $retval = true; + } + + /** + * Filters whether the current user has access to an activity item. + * + * @since 3.0.0 + * + * @param bool $retval Return value. + * @param int $user_id Current user ID. + * @param BP_Activity_Activity $activity Activity object. + */ + return apply_filters( 'bp_activity_user_can_read', $retval, $user_id, $activity ); +} + /** * Hide a user's activity. * @@ -3268,7 +3334,7 @@ function bp_activity_create_summary( $content, $activity ) { // Embeds must be subtracted from the paragraph count. if ( ! empty( $media['has']['embeds'] ) ) { $has_embeds = $media['has']['embeds'] > 0; - $para_count -= count( $media['has']['embeds'] ); + $para_count -= $media['has']['embeds']; } $extracted_media = array(); @@ -3849,3 +3915,252 @@ function bp_activity_do_heartbeat() { */ return (bool) apply_filters( 'bp_activity_do_heartbeat', $retval ); } + +/** + * AJAX endpoint for Suggestions API lookups. + * + * @since 2.1.0 + */ +function bp_ajax_get_suggestions() { + if ( ! bp_is_user_active() || empty( $_GET['term'] ) || empty( $_GET['type'] ) ) { + wp_send_json_error( 'missing_parameter' ); + exit; + } + + $args = array( + 'term' => sanitize_text_field( $_GET['term'] ), + 'type' => sanitize_text_field( $_GET['type'] ), + ); + + // Support per-Group suggestions. + if ( ! empty( $_GET['group-id'] ) ) { + $args['group_id'] = absint( $_GET['group-id'] ); + } + + $results = bp_core_get_suggestions( $args ); + + if ( is_wp_error( $results ) ) { + wp_send_json_error( $results->get_error_message() ); + exit; + } + + wp_send_json_success( $results ); +} +add_action( 'wp_ajax_bp_get_suggestions', 'bp_ajax_get_suggestions' ); + +/** + * Detect a change in post type status, and initiate an activity update if necessary. + * + * @since 2.2.0 + * + * @todo Support untrashing better. + * + * @param string $new_status New status for the post. + * @param string $old_status Old status for the post. + * @param object $post Post data. + */ +function bp_activity_catch_transition_post_type_status( $new_status, $old_status, $post ) { + if ( ! post_type_supports( $post->post_type, 'buddypress-activity' ) ) { + return; + } + + // This is an edit. + if ( $new_status === $old_status ) { + // An edit of an existing post should update the existing activity item. + if ( $new_status == 'publish' ) { + $edit = bp_activity_post_type_update( $post ); + + // Post was never recorded into activity stream, so record it now! + if ( null === $edit ) { + bp_activity_post_type_publish( $post->ID, $post ); + } + + // Allow plugins to eventually deal with other post statuses. + } else { + /** + * Fires when editing the post and the new status is not 'publish'. + * + * This is a variable filter that is dependent on the post type + * being untrashed. + * + * @since 2.5.0 + * + * @param WP_Post $post Post data. + * @param string $new_status New status for the post. + * @param string $old_status Old status for the post. + */ + do_action( 'bp_activity_post_type_edit_' . $post->post_type, $post, $new_status, $old_status ); + } + + return; + } + + // Publishing a previously unpublished post. + if ( 'publish' === $new_status ) { + // Untrashing the post type - nothing here yet. + if ( 'trash' == $old_status ) { + + /** + * Fires if untrashing post in a post type. + * + * This is a variable filter that is dependent on the post type + * being untrashed. + * + * @since 2.2.0 + * + * @param WP_Post $post Post data. + */ + do_action( 'bp_activity_post_type_untrash_' . $post->post_type, $post ); + } else { + // Record the post. + bp_activity_post_type_publish( $post->ID, $post ); + } + + // Unpublishing a previously published post. + } elseif ( 'publish' === $old_status ) { + // Some form of pending status - only remove the activity entry. + bp_activity_post_type_unpublish( $post->ID, $post ); + + // For any other cases, allow plugins to eventually deal with it. + } else { + /** + * Fires when the old and the new post status are not 'publish'. + * + * This is a variable filter that is dependent on the post type + * being untrashed. + * + * @since 2.5.0 + * + * @param WP_Post $post Post data. + * @param string $new_status New status for the post. + * @param string $old_status Old status for the post. + */ + do_action( 'bp_activity_post_type_transition_status_' . $post->post_type, $post, $new_status, $old_status ); + } +} +add_action( 'transition_post_status', 'bp_activity_catch_transition_post_type_status', 10, 3 ); + +/** + * When a post type comment status transition occurs, update the relevant activity's status. + * + * @since 2.5.0 + * + * @param string $new_status New comment status. + * @param string $old_status Previous comment status. + * @param WP_Comment $comment Comment data. + */ +function bp_activity_transition_post_type_comment_status( $new_status, $old_status, $comment ) { + $post_type = get_post_type( $comment->comment_post_ID ); + if ( ! $post_type ) { + return; + } + + // Get the post type tracking args. + $activity_post_object = bp_activity_get_post_type_tracking_args( $post_type ); + + // Bail if the activity type does not exist + if ( empty( $activity_post_object->comments_tracking->action_id ) ) { + return false; + + // Set the $activity_comment_object + } else { + $activity_comment_object = $activity_post_object->comments_tracking; + } + + // Init an empty activity ID + $activity_id = 0; + + /** + * Activity currently doesn't have any concept of a trash, or an unapproved/approved state. + * + * If a blog comment transitions to a "delete" or "hold" status, delete the activity item. + * If a blog comment transitions to trashed, or spammed, mark the activity as spam. + * If a blog comment transitions to approved (and the activity exists), mark the activity as ham. + * If a blog comment transitions to unapproved (and the activity exists), mark the activity as spam. + * Otherwise, record the comment into the activity stream. + */ + + // This clause handles delete/hold. + if ( in_array( $new_status, array( 'delete', 'hold' ) ) ) { + return bp_activity_post_type_remove_comment( $comment->comment_ID, $activity_post_object ); + + // These clauses handle trash, spam, and un-spams. + } elseif ( in_array( $new_status, array( 'trash', 'spam', 'unapproved' ) ) ) { + $action = 'spam_activity'; + } elseif ( 'approved' == $new_status ) { + $action = 'ham_activity'; + } + + // Get the activity + if ( bp_disable_blogforum_comments() ) { + $activity_id = bp_activity_get_activity_id( array( + 'component' => $activity_comment_object->component_id, + 'item_id' => get_current_blog_id(), + 'secondary_item_id' => $comment->comment_ID, + 'type' => $activity_comment_object->action_id, + ) ); + } else { + $activity_id = get_comment_meta( $comment->comment_ID, 'bp_activity_comment_id', true ); + } + + /** + * Leave a chance to plugins to manage activity comments differently. + * + * @since 2.5.0 + * + * @param bool $value True to override BuddyPress management. + * @param string $post_type The post type name. + * @param int $activity_id The post type activity (0 if not found). + * @param string $new_status The new status of the post type comment. + * @param string $old_status The old status of the post type comment. + * @param WP_Comment $comment Comment data. + */ + if ( true === apply_filters( 'bp_activity_pre_transition_post_type_comment_status', false, $post_type, $activity_id, $new_status, $old_status, $comment ) ) { + return false; + } + + // Check activity item exists + if ( empty( $activity_id ) ) { + // If no activity exists, but the comment has been approved, record it into the activity table. + if ( 'approved' == $new_status ) { + return bp_activity_post_type_comment( $comment->comment_ID, true, $activity_post_object ); + } + + return; + } + + // Create an activity object + $activity = new BP_Activity_Activity( $activity_id ); + if ( empty( $activity->component ) ) { + return; + } + + // Spam/ham the activity if it's not already in that state + if ( 'spam_activity' === $action && ! $activity->is_spam ) { + bp_activity_mark_as_spam( $activity ); + } elseif ( 'ham_activity' == $action) { + 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 + $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; + + return $activity_types; + }; + add_filter( 'bp_akismet_get_activity_types', $comment_akismet_history ); + + // Make sure the activity change won't edit the comment if sync is on + remove_action( 'bp_activity_before_save', 'bp_blogs_sync_activity_edit_to_post_comment', 20 ); + + // Save the updated activity + $activity->save(); + + // 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_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/bp-activity-notifications.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php index 93b08239df3554d08d32c59d982a136488ae7d35..e98050496d5a0f4844e4a4eac139eb45f95b9251 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-notifications.php @@ -289,7 +289,7 @@ add_action( 'bp_activity_deleted_activities', 'bp_activity_at_mention_delete_not /** * Add a notification for post comments to the post author or post commenter. * - * Requires "activity stream commenting on blog and forum posts" to be enabled. + * Requires "activity stream commenting on posts and comments" to be enabled. * * @since 2.6.0 * @@ -339,3 +339,75 @@ function bp_activity_add_notification_for_synced_blog_comment( $activity_id, $po } } add_action( 'bp_blogs_comment_sync_activity_comment', 'bp_activity_add_notification_for_synced_blog_comment', 10, 4 ); + +/** + * Add activity notifications settings to the notifications settings page. + * + * @since 1.2.0 + */ +function bp_activity_screen_notification_settings() { + if ( bp_activity_do_mentions() ) { + if ( ! $mention = bp_get_user_meta( bp_displayed_user_id(), 'notification_activity_new_mention', true ) ) { + $mention = 'yes'; + } + } + + if ( ! $reply = bp_get_user_meta( bp_displayed_user_id(), 'notification_activity_new_reply', true ) ) { + $reply = 'yes'; + } + + ?> + + <table class="notification-settings" id="activity-notification-settings"> + <thead> + <tr> + <th class="icon"> </th> + <th class="title"><?php _e( 'Activity', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <?php if ( bp_activity_do_mentions() ) : ?> + <tr id="activity-notification-settings-mentions"> + <td> </td> + <td><?php printf( __( 'A member mentions you in an update using "@%s"', 'buddypress' ), bp_core_get_username( bp_displayed_user_id() ) ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_activity_new_mention]" id="notification-activity-new-mention-yes" value="yes" <?php checked( $mention, 'yes', true ) ?>/><label for="notification-activity-new-mention-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_activity_new_mention]" id="notification-activity-new-mention-no" value="no" <?php checked( $mention, 'no', true ) ?>/><label for="notification-activity-new-mention-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <?php endif; ?> + + <tr id="activity-notification-settings-replies"> + <td> </td> + <td><?php _e( "A member replies to an update or comment you've posted", 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_activity_new_reply]" id="notification-activity-new-reply-yes" value="yes" <?php checked( $reply, 'yes', true ) ?>/><label for="notification-activity-new-reply-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_activity_new_reply]" id="notification-activity-new-reply-no" value="no" <?php checked( $reply, 'no', true ) ?>/><label for="notification-activity-new-reply-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + + <?php + + /** + * Fires inside the closing </tbody> tag for activity screen notification settings. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_screen_notification_settings' ) ?> + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'bp_activity_screen_notification_settings', 1 ); diff --git a/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php b/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php index 90c08692ccdbf5e9e340f9e9b949d66294995f1b..be1e48b401d068072967d8a4ab2e9b3f04dc9206 100644 --- a/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php +++ b/wp-content/plugins/buddypress/bp-activity/bp-activity-template.php @@ -266,8 +266,8 @@ function bp_has_activities( $args = '' ) { // Filtering 'user_id' => $user_id, // user_id to filter on. 'object' => $object, // Object to filter on e.g. groups, profile, status, friends. - 'action' => false, // Action to filter on e.g. activity_update, new_forum_post, profile_updated. - 'primary_id' => $primary_id, // Object ID to filter on e.g. a group_id or forum_id or blog_id etc. + 'action' => false, // Action to filter on e.g. activity_update, profile_updated. + 'primary_id' => $primary_id, // Object ID to filter on e.g. a group_id or blog_id etc. 'secondary_id' => false, // Secondary object ID to filter on e.g. a post_id. 'offset' => false, // Return only items >= this ID. 'since' => false, // Return only items recorded since this Y-m-d H:i:s date. @@ -2136,10 +2136,12 @@ function bp_activity_comment_content() { * Filters the content of the current activity comment. * * @since 1.2.0 + * @since 3.0.0 Added $context parameter to disambiguate from bp_get_activity_comment_content(). * * @param string $content The content of the current activity comment. + * @param string $context This filter's context ("get"). */ - return apply_filters( 'bp_activity_comment_content', $content ); + return apply_filters( 'bp_activity_comment_content', $content, 'get' ); } /** @@ -2944,7 +2946,7 @@ function bp_activity_can_comment_reply( $comment = false ) { * @since 1.5.0 * * @param bool $can_comment Status on if activity reply can be commented on. - * @param string $comment Current comment being checked on. + * @param object $comment Current comment object being checked on. */ return (bool) apply_filters( 'bp_activity_can_comment_reply', $can_comment, $comment ); } diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-activity.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-activity.php index bc7f47af11ae2e6e10beb73f34c74a9c7e077c1d..f3335e77c4a3306e0ceb30bb36dc5e8a0ea655c2 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-activity.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-activity.php @@ -456,6 +456,21 @@ class BP_Activity_Activity { if ( $r['search_terms'] ) { $search_terms_like = '%' . bp_esc_like( $r['search_terms'] ) . '%'; $where_conditions['search_sql'] = $wpdb->prepare( 'a.content LIKE %s', $search_terms_like ); + + /** + * Filters whether or not to include users for search parameters. + * + * @since 3.0.0 + * + * @param bool $value Whether or not to include user search. Default false. + */ + if ( apply_filters( 'bp_activity_get_include_user_search', false ) ) { + $user_search = get_user_by( 'slug', $r['search_terms'] ); + if ( false !== $user_search ) { + $user_id = $user_search->ID; + $where_conditions['search_sql'] .= $wpdb->prepare( ' OR a.user_id = %d', $user_id ); + } + } } // Sorting. @@ -598,12 +613,12 @@ class BP_Activity_Activity { $from_sql = " FROM {$bp->activity->table_name} a LEFT JOIN {$wpdb->users} u ON a.user_id = u.ID"; if ( ! empty( $page ) && ! empty( $per_page ) ) { - $pag_sql = $wpdb->prepare( "LIMIT %d, %d", absint( ( $page - 1 ) * $per_page ), $per_page ); + $pag_sql = $wpdb->prepare( "LIMIT %d, %d", absint( ( $page - 1 ) * $per_page ), $per_page ); /** This filter is documented in bp-activity/bp-activity-classes.php */ - $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort} {$pag_sql}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) ); + $activity_sql = apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort} {$pag_sql}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ); } else { - $pag_sql = ''; + $pag_sql = ''; /** * Filters the legacy MySQL query statement so plugins can alter before results are fetched. @@ -616,9 +631,21 @@ class BP_Activity_Activity { * @param string $where_sql Final WHERE MySQL statement portion for legacy query. * @param string $sort Final sort direction for legacy query. */ - $activities = $wpdb->get_results( apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ) ); + $activity_sql = apply_filters( 'bp_activity_get_user_join_filter', "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}", $select_sql, $from_sql, $where_sql, $sort, $pag_sql ); } + /* + * Queries that include 'last_activity' are cached separately, + * since they are generally much less long-lived. + */ + if ( preg_match( '/a\.type NOT IN \([^\)]*\'last_activity\'[^\)]*\)/', $activity_sql ) ) { + $cache_group = 'bp_activity'; + } else { + $cache_group = 'bp_activity_with_last_activity'; + } + + $activities = $wpdb->get_results( $activity_sql ); + // Integer casting for legacy activity query. foreach ( (array) $activities as $i => $ac ) { $activities[ $i ]->id = (int) $ac->id; 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 66005ebde633d468fadae6aec983a6760d0c4364..e72d8460d2ff7c686a6604fd24451378fb07f22c 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 @@ -51,8 +51,6 @@ class BP_Activity_Component extends BP_Component { // Files to include. $includes = array( 'cssjs', - 'actions', - 'screens', 'filters', 'adminbar', 'template', @@ -73,8 +71,8 @@ class BP_Activity_Component extends BP_Component { $includes[] = 'akismet'; } - // Embeds - only applicable for WP 4.5+ - if ( version_compare( $GLOBALS['wp_version'], '4.5', '>=' ) && bp_is_active( $this->id, 'embeds' ) ) { + // Embeds + if ( bp_is_active( $this->id, 'embeds' ) ) { $includes[] = 'embeds'; } @@ -85,6 +83,62 @@ class BP_Activity_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + /* + * Load activity action and screen code if PHPUnit isn't running. + * + * For PHPUnit, we load these files in tests/phpunit/includes/install.php. + */ + if ( bp_is_current_component( 'activity' ) ) { + // Authenticated actions - Only fires when JS is disabled. + if ( is_user_logged_in() && + in_array( bp_current_action(), array( 'delete', 'spam', 'post', 'reply', 'favorite', 'unfavorite' ), true ) + ) { + require $this->path . 'bp-activity/actions/' . bp_current_action() . '.php'; + } + + // RSS feeds. + if ( bp_is_current_action( 'feed' ) || bp_is_action_variable( 'feed', 0 ) ) { + require $this->path . 'bp-activity/actions/feeds.php'; + } + + // Screens - Directory. + if ( bp_is_activity_directory() ) { + require $this->path . 'bp-activity/screens/directory.php'; + } + + // Screens - User main nav. + if ( bp_is_user() ) { + require $this->path . 'bp-activity/screens/just-me.php'; + } + + // Screens - User secondary nav. + if ( bp_is_user() && in_array( bp_current_action(), array( 'friends', 'groups', 'favorites', 'mentions' ), true ) ) { + require $this->path . 'bp-activity/screens/' . bp_current_action() . '.php'; + } + + // Screens - Single permalink. + if ( bp_is_current_action( 'p' ) || is_numeric( bp_current_action() ) ) { + require $this->path . 'bp-activity/screens/permalink.php'; + } + + // Theme compatibility. + new BP_Activity_Theme_Compat(); + } + } + /** * Set up component global variables. * 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 cce112a0aa0c6e8855243404f4ea1205bf5f837c..c581905e737af5679c0df52cf50607482d73d403 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 @@ -47,7 +47,7 @@ class BP_Activity_List_Table extends WP_List_Table { protected $activity_user_id = array(); /** - * If users can comment on blog & forum activity items. + * If users can comment on post and comment activity items. * * @link https://buddypress.trac.wordpress.org/ticket/6277 * @@ -63,7 +63,7 @@ class BP_Activity_List_Table extends WP_List_Table { */ public function __construct() { - // See if activity commenting is enabled for blog / forum activity items. + // See if activity commenting is enabled for post/comment activity items. $this->disable_blogforum_comments = bp_disable_blogforum_comments(); // Define singular and plural labels, as well as whether we support AJAX. 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 3f7559af77254b28374cdd351eadf7f1efc2b848..4e48264cefa77f7f5535923c9cabdb55e6a19f34 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 @@ -46,7 +46,7 @@ class BP_Activity_Query extends BP_Recursive_Query { * @var array */ public $db_columns = array( - 'id', 'user_id', 'component', 'type', 'action', 'content', + 'id', 'user_id', 'component', 'type', 'action', 'content', 'primary_link', 'item_id', 'secondary_item_id', 'hide_sitewide', 'is_spam', ); diff --git a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-template.php b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-template.php index f782e7b979fe003f6814e69a4e415d32138d615b..cb7f52c430aff2c50826368bba43b8b724bb2caa 100644 --- a/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-template.php +++ b/wp-content/plugins/buddypress/bp-activity/classes/class-bp-activity-template.php @@ -191,7 +191,7 @@ class BP_Activity_Template { $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $r['page'] ); $this->pag_num = bp_sanitize_pagination_arg( 'num', $r['per_page'] ); - // Check if blog/forum replies are disabled. + // Check if post/comment replies are disabled. $this->disable_blogforum_replies = (bool) bp_core_get_root_option( 'bp-disable-blogforum-comments' ); // Get an array of the logged in user's favorite activities. 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 6b54fbb4a9a731152d4b48e59f14e9179ebc955f..68fb30be4b6c8d26ff46c0a270ed9450912913fb 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 @@ -411,6 +411,19 @@ class BP_Akismet { // Mark as spam. bp_activity_mark_as_spam( $activity, 'by_akismet' ); + + if ( + Akismet::allow_discard() && + ! empty( $activity_data['akismet_pro_tip'] ) && + 'discard' === $activity_data['akismet_pro_tip'] + ) { + // If this is so spammy it's not worth your time, let's just delete it. + if ( $activity->type === 'activity_comment' ) { + bp_activity_delete_comment( $activity->item_id, $activity->id ); + } else { + bp_activity_delete( array( 'id' => $activity->id ) ); + } + } } // Update activity meta after a spam check. @@ -546,11 +559,11 @@ class BP_Akismet { $response = Akismet::http_post( $query_string, $path ); remove_filter( 'akismet_ua', array( $this, 'buddypress_ua' ) ); - // Get the response. - if ( ! empty( $response[1] ) && ! is_wp_error( $response[1] ) ) - $activity_data['bp_as_result'] = $response[1]; - else - $activity_data['bp_as_result'] = false; + // Save response data. + $activity_data['bp_as_result'] = $response[1]; + if ( isset( $response[0]['x-akismet-pro-tip'] ) ) { + $activity_data['akismet_pro_tip'] = $response[0]['x-akismet-pro-tip']; + } // Perform a daily tidy up. if ( ! wp_next_scheduled( 'bp_activity_akismet_delete_old_metadata' ) ) diff --git a/wp-content/plugins/buddypress/bp-activity/js/mentions.js b/wp-content/plugins/buddypress/bp-activity/js/mentions.js index af88fc5eb9abd97f2f6f8ee6c91436b606f80ad2..2d0afa3ef404f97decf0037724e17006645e3494 100644 --- a/wp-content/plugins/buddypress/bp-activity/js/mentions.js +++ b/wp-content/plugins/buddypress/bp-activity/js/mentions.js @@ -28,12 +28,12 @@ window.bp = window.bp || {}; * Default options for at.js; see https://github.com/ichord/At.js/. */ var suggestionsDefaults = { - delay: 200, - hide_without_suffix: true, - insert_tpl: '</>${atwho-data-value}</>', // For contentEditable, the fake tags make jQuery insert a textNode. - limit: 10, - start_with_space: false, - suffix: '', + delay: 200, + hideWithoutSuffix: true, + insertTpl: '@${ID}', + limit: 10, + startWithSpace: false, + suffix: '', callbacks: { /** @@ -160,8 +160,9 @@ window.bp = window.bp || {}; * @param {string} query Partial @mention to search for. * @param {function} render_view Render page callback function. * @since 2.1.0 + * @since 3.0.0. Renamed from "remote_filter" for at.js v1.5.4 support. */ - remote_filter: function( query, render_view ) { + remoteFilter: function( query, render_view ) { var self = $( this ), params = {}; @@ -230,8 +231,8 @@ window.bp = window.bp || {}; ), at: '@', - search_key: 'search', - tpl: '<li data-value="@${ID}"><img src="${image}" /><span class="username">@${ID}</span><small>${name}</small></li>' + searchKey: 'search', + displayTpl: '<li data-value="@${ID}"><img src="${image}" /><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 ca58cf0fc8ac8462e7221a900f22f8c28f7da70a..54ecc6d5059b96fe2590efbcdc36ae160ddb6c16 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,hide_without_suffix:!0,insert_tpl:"</>${atwho-data-value}</>",limit:10,start_with_space:!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:{remote_filter: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:"@",search_key:"search",tpl:'<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}" /><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-activity/screens/directory.php b/wp-content/plugins/buddypress/bp-activity/screens/directory.php new file mode 100644 index 0000000000000000000000000000000000000000..edf3b609d91da23918a8e714649b7246bc811faa --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/directory.php @@ -0,0 +1,37 @@ +<?php +/** + * Activity: Directory screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the Activity directory. + * + * @since 1.5.0 + * + */ +function bp_activity_screen_index() { + if ( bp_is_activity_directory() ) { + bp_update_is_directory( true, 'activity' ); + + /** + * Fires right before the loading of the Activity directory screen template file. + * + * @since 1.5.0 + */ + do_action( 'bp_activity_screen_index' ); + + /** + * Filters the template to load for the Activity directory screen. + * + * @since 1.5.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_screen_index', 'activity/index' ) ); + } +} +add_action( 'bp_screens', 'bp_activity_screen_index' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/favorites.php b/wp-content/plugins/buddypress/bp-activity/screens/favorites.php new file mode 100644 index 0000000000000000000000000000000000000000..61ebbe11dfa1ac2dc0a03d75fdb6af6625cfb160 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/favorites.php @@ -0,0 +1,33 @@ +<?php +/** + * Activity: User's "Activity > Favorites" screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the 'Favorites' activity page. + * + * @since 1.2.0 + */ +function bp_activity_screen_favorites() { + bp_update_is_item_admin( bp_current_user_can( 'bp_moderate' ), 'activity' ); + + /** + * Fires right before the loading of the "Favorites" screen template file. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_screen_favorites' ); + + /** + * Filters the template to load for the "Favorites" screen. + * + * @since 1.2.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_template_favorite_activity', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/friends.php b/wp-content/plugins/buddypress/bp-activity/screens/friends.php new file mode 100644 index 0000000000000000000000000000000000000000..303a3d57a55f0c3de0eeb064efa44129ed4e1784 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/friends.php @@ -0,0 +1,36 @@ +<?php +/** + * Activity: User's "Activity > Friends" screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the 'My Friends' activity page. + * + * @since 1.0.0 + */ +function bp_activity_screen_friends() { + if ( !bp_is_active( 'friends' ) ) + return false; + + bp_update_is_item_admin( bp_current_user_can( 'bp_moderate' ), 'activity' ); + + /** + * Fires right before the loading of the "My Friends" screen template file. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_screen_friends' ); + + /** + * Filters the template to load for the "My Friends" screen. + * + * @since 1.0.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_template_friends_activity', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/groups.php b/wp-content/plugins/buddypress/bp-activity/screens/groups.php new file mode 100644 index 0000000000000000000000000000000000000000..552224bbc26728a4f809871d839c55f8313e6557 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/groups.php @@ -0,0 +1,36 @@ +<?php +/** + * Activity: User's "Activity > Groups" screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the 'My Groups' activity page. + * + * @since 1.2.0 + */ +function bp_activity_screen_groups() { + if ( !bp_is_active( 'groups' ) ) + return false; + + bp_update_is_item_admin( bp_current_user_can( 'bp_moderate' ), 'activity' ); + + /** + * Fires right before the loading of the "My Groups" screen template file. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_screen_groups' ); + + /** + * Filters the template to load for the "My Groups" screen. + * + * @since 1.2.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_template_groups_activity', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/just-me.php b/wp-content/plugins/buddypress/bp-activity/screens/just-me.php new file mode 100644 index 0000000000000000000000000000000000000000..c31fffcdd80b0802996b84e7dc7595d04f0232df --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/just-me.php @@ -0,0 +1,32 @@ +<?php +/** + * Activity: User's "Activity" screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the 'My Activity' page. + * + * @since 1.0.0 + */ +function bp_activity_screen_my_activity() { + + /** + * Fires right before the loading of the "My Activity" screen template file. + * + * @since 1.0.0 + */ + do_action( 'bp_activity_screen_my_activity' ); + + /** + * Filters the template to load for the "My Activity" screen. + * + * @since 1.0.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_template_my_activity', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/mentions.php b/wp-content/plugins/buddypress/bp-activity/screens/mentions.php new file mode 100644 index 0000000000000000000000000000000000000000..9d2fd8af546fb39b2ce3e20fc5bd582bb88e45fc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/mentions.php @@ -0,0 +1,45 @@ +<?php +/** + * Activity: User's "Activity > Mentions" screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Load the 'Mentions' activity page. + * + * @since 1.2.0 + */ +function bp_activity_screen_mentions() { + bp_update_is_item_admin( bp_current_user_can( 'bp_moderate' ), 'activity' ); + + /** + * Fires right before the loading of the "Mentions" screen template file. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_screen_mentions' ); + + /** + * Filters the template to load for the "Mentions" screen. + * + * @since 1.2.0 + * + * @param string $template Path to the activity template to load. + */ + bp_core_load_template( apply_filters( 'bp_activity_template_mention_activity', 'members/single/home' ) ); +} + +/** + * Reset the logged-in user's new mentions data when he visits his mentions screen. + * + * @since 1.5.0 + * + */ +function bp_activity_reset_my_new_mentions() { + if ( bp_is_my_profile() ) + bp_activity_clear_new_mentions( bp_loggedin_user_id() ); +} +add_action( 'bp_activity_screen_mentions', 'bp_activity_reset_my_new_mentions' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-activity/screens/permalink.php b/wp-content/plugins/buddypress/bp-activity/screens/permalink.php new file mode 100644 index 0000000000000000000000000000000000000000..bc7806efc34c180088d7de7a872700a3692a887b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-activity/screens/permalink.php @@ -0,0 +1,166 @@ +<?php +/** + * Activity: Single permalink screen handler + * + * @package BuddyPress + * @subpackage ActivityScreens + * @since 3.0.0 + */ + +/** + * Catch and route requests for single activity item permalinks. + * + * @since 1.2.0 + * + * @return bool False on failure. + */ +function bp_activity_action_permalink_router() { + // Not viewing activity. + if ( ! bp_is_activity_component() || ! bp_is_current_action( 'p' ) ) + return false; + + // No activity to display. + if ( ! bp_action_variable( 0 ) || ! is_numeric( bp_action_variable( 0 ) ) ) + return false; + + // Get the activity details. + $activity = bp_activity_get_specific( array( 'activity_ids' => bp_action_variable( 0 ), 'show_hidden' => true ) ); + + // 404 if activity does not exist + if ( empty( $activity['activities'][0] ) ) { + bp_do_404(); + return; + } else { + $activity = $activity['activities'][0]; + } + + // Do not redirect at default. + $redirect = false; + + // Redirect based on the type of activity. + if ( bp_is_active( 'groups' ) && $activity->component == buddypress()->groups->id ) { + + // Activity is a user update. + if ( ! empty( $activity->user_id ) ) { + $redirect = bp_core_get_user_domain( $activity->user_id, $activity->user_nicename, $activity->user_login ) . bp_get_activity_slug() . '/' . $activity->id . '/'; + + // Activity is something else. + } else { + + // Set redirect to group activity stream. + if ( $group = groups_get_group( $activity->item_id ) ) { + $redirect = bp_get_group_permalink( $group ) . bp_get_activity_slug() . '/' . $activity->id . '/'; + } + } + + // Set redirect to users' activity stream. + } elseif ( ! empty( $activity->user_id ) ) { + $redirect = bp_core_get_user_domain( $activity->user_id, $activity->user_nicename, $activity->user_login ) . bp_get_activity_slug() . '/' . $activity->id . '/'; + } + + // If set, add the original query string back onto the redirect URL. + if ( ! empty( $_SERVER['QUERY_STRING'] ) ) { + $query_frags = array(); + wp_parse_str( $_SERVER['QUERY_STRING'], $query_frags ); + $redirect = add_query_arg( urlencode_deep( $query_frags ), $redirect ); + } + + /** + * Filter the intended redirect url before the redirect occurs for the single activity item. + * + * @since 1.2.2 + * + * @param array $value Array with url to redirect to and activity related to the redirect. + */ + if ( ! $redirect = apply_filters_ref_array( 'bp_activity_permalink_redirect_url', array( $redirect, &$activity ) ) ) { + bp_core_redirect( bp_get_root_domain() ); + } + + // Redirect to the actual activity permalink page. + bp_core_redirect( $redirect ); +} +add_action( 'bp_actions', 'bp_activity_action_permalink_router' ); + +/** + * Load the page for a single activity item. + * + * @since 1.2.0 + * + * @return bool|string Boolean on false or the template for a single activity item on success. + */ +function bp_activity_screen_single_activity_permalink() { + // No displayed user or not viewing activity component. + if ( ! bp_is_activity_component() ) { + return false; + } + + $action = bp_current_action(); + if ( ! $action || ! is_numeric( $action ) ) { + return false; + } + + // Get the activity details. + $activity = bp_activity_get_specific( array( + 'activity_ids' => $action, + 'show_hidden' => true, + 'spam' => 'ham_only', + ) ); + + // 404 if activity does not exist + if ( empty( $activity['activities'][0] ) || bp_action_variables() ) { + bp_do_404(); + return; + + } else { + $activity = $activity['activities'][0]; + } + + /** + * Check user access to the activity item. + * + * @since 3.0.0 + */ + $has_access = bp_activity_user_can_read( $activity ); + + // If activity author does not match displayed user, block access. + // More info:https://buddypress.trac.wordpress.org/ticket/7048#comment:28 + if ( true === $has_access && bp_displayed_user_id() !== $activity->user_id ) { + $has_access = false; + } + + /** + * Fires before the loading of a single activity template file. + * + * @since 1.2.0 + * + * @param BP_Activity_Activity $activity Object representing the current activity item being displayed. + * @param bool $has_access Whether or not the current user has access to view activity. + */ + do_action( 'bp_activity_screen_single_activity_permalink', $activity, $has_access ); + + // Access is specifically disallowed. + if ( false === $has_access ) { + // If not logged in, prompt for login. + if ( ! is_user_logged_in() ) { + bp_core_no_access(); + + // Redirect away. + } else { + bp_core_add_message( __( 'You do not have access to this activity.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_loggedin_user_domain() ); + } + } + + /** + * Filters the template to load for a single activity screen. + * + * @since 1.0.0 + * + * @param string $template Path to the activity template to load. + */ + $template = apply_filters( 'bp_activity_template_profile_activity_permalink', 'members/single/activity/permalink' ); + + // Load the template. + bp_core_load_template( $template ); +} +add_action( 'bp_screens', 'bp_activity_screen_single_activity_permalink' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/actions/random.php b/wp-content/plugins/buddypress/bp-blogs/actions/random.php new file mode 100644 index 0000000000000000000000000000000000000000..c3e3f7249d6885584717e01a23170699fa6d241a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/actions/random.php @@ -0,0 +1,31 @@ +<?php +/** + * Blogs: Random blog action handler + * + * @package BuddyPress + * @subpackage BlogsActions + * @since 3.0.0 + */ + +/** + * Redirect to a random blog in the multisite network. + * + * @since 1.0.0 + */ +function bp_blogs_redirect_to_random_blog() { + + // Bail if not looking for a random blog. + if ( ! bp_is_blogs_component() || ! isset( $_GET['random-blog'] ) ) + return; + + // Multisite is active so find a random blog. + if ( is_multisite() ) { + $blog = bp_blogs_get_random_blogs( 1, 1 ); + bp_core_redirect( get_home_url( $blog['blogs'][0]->blog_id ) ); + + // No multisite and still called, always redirect to root. + } else { + bp_core_redirect( bp_core_get_root_domain() ); + } +} +add_action( 'bp_actions', 'bp_blogs_redirect_to_random_blog' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php index f74bf05046004864f4d79e30d6da18d91128f826..13b0e2b1aaf9a73b2c5c44f56c59d92703da69d3 100644 --- a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-activity.php @@ -1148,6 +1148,7 @@ function bp_blogs_setup_activity_loop_globals( $activity ) { $allow_comments = bp_blogs_comments_open( $activity ); $thread_depth = bp_blogs_get_blogmeta( $activity->item_id, 'thread_comments_depth' ); + $moderation = bp_blogs_get_blogmeta( $activity->item_id, 'comment_moderation' ); // Initialize a local object so we won't have to query this again in the // comment loop. @@ -1157,16 +1158,23 @@ function bp_blogs_setup_activity_loop_globals( $activity ) { if ( empty( buddypress()->blogs->thread_depth ) ) { buddypress()->blogs->thread_depth = array(); } + if ( empty( buddypress()->blogs->comment_moderation ) ) { + buddypress()->blogs->comment_moderation = array(); + } - // Cache comment settings in the buddypress() singleton to reference later in - // the activity comment loop - // @see bp_blogs_disable_activity_replies() - // - // thread_depth is keyed by activity ID instead of blog ID because when we're - // in a comment loop, we don't have access to the blog ID... - // should probably object cache these values instead... - buddypress()->blogs->allow_comments[ $activity->id ] = $allow_comments; - buddypress()->blogs->thread_depth[ $activity->id ] = $thread_depth; + /* + * Cache comment settings in the buddypress() singleton for later reference. + * + * See bp_blogs_disable_activity_commenting() / bp_blogs_can_comment_reply(). + * + * thread_depth is keyed by activity ID instead of blog ID because when we're + * in an actvity comment loop, we don't have access to the blog ID... + * + * Should probably object cache these values instead... + */ + buddypress()->blogs->allow_comments[ $activity->id ] = $allow_comments; + buddypress()->blogs->thread_depth[ $activity->id ] = $thread_depth; + buddypress()->blogs->comment_moderation[ $activity->id ] = $moderation; } /** @@ -1231,6 +1239,11 @@ function bp_blogs_disable_activity_commenting( $retval ) { if ( empty( buddypress()->blogs->allow_comments[ bp_get_activity_id() ] ) ) { $retval = false; } + + // If comments need moderation, disable activity commenting. + if ( ! empty( buddypress()->blogs->comment_moderation[ bp_get_activity_id() ] ) ) { + $retval = false; + } // The activity type does not support comments or replies } else { $retval = false; @@ -1314,6 +1327,11 @@ function bp_blogs_can_comment_reply( $retval, $comment ) { } } + // If comments need moderation, disable activity commenting. + if ( ! empty( buddypress()->blogs->comment_moderation[$comment->item_id] ) ) { + $retval = false; + } + return $retval; } add_filter( 'bp_activity_can_comment_reply', 'bp_blogs_can_comment_reply', 10, 2 ); 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 5c20b1380b1e94a45b611f756ca882e3f19eb814..ca569b9ab4d0ddfc135198c5e386a836221964d6 100644 --- a/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php +++ b/wp-content/plugins/buddypress/bp-blogs/bp-blogs-functions.php @@ -100,7 +100,7 @@ function bp_blogs_record_existing_blogs( $args = array() ) { // Query for all sites in network. $r = bp_parse_args( $args, array( - 'offset' => false === bp_get_option( '_bp_record_blogs_offset' ) ? 0 : bp_get_option( '_bp_record_blogs_offset' ), + 'offset' => (int) bp_get_option( '_bp_record_blogs_offset' ), 'limit' => 50, 'blog_ids' => array(), 'site_id' => $wpdb->siteid @@ -362,6 +362,7 @@ function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) { $description = get_blog_option( $blog_id, 'blogdescription' ); $close_old_posts = get_blog_option( $blog_id, 'close_comments_for_old_posts' ); $close_days_old = get_blog_option( $blog_id, 'close_comments_days_old' ); + $moderation = get_blog_option( $blog_id, 'comment_moderation' ); $thread_depth = get_blog_option( $blog_id, 'thread_comments' ); if ( ! empty( $thread_depth ) ) { @@ -384,6 +385,7 @@ function bp_blogs_record_blog( $blog_id, $user_id, $no_activity = false ) { bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'close_comments_for_old_posts', $close_old_posts ); bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'close_comments_days_old', $close_days_old ); bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'thread_comments_depth', $thread_depth ); + bp_blogs_update_blogmeta( $recorded_blog->blog_id, 'comment_moderation', $moderation ); $is_private = !empty( $_POST['blog_public'] ) && (int) $_POST['blog_public'] ? false : true; @@ -525,6 +527,19 @@ function bp_blogs_update_option_thread_comments_depth( $oldvalue, $newvalue ) { } add_action( 'update_option_thread_comments_depth', 'bp_blogs_update_option_thread_comments_depth', 10, 2 ); +/** + * When updating comment moderation, mirror value in blogmeta table. + * + * @since 3.0.0 + * + * @param string $oldvalue Value before save. Passed by do_action() but unused here. + * @param string $newvalue Value to change meta to. + */ +function bp_blogs_update_option_comment_moderation( $oldvalue, $newvalue ) { + bp_blogs_update_blogmeta( $GLOBALS['wpdb']->blogid, 'comment_moderation', $newvalue ); +} +add_action( 'update_option_comment_moderation', 'bp_blogs_update_option_comment_moderation', 10, 2 ); + /** * Syncs site icon URLs to blogmeta. * 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 c1364f4fe356944bdfc2b0663ccd4981e3f200e4..8e5a8386f9103109d63466d76bd8aee08218933f 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 @@ -125,8 +125,6 @@ class BP_Blogs_Component extends BP_Component { // Files to include. $includes = array( 'cache', - 'actions', - 'screens', 'template', 'filters', 'functions', @@ -144,6 +142,46 @@ class BP_Blogs_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Bail if not on a blogs page or not multisite. + if ( ! bp_is_blogs_component() || ! is_multisite() ) { + return; + } + + // Actions. + if ( isset( $_GET['random-blog'] ) ) { + require $this->path . 'bp-blogs/actions/random.php'; + } + + // Screens. + if ( bp_is_user() ) { + require $this->path . 'bp-blogs/screens/my-blogs.php'; + } else { + if ( bp_is_blogs_directory() ) { + require $this->path . 'bp-blogs/screens/directory.php'; + } + + if ( is_user_logged_in() && bp_is_current_action( 'create' ) ) { + require $this->path . 'bp-blogs/screens/create.php'; + } + + // Theme compatibility. + new BP_Blogs_Theme_Compat(); + } + } + /** * Set up component navigation for bp-blogs. * diff --git a/wp-content/plugins/buddypress/bp-blogs/screens/create.php b/wp-content/plugins/buddypress/bp-blogs/screens/create.php new file mode 100644 index 0000000000000000000000000000000000000000..ec3a0081793c4db904cf53cce8df77999b6fe54c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/screens/create.php @@ -0,0 +1,32 @@ +<?php +/** + * Blogs: Create screen handler + * + * @package BuddyPress + * @subpackage BlogsScreens + * @since 3.0.0 + */ + +/** + * Load the "Create a Blog" screen. + * + * @since 1.0.0 + */ +function bp_blogs_screen_create_a_blog() { + + if ( !is_multisite() || !bp_is_blogs_component() || !bp_is_current_action( 'create' ) ) + return false; + + if ( !is_user_logged_in() || !bp_blog_signup_enabled() ) + return false; + + /** + * Fires right before the loading of the Create A Blog screen template file. + * + * @since 1.0.0 + */ + do_action( 'bp_blogs_screen_create_a_blog' ); + + bp_core_load_template( apply_filters( 'bp_blogs_template_create_a_blog', 'blogs/create' ) ); +} +add_action( 'bp_screens', 'bp_blogs_screen_create_a_blog', 3 ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/screens/directory.php b/wp-content/plugins/buddypress/bp-blogs/screens/directory.php new file mode 100644 index 0000000000000000000000000000000000000000..aad24bc73352b5405f264cc49ea1c40a6eaff185 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/screens/directory.php @@ -0,0 +1,29 @@ +<?php +/** + * Blogs: Directory screen handler + * + * @package BuddyPress + * @subpackage BlogsScreens + * @since 3.0.0 + */ + +/** + * Load the top-level Blogs directory. + * + * @since 1.5-beta-1 + */ +function bp_blogs_screen_index() { + if ( bp_is_blogs_directory() ) { + bp_update_is_directory( true, 'blogs' ); + + /** + * Fires right before the loading of the top-level Blogs screen template file. + * + * @since 1.0.0 + */ + do_action( 'bp_blogs_screen_index' ); + + bp_core_load_template( apply_filters( 'bp_blogs_screen_index', 'blogs/index' ) ); + } +} +add_action( 'bp_screens', 'bp_blogs_screen_index', 2 ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-blogs/screens/my-blogs.php b/wp-content/plugins/buddypress/bp-blogs/screens/my-blogs.php new file mode 100644 index 0000000000000000000000000000000000000000..6035e97e0dd5c5e2c5ab2af00a3e63f43f310b0b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-blogs/screens/my-blogs.php @@ -0,0 +1,27 @@ +<?php +/** + * Blogs: User's "Sites" screen handler + * + * @package BuddyPress + * @subpackage BlogsScreens + * @since 3.0.0 + */ + +/** + * Load the "My Blogs" screen. + * + * @since 1.0.0 + */ +function bp_blogs_screen_my_blogs() { + if ( !is_multisite() ) + return false; + + /** + * Fires right before the loading of the My Blogs screen template file. + * + * @since 1.0.0 + */ + do_action( 'bp_blogs_screen_my_blogs' ); + + bp_core_load_template( apply_filters( 'bp_blogs_template_my_blogs', 'members/single/home' ) ); +} \ No newline at end of file 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 80ddfe48b4f8c1499e22fad55779fa06ff972274..11dbfe7222a85dbdc6ea996e5788a7aa233e55a4 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 @@ -81,11 +81,6 @@ function bp_core_admin_components_options() { $required_components = bp_core_admin_get_components( 'required' ); $retired_components = bp_core_admin_get_components( 'retired' ); - // Don't show Forums component in optional components if it's disabled. - if ( ! bp_is_active( 'forums' ) ) { - unset( $optional_components['forums'] ); - } - // Merge optional and required together. $all_components = $optional_components + $required_components; @@ -170,9 +165,10 @@ function bp_core_admin_components_options() { <table class="wp-list-table widefat plugins"> <thead> <tr> - <td id="cb" class="manage-column column-cb check-column"><input id="cb-select-all-1" type="checkbox" disabled><label class="screen-reader-text" for="cb-select-all-1"><?php + <td id="cb" class="manage-column column-cb check-column"><input id="cb-select-all-1" type="checkbox" <?php checked( empty( $inactive_components ) ); ?>> + <label class="screen-reader-text" for="cb-select-all-1"><?php /* translators: accessibility text */ - _e( 'Bulk selection is disabled', 'buddypress' ); + _e( 'Enable or disable all optional components in bulk', 'buddypress' ); ?></label></td> <th scope="col" id="name" class="manage-column column-title column-primary"><?php _e( 'Component', 'buddypress' ); ?></th> <th scope="col" id="description" class="manage-column column-description"><?php _e( 'Description', 'buddypress' ); ?></th> @@ -200,18 +196,14 @@ function bp_core_admin_components_options() { /* translators: accessibility text */ printf( __( 'Select %s', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label> - <?php else : ?> - - <input type="checkbox" id="<?php echo esc_attr( "bp_components[$name]" ); ?>" name="<?php echo esc_attr( "bp_components[$name]" ); ?>" value="1" checked="checked" disabled><label for="<?php echo esc_attr( "bp_components[$name]" ); ?>" class="screen-reader-text"><?php - /* translators: accessibility text */ - printf( __( '%s is a required component', 'buddypress' ), esc_html( $labels['title'] ) ); ?></label> - <?php endif; ?> </th> <td class="plugin-title column-primary"> - <span aria-hidden="true"></span> - <strong><?php echo esc_html( $labels['title'] ); ?></strong> + <label for="<?php echo esc_attr( "bp_components[$name]" ); ?>"> + <span aria-hidden="true"></span> + <strong><?php echo esc_html( $labels['title'] ); ?></strong> + </label> </td> <td class="column-description desc"> @@ -236,9 +228,10 @@ function bp_core_admin_components_options() { <tfoot> <tr> - <td class="manage-column column-cb check-column"><input id="cb-select-all-2" type="checkbox" disabled><label class="screen-reader-text" for="cb-select-all-2"><?php + <td class="manage-column column-cb check-column"><input id="cb-select-all-2" type="checkbox" <?php checked( empty( $inactive_components ) ); ?>> + <label class="screen-reader-text" for="cb-select-all-2"><?php /* translators: accessibility text */ - _e( 'Bulk selection is disabled', 'buddypress' ); + _e( 'Enable or disable all optional components in bulk', 'buddypress' ); ?></label></td> <th class="manage-column column-title column-primary"><?php _e( 'Component', 'buddypress' ); ?></th> <th class="manage-column column-description"><?php _e( 'Description', 'buddypress' ); ?></th> 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 1726f72a5a62b6c24ee0dacb590917bfbf7db4ba..60945374158134f206cfebf0d23a97d4ceea7db8 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 @@ -288,15 +288,6 @@ function bp_core_activation_notice() { } } - // Special case: If the Forums component is orphaned, but the bbPress 1.x installation is - // not correctly set up, don't show a nag. (In these cases, it's probably the case that the - // user is using bbPress 2.x; see https://buddypress.trac.wordpress.org/ticket/4292. - if ( isset( $bp->forums->name ) && in_array( $bp->forums->name, $orphaned_components ) && !bp_forums_is_installed_correctly() ) { - $forum_key = array_search( $bp->forums->name, $orphaned_components ); - unset( $orphaned_components[$forum_key] ); - $orphaned_components = array_values( $orphaned_components ); - } - if ( !empty( $orphaned_components ) ) { $admin_url = bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) ); $notice = sprintf( @@ -366,14 +357,14 @@ function bp_do_activation_redirect() { return; } - $query_args = array( 'page' => 'bp-about' ); + $query_args = array(); if ( get_transient( '_bp_is_new_install' ) ) { $query_args['is_new_install'] = '1'; delete_transient( '_bp_is_new_install' ); } - // Redirect to BuddyPress about page. - wp_safe_redirect( add_query_arg( $query_args, bp_get_admin_url( 'index.php' ) ) ); + // Redirect to dashboard and trigger the Hello screen. + wp_safe_redirect( add_query_arg( $query_args, bp_get_admin_url( '?hello=buddypress' ) ) ); } /** UI/Styling ****************************************************************/ @@ -430,29 +421,20 @@ function bp_core_get_admin_tabs( $active_tab = '' ) { 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-components' ), 'admin.php' ) ), 'name' => __( 'Components', 'buddypress' ) ), + '2' => array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-settings' ), 'admin.php' ) ), + 'name' => __( 'Options', 'buddypress' ) + ), '1' => array( 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), 'admin.php' ) ), 'name' => __( 'Pages', 'buddypress' ) ), - '2' => array( - 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-settings' ), 'admin.php' ) ), - 'name' => __( 'Options', 'buddypress' ) + '3' => array( + 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bp-credits' ), 'admin.php' ) ), + 'name' => __( 'Credits', 'buddypress' ) ), ); - // If forums component is active, add additional tab. - if ( bp_is_active( 'forums' ) && class_exists( 'BP_Forums_Component' ) ) { - - // Enqueue thickbox. - wp_enqueue_script( 'thickbox' ); - wp_enqueue_style( 'thickbox' ); - - $tabs['3'] = array( - 'href' => bp_get_admin_url( add_query_arg( array( 'page' => 'bb-forums-setup' ), 'admin.php' ) ), - 'name' => __( 'Forums', 'buddypress' ) - ); - } - /** * Filters the tab data used in our wp-admin screens. * @@ -863,7 +845,7 @@ function bp_admin_email_maybe_add_translation_notice() { bp_core_add_admin_notice( sprintf( - __( 'Are your emails in the wrong language? Go to <a href="%s">BuddyPress Tools and run the "reinstall emails"</a> tool.', 'buddypress' ), + __( 'Are these emails not written in your site\'s language? Go to <a href="%s">BuddyPress Tools and try the "reinstall emails"</a> tool.', 'buddypress' ), esc_url( add_query_arg( 'page', 'bp-tools', bp_get_admin_url( $admin_page ) ) ) ), 'updated' diff --git a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-schema.php b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-schema.php index 919015729489f2e0432e1e4ced123268408a417f..02a410ba9e7ff9f93e7ac8b16251a67801499077 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-schema.php +++ b/wp-content/plugins/buddypress/bp-core/admin/bp-core-admin-schema.php @@ -506,6 +506,12 @@ function bp_core_install_emails() { // Add these emails to the database. foreach ( $emails as $id => $email ) { + + // Some emails are multisite-only. + if ( ! is_multisite() && isset( $email['args'] ) && ! empty( $email['args']['multisite'] ) ) { + continue; + } + $post_id = wp_insert_post( bp_parse_args( $email, $defaults, 'install_email_' . $id ) ); if ( ! $post_id ) { continue; 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 04176078b5ada949217f8809975c1923d13d1b8f..2bab95e9e55664498b61766fd3c8f784b1cfb4d0 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 @@ -70,8 +70,8 @@ function bp_admin_setting_callback_theme_package_id() { } if ( $options ) : ?> - <select name="_bp_theme_package_id" id="_bp_theme_package_id"><?php echo $options; ?></select> - <p class="description"><label for="_bp_theme_package_id"><?php esc_html_e( 'The selected Template Pack will serve all BuddyPress templates.', 'buddypress' ); ?></label></p> + <select name="_bp_theme_package_id" id="_bp_theme_package_id" aria-describedby="_bp_theme_package_description"><?php echo $options; ?></select> + <p id="_bp_theme_package_description" class="description"><?php esc_html_e( 'The selected Template Pack will serve all BuddyPress templates.', 'buddypress' ); ?></p> <?php else : ?> <p><?php esc_html_e( 'No template packages available.', 'buddypress' ); ?></p> @@ -104,7 +104,7 @@ function bp_admin_setting_callback_activity_akismet() { } /** - * Allow activity comments on blog posts and forum posts. + * Allow activity comments on posts and comments. * * @since 1.6.0 */ @@ -112,7 +112,7 @@ function bp_admin_setting_callback_blogforum_comments() { ?> <input id="bp-disable-blogforum-comments" name="bp-disable-blogforum-comments" type="checkbox" value="1" <?php checked( !bp_disable_blogforum_comments( false ) ); ?> /> - <label for="bp-disable-blogforum-comments"><?php _e( 'Allow activity stream commenting on blog and forum posts', 'buddypress' ); ?></label> + <label for="bp-disable-blogforum-comments"><?php _e( 'Allow activity stream commenting on posts and comments', 'buddypress' ); ?></label> <?php } @@ -134,7 +134,7 @@ function bp_admin_setting_callback_heartbeat() { /** * Sanitization for bp-disable-blogforum-comments setting. * - * In the UI, a checkbox asks whether you'd like to *enable* blog/forum activity comments. For + * In the UI, a checkbox asks whether you'd like to *enable* post/comment activity comments. For * legacy reasons, the option that we store is 1 if these comments are *disabled*. So we use this * function to flip the boolean before saving the intval. * @@ -216,9 +216,9 @@ function bp_admin_setting_callback_groups_section() { } function bp_admin_setting_callback_group_creation() { ?> - <input id="bp_restrict_group_creation" name="bp_restrict_group_creation" type="checkbox"value="1" <?php checked( !bp_restrict_group_creation( false ) ); ?> /> + <input id="bp_restrict_group_creation" name="bp_restrict_group_creation" type="checkbox" aria-describedby="bp_group_creation_description" value="1" <?php checked( !bp_restrict_group_creation( false ) ); ?> /> <label for="bp_restrict_group_creation"><?php _e( 'Enable group creation for all users', 'buddypress' ); ?></label> - <p class="description"><?php _e( 'Administrators can always create groups, regardless of this setting.', 'buddypress' ); ?></p> + <p class="description" id="bp_group_creation_description"><?php _e( 'Administrators can always create groups, regardless of this setting.', 'buddypress' ); ?></p> <?php } @@ -247,40 +247,6 @@ function bp_admin_setting_callback_group_cover_image_uploads() { <?php } -/** Forums Section ************************************************************/ - -/** - * Forums settings section description for the settings page. - * - * @since 1.6.0 - */ -function bp_admin_setting_callback_bbpress_section() { } - -/** - * The bb-config.php location field. - * - * @since 1.6.0 - * - */ -function bp_admin_setting_callback_bbpress_configuration() { - - $config_location = bp_get_option( 'bb-config-location' ); - $file_exists = (bool) ( file_exists( $config_location ) || is_file( $config_location ) ); ?> - - <input name="bb-config-location" type="text" id="bb-config-location" value="<?php bp_form_option( 'bb-config-location', '' ); ?>" class="medium-text" style="width: 300px;" /> - - <?php if ( false === $file_exists ) : ?> - - <a class="button" href="<?php bp_admin_url( 'admin.php?page=bb-forums-setup&repair=1' ); ?>"><?php _e( 'Repair', 'buddypress' ) ?></a> - <span class="attention"><?php _e( 'File does not exist', 'buddypress' ); ?></span> - - <?php endif; ?> - - <p class="description"><?php _e( 'Absolute path to your bbPress configuration file.', 'buddypress' ); ?></p> - -<?php -} - /** Settings Page *************************************************************/ /** 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 f5c3bb51e13195a51b5701a59ddccc0c4f5077f9..47473d00ca54de778f0b1f1d2204e50f911f60c6 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 @@ -10,15 +10,16 @@ TABLE OF CONTENTS: -------------------------------------------------------------------------------- 1.0 Welcome Screen 1.1 Version Badge - 1.2 About Panel - 1.2.1 Headline Feature - 1.2.2 Features Section - 1.2.3 Changelog Section + 1.2 --- + 1.3 Credits Panel 2.0 Dashicons 2.1 Top level menus 2.2 Settings - Components 2.3 Tools -3.0 User's Lists + 2.4 Tooltips +3.0 Users + 3.1 Users List + 3.2 Site Notices 4.0 Emails - Edit page 5.0 Tools - BuddyPress 6.0 Plugins page @@ -41,398 +42,132 @@ TABLE OF CONTENTS: content: "\f448"; } -.about-wrap .bp-badge { - position: absolute; - top: 0; - left: 0; -} - -.index_page_bp-credits code, +.settings_page_bp-credits code, .index_page_bp-about code { background-color: #e0e0e0; color: #636363; font-size: 1em; } -@media only screen and (max-width: 500px) { - - .about-wrap .bp-badge { - position: relative; - margin: 10px auto; - top: auto; - left: auto; - } -} - -/* - * 1.2 About Panel - */ - /* - * 1.2.1 Headline Feature + * 1.3 Credits Panel + * + * Taken from WP 4.9.5. */ -.buddypress .bp-headline-feature { - margin-bottom: 2em; - margin-top: 3em; - padding: 2em 3em; -} - -.buddypress .bp-headline { - margin: 0 auto; - width: 45em; -} - -.buddypress .bp-headline span.dashicons { - background-color: #f1f1f1; - color: #d84800; - clear: right; - font-size: 100px; - float: right; - height: 100px; - line-height: 100px; - margin: 0 0 15px 15px; - text-align: center; - width: 100px; -} - -.buddypress .bp-headline-feature .headline-title { - font-size: 2.2em; - font-weight: 300; - line-height: 2; - margin: 0 0 1em; - text-align: center; -} - -.buddypress .bp-headline-feature p { - font-size: 1.15em; - margin: 1.15em 0 0.6em auto; +.bp-about-wrap { + position: relative; + max-width: 1050px; + font-size: 15px; } -/* - * 1.2.2 Features Section - */ -.buddypress .bp-features-section { - border-bottom: 1px solid #ccc; - clear: both; - margin-bottom: 3em; - margin-top: 2em; - overflow: hidden; - padding-bottom: 2em; +.bp-about-wrap img { + margin: 0; + max-width: 100%; + height: auto; + vertical-align: middle; } -.buddypress .bp-features-section p { - font-size: 14px; +.bp-about-wrap p { line-height: 1.5; + font-size: 14px; } -.buddypress .bp-features-section img { - margin-bottom: 20px; -} - -.buddypress .bp-features-section span.dashicons { - background-color: #fff; - border-radius: 50%; - clear: right; - color: #d84800; - font-size: 50px; - float: right; - height: 80px; - line-height: 80px; - margin: 0 0 15px 15px; - text-align: center; - width: 80px; -} - -.buddypress .bp-features-section .headline-title { - font-size: 2em; +.bp-about-wrap h2 { + margin: 40px 0 0.6em; + font-size: 2.7em; + line-height: 1.3; font-weight: 300; - line-height: 1.5; - margin: 1em auto 2em; text-align: center; } -.buddypress .bp-features-section .bp-feature-with-images { - border-bottom: 1px solid #ccc; - margin-bottom: 5em; - padding-bottom: 2em; -} - -.buddypress .bp-features-section .bp-feature, -.buddypress .bp-features-section .bp-feature-imaged { - float: right; - margin-bottom: 3em; - margin-left: 4.799999999%; - width: 47.6%; -} - -.buddypress .bp-features-section .bp-feature.opposite, -.buddypress .bp-features-section .bp-feature-imaged.anon { - margin-left: 0; -} - -.buddypress .bp-features-section .bp-feature code { - font-size: 0.95em; +.bp-about-wrap h3 { + margin: 1.25em 0 0.6em; + font-size: 1.4em; line-height: 1.5; } -.buddypress .bp-feature:after { - clear: both; - content: ""; - margin-bottom: 2em; +.bp-about-wrap code { + font-size: 14px; + font-weight: 400; } -.buddypress .bp-feature-imaged .feature-title { - color: #23282d; - font-size: 1.25em; - margin-bottom: 0.6em; - margin-top: 0; +.bp-about-wrap .about-description { + margin-top: 1.4em; + font-weight: 400; + line-height: 1.6; + font-size: 19px; } -.buddypress .bp-feature-imaged p { - clear: right; - font-size: 1.1em; +.bp-about-wrap h3.wp-people-group { + margin: 2.6em 0 1.33em; + padding: 0; + font-size: 16px; + line-height: inherit; } -.buddypress .bp-feature-imaged img { - clear: right; +.bp-about-wrap .wp-people-group { + padding: 0 5px; + margin: 0 -5px 0 -15px; } -.buddypress .bp-feature .feature-title { - font-size: 1em; - line-height: 1.5; +.bp-about-wrap .compact { margin-bottom: 0; - margin-right: 110px; - margin-top: 0; - text-align: right; } -.buddypress .bp-feature p { - margin-right: 110px; +.bp-about-wrap .wp-person { + display: inline-block; + vertical-align: top; + margin-left: 10px; + padding-bottom: 15px; + height: 70px; + width: 280px; } -/* - * 1.2.3 Changelog Section - */ -.buddypress .bp-changelog-section { - clear: both; - margin-bottom: 3em; - margin-top: 4em; +.bp-about-wrap .compact .wp-person { + height: auto; + width: 180px; padding-bottom: 0; + margin-bottom: 0; } -.buddypress .bp-changelog-section:after { - clear: both; - content: ""; - display: table; -} - -.buddypress .bp-changelog-section .changelog-title { - color: #23282d; - font-size: 1.25em; - line-height: 1.5; - margin: 0 auto 1.5em; -} - -.buddypress .bp-two-column div { - float: right; - margin-left: 4.799999999%; - position: relative; - width: 47.6%; -} - -.buddypress .bp-three-column .bp-column { +.bp-about-wrap .wp-person .gravatar { float: right; - margin-left: 5%; - position: relative; - width: 29.95%; + margin: 0 0 10px 10px; + padding: 1px; + width: 60px; + height: 60px; } -.buddypress .bp-two-column .bp-column:nth-of-type(2n), -.buddypress .bp-three-column .bp-column:nth-of-type(3n) { - margin-left: 0; +.bp-about-wrap .compact .wp-person .gravatar { + width: 30px; + height: 30px; } -.buddypress .bp-changelog { - margin-bottom: 3em; -} - -.buddypress .bp-changelog:after { - clear: both; - content: ""; - display: table; -} - -.buddypress .bp-changelog .title { - font-size: 14px; - margin-bottom: 0.75em; - margin-top: 0; -} - -.buddypress .bp-changelog p { - margin-bottom: 0; +.bp-about-wrap .wp-person .web { + margin: 6px 0 2px; + font-size: 16px; + font-weight: 400; + line-height: 2; + text-decoration: none; } -.bp-changelog-url { - text-align: center; +.bp-about-wrap .wp-person .title { + display: block; } -.bp-assets { - clear: both; - margin-bottom: 3em; +.bp-about-wrap p.wp-credits-list a { + white-space: nowrap; } -@media screen and ( max-width: 782px ) { +@media only screen and (max-width: 500px) { - .bp-headline-feature, - .bp-features-section, - .bp-changelog-section, - .bp-assets { - margin-right: 20px; + .bp-about-wrap { margin-left: 20px; + margin-right: 10px; } - .buddypress .bp-headline-feature { - padding: 0; - } - - .buddypress .bp-headline { - margin: 0; - width: 97%; - } - - .buddypress .bp-features-section { - clear: both; - margin-bottom: 0; - margin-top: 2em; - padding-bottom: 2em; - } - - .buddypress .bp-features-section .bp-feature-with-images { - margin-bottom: 2em; - } - - .buddypress .bp-features-section .headline-title { - margin-bottom: 1em; - } - - .buddypress .bp-changelog-section .changelog-title { - font-size: 1.25em; - line-height: 1.5; - margin-bottom: 0.5em; - margin-top: 0.5em; - } - - .buddypress .bp-features-section .feature-title, - .buddypress .bp-changelog-section .title { - font-size: 1.25em; - line-height: 1.25; - margin-top: 0.6em; - text-align: right; - } - - .buddypress .bp-features-section .bp-feature, - .buddypress .bp-features-section .bp-feature-imaged { - clear: both; - float: right; - margin-bottom: 1em; - margin-top: 1em; + .bp-about-wrap .bp-about-wrap h1 { margin-left: 0; - padding-left: 1em; - width: 100%; - } - - .buddypress .bp-features-section .bp-feature-imaged p { - font-size: 1em; - } - - .buddypress .bp-features-section .bp-feature span { - margin-top: 0.33em; - } - - .buddypress .bp-feature.opposite .feature-title, - .buddypress .bp-feature.opposite p { - float: none; - } - - .buddypress .bp-changelog-section { - clear: both; - margin-bottom: 2em; - margin-top: 2em; - } - - .buddypress .bp-changelog { - margin-bottom: 0; - } - - .buddypress .bp-changelog-section .changelog-title { - margin-bottom: 0.5em; - } - - .buddypress .bp-changelog .title { - font-size: 1em; - } - - .buddypress .bp-changelog p { - margin-bottom: 1em; - } - - .buddypress .bp-changelog-section .two-col > div, - .buddypress .bp-changelog-section .three-col .col { - margin-top: 0; - padding-bottom: 0.5em; - width: 100%; - } - - .buddypress .bp-three-column .bp-column { - width: 100%; - } -} - -@media screen and ( max-width: 360px ) { - - .buddypress .bp-headline { - text-align: center; - } - - .buddypress .bp-headline span.dashicons { - clear: none; - font-size: 80px; - float: none; - height: 80px; - line-height: 80px; - margin: 0 auto; - width: 80px; - } - - .buddypress .bp-headline-feature .headline-title, - .buddypress .bp-features-section .headline-title { - font-size: 1.5em; - line-height: 1.5; - text-align: right; - } - - .buddypress .bp-headline-feature .headline-title { - margin: 1em 0 0; - } - - .buddypress .bp-headline-feature p { - margin: 1.15em 0 0.6em auto; - text-align: right; - width: auto; - } - - .buddypress .bp-features-section .bp-feature { - text-align: center; - } - - .buddypress .bp-features-section span.dashicons { - float: none; - } - - .buddypress .bp-features-section .feature-title, - .buddypress .bp-features-section p { - margin-right: 0; - text-align: right; } } @@ -523,10 +258,6 @@ TABLE OF CONTENTS: content: "\f457"; } -.settings_page_bp-components tr.forums td.plugin-title span:before { - content: "\f452"; -} - .settings_page_bp-components tr.blogs td.plugin-title span:before { content: "\f120"; } @@ -571,10 +302,84 @@ TABLE OF CONTENTS: content: ""; } +/* + * 2.4 Tooltips + */ +.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, 0.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%; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + -webkit-transition: opacity 2s ease-out; + -ms-transition: opacity 2s ease-out; + 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; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} + +.bp-hello-social .bp-tooltip:after { + bottom: 120%; + margin-bottom: 20px; + margin-top: 0; + top: auto; + -webkit-transform: translateX(-15%); + -ms-transform: translateX(-15%); + transform: translateX(-15%); +} + +.bp-tooltip:hover:after, +.bp-tooltip:active:after, +.bp-tooltip:focus:after { + display: inline-block; + opacity: 1; + overflow: visible; + text-decoration: none; + z-index: 999; +} /*------------------------------------------------------------------------------ - * 3.0 User's Lists + * 3.0 Users *----------------------------------------------------------------------------*/ + +/* + * 3.1 Users List + */ body.site-users-php th#role, body.users-php th#role, body.users_page_bp-signups th#count_sent { @@ -611,6 +416,93 @@ body.users_page_bp-signups td.count_sent { font-weight: 700; } +/* + * 3.2 Site Notices + */ +.bp-new-notice-panel { + background: #fff; + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0, 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: 0.5em; + } +} + /*------------------------------------------------------------------------------ * 4.0 Emails - Edit Page *----------------------------------------------------------------------------*/ 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 ce27a13c9760fbf442f0789b10dc8c5b6fb4fe22..ae8898e41e3c29afa56befbce9d998755d68904b 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"}.about-wrap .bp-badge{position:absolute;top:0;left:0}.index_page_bp-about code,.index_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;left:auto}}.buddypress .bp-headline-feature{margin-bottom:2em;margin-top:3em;padding:2em 3em}.buddypress .bp-headline{margin:0 auto;width:45em}.buddypress .bp-headline span.dashicons{background-color:#f1f1f1;color:#d84800;clear:right;font-size:100px;float:right;height:100px;line-height:100px;margin:0 0 15px 15px;text-align:center;width:100px}.buddypress .bp-headline-feature .headline-title{font-size:2.2em;font-weight:300;line-height:2;margin:0 0 1em;text-align:center}.buddypress .bp-headline-feature p{font-size:1.15em;margin:1.15em 0 .6em auto}.buddypress .bp-features-section{border-bottom:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;overflow:hidden;padding-bottom:2em}.buddypress .bp-features-section p{font-size:14px;line-height:1.5}.buddypress .bp-features-section img{margin-bottom:20px}.buddypress .bp-features-section span.dashicons{background-color:#fff;border-radius:50%;clear:right;color:#d84800;font-size:50px;float:right;height:80px;line-height:80px;margin:0 0 15px 15px;text-align:center;width:80px}.buddypress .bp-features-section .headline-title{font-size:2em;font-weight:300;line-height:1.5;margin:1em auto 2em;text-align:center}.buddypress .bp-features-section .bp-feature-with-images{border-bottom:1px solid #ccc;margin-bottom:5em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{float:right;margin-bottom:3em;margin-left:4.799999999%;width:47.6%}.buddypress .bp-features-section .bp-feature-imaged.anon,.buddypress .bp-features-section .bp-feature.opposite{margin-left:0}.buddypress .bp-features-section .bp-feature code{font-size:.95em;line-height:1.5}.buddypress .bp-feature:after{clear:both;content:"";margin-bottom:2em}.buddypress .bp-feature-imaged .feature-title{color:#23282d;font-size:1.25em;margin-bottom:.6em;margin-top:0}.buddypress .bp-feature-imaged p{clear:right;font-size:1.1em}.buddypress .bp-feature-imaged img{clear:right}.buddypress .bp-feature .feature-title{font-size:1em;line-height:1.5;margin-bottom:0;margin-right:110px;margin-top:0;text-align:right}.buddypress .bp-feature p{margin-right:110px}.buddypress .bp-changelog-section{clear:both;margin-bottom:3em;margin-top:4em;padding-bottom:0}.buddypress .bp-changelog-section:after{clear:both;content:"";display:table}.buddypress .bp-changelog-section .changelog-title{color:#23282d;font-size:1.25em;line-height:1.5;margin:0 auto 1.5em}.buddypress .bp-two-column div{float:right;margin-left:4.799999999%;position:relative;width:47.6%}.buddypress .bp-three-column .bp-column{float:right;margin-left:5%;position:relative;width:29.95%}.buddypress .bp-three-column .bp-column:nth-of-type(3n),.buddypress .bp-two-column .bp-column:nth-of-type(2n){margin-left:0}.buddypress .bp-changelog{margin-bottom:3em}.buddypress .bp-changelog:after{clear:both;content:"";display:table}.buddypress .bp-changelog .title{font-size:14px;margin-bottom:.75em;margin-top:0}.buddypress .bp-changelog p{margin-bottom:0}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:3em}@media screen and (max-width:782px){.bp-assets,.bp-changelog-section,.bp-features-section,.bp-headline-feature{margin-right:20px;margin-left:20px}.buddypress .bp-headline-feature{padding:0}.buddypress .bp-headline{margin:0;width:97%}.buddypress .bp-features-section{clear:both;margin-bottom:0;margin-top:2em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature-with-images{margin-bottom:2em}.buddypress .bp-features-section .headline-title{margin-bottom:1em}.buddypress .bp-changelog-section .changelog-title{font-size:1.25em;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.buddypress .bp-changelog-section .title,.buddypress .bp-features-section .feature-title{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:right}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{clear:both;float:right;margin-bottom:1em;margin-top:1em;margin-left:0;padding-left:1em;width:100%}.buddypress .bp-features-section .bp-feature-imaged p{font-size:1em}.buddypress .bp-features-section .bp-feature span{margin-top:.33em}.buddypress .bp-feature.opposite .feature-title,.buddypress .bp-feature.opposite p{float:none}.buddypress .bp-changelog-section{clear:both;margin-bottom:2em;margin-top:2em}.buddypress .bp-changelog{margin-bottom:0}.buddypress .bp-changelog-section .changelog-title{margin-bottom:.5em}.buddypress .bp-changelog .title{font-size:1em}.buddypress .bp-changelog p{margin-bottom:1em}.buddypress .bp-changelog-section .three-col .col,.buddypress .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}.buddypress .bp-three-column .bp-column{width:100%}}@media screen and (max-width:360px){.buddypress .bp-headline{text-align:center}.buddypress .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.buddypress .bp-features-section .headline-title,.buddypress .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5;text-align:right}.buddypress .bp-headline-feature .headline-title{margin:1em 0 0}.buddypress .bp-headline-feature p{margin:1.15em 0 .6em auto;text-align:right;width:auto}.buddypress .bp-features-section .bp-feature{text-align:center}.buddypress .bp-features-section span.dashicons{float:none}.buddypress .bp-features-section .feature-title,.buddypress .bp-features-section p{margin-right:0;text-align:right}}#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.forums td.plugin-title span:before{content:"\f452"}.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"}#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:""}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}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"}#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%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;-webkit-transform:translateX(-15%);-ms-transform:translateX(-15%);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 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 6371953a195775bb48936c8ad96ce7723d8d0bbd..1316946afa20cd44d61a88432cb5870b88f67cdd 100644 --- a/wp-content/plugins/buddypress/bp-core/admin/css/common.css +++ b/wp-content/plugins/buddypress/bp-core/admin/css/common.css @@ -10,15 +10,16 @@ TABLE OF CONTENTS: -------------------------------------------------------------------------------- 1.0 Welcome Screen 1.1 Version Badge - 1.2 About Panel - 1.2.1 Headline Feature - 1.2.2 Features Section - 1.2.3 Changelog Section + 1.2 --- + 1.3 Credits Panel 2.0 Dashicons 2.1 Top level menus 2.2 Settings - Components 2.3 Tools -3.0 User's Lists + 2.4 Tooltips +3.0 Users + 3.1 Users List + 3.2 Site Notices 4.0 Emails - Edit page 5.0 Tools - BuddyPress 6.0 Plugins page @@ -41,398 +42,132 @@ TABLE OF CONTENTS: content: "\f448"; } -.about-wrap .bp-badge { - position: absolute; - top: 0; - right: 0; -} - -.index_page_bp-credits code, +.settings_page_bp-credits code, .index_page_bp-about code { background-color: #e0e0e0; color: #636363; font-size: 1em; } -@media only screen and (max-width: 500px) { - - .about-wrap .bp-badge { - position: relative; - margin: 10px auto; - top: auto; - right: auto; - } -} - -/* - * 1.2 About Panel - */ - /* - * 1.2.1 Headline Feature + * 1.3 Credits Panel + * + * Taken from WP 4.9.5. */ -.buddypress .bp-headline-feature { - margin-bottom: 2em; - margin-top: 3em; - padding: 2em 3em; -} - -.buddypress .bp-headline { - margin: 0 auto; - width: 45em; -} - -.buddypress .bp-headline span.dashicons { - background-color: #f1f1f1; - color: #d84800; - clear: left; - font-size: 100px; - float: left; - height: 100px; - line-height: 100px; - margin: 0 15px 15px 0; - text-align: center; - width: 100px; -} - -.buddypress .bp-headline-feature .headline-title { - font-size: 2.2em; - font-weight: 300; - line-height: 2; - margin: 0 0 1em; - text-align: center; -} - -.buddypress .bp-headline-feature p { - font-size: 1.15em; - margin: 1.15em auto 0.6em 0; +.bp-about-wrap { + position: relative; + max-width: 1050px; + font-size: 15px; } -/* - * 1.2.2 Features Section - */ -.buddypress .bp-features-section { - border-bottom: 1px solid #ccc; - clear: both; - margin-bottom: 3em; - margin-top: 2em; - overflow: hidden; - padding-bottom: 2em; +.bp-about-wrap img { + margin: 0; + max-width: 100%; + height: auto; + vertical-align: middle; } -.buddypress .bp-features-section p { - font-size: 14px; +.bp-about-wrap p { line-height: 1.5; + font-size: 14px; } -.buddypress .bp-features-section img { - margin-bottom: 20px; -} - -.buddypress .bp-features-section span.dashicons { - background-color: #fff; - border-radius: 50%; - clear: left; - color: #d84800; - font-size: 50px; - float: left; - height: 80px; - line-height: 80px; - margin: 0 15px 15px 0; - text-align: center; - width: 80px; -} - -.buddypress .bp-features-section .headline-title { - font-size: 2em; +.bp-about-wrap h2 { + margin: 40px 0 0.6em; + font-size: 2.7em; + line-height: 1.3; font-weight: 300; - line-height: 1.5; - margin: 1em auto 2em; text-align: center; } -.buddypress .bp-features-section .bp-feature-with-images { - border-bottom: 1px solid #ccc; - margin-bottom: 5em; - padding-bottom: 2em; -} - -.buddypress .bp-features-section .bp-feature, -.buddypress .bp-features-section .bp-feature-imaged { - float: left; - margin-bottom: 3em; - margin-right: 4.799999999%; - width: 47.6%; -} - -.buddypress .bp-features-section .bp-feature.opposite, -.buddypress .bp-features-section .bp-feature-imaged.anon { - margin-right: 0; -} - -.buddypress .bp-features-section .bp-feature code { - font-size: 0.95em; +.bp-about-wrap h3 { + margin: 1.25em 0 0.6em; + font-size: 1.4em; line-height: 1.5; } -.buddypress .bp-feature:after { - clear: both; - content: ""; - margin-bottom: 2em; +.bp-about-wrap code { + font-size: 14px; + font-weight: 400; } -.buddypress .bp-feature-imaged .feature-title { - color: #23282d; - font-size: 1.25em; - margin-bottom: 0.6em; - margin-top: 0; +.bp-about-wrap .about-description { + margin-top: 1.4em; + font-weight: 400; + line-height: 1.6; + font-size: 19px; } -.buddypress .bp-feature-imaged p { - clear: left; - font-size: 1.1em; +.bp-about-wrap h3.wp-people-group { + margin: 2.6em 0 1.33em; + padding: 0; + font-size: 16px; + line-height: inherit; } -.buddypress .bp-feature-imaged img { - clear: left; +.bp-about-wrap .wp-people-group { + padding: 0 5px; + margin: 0 -15px 0 -5px; } -.buddypress .bp-feature .feature-title { - font-size: 1em; - line-height: 1.5; +.bp-about-wrap .compact { margin-bottom: 0; - margin-left: 110px; - margin-top: 0; - text-align: left; } -.buddypress .bp-feature p { - margin-left: 110px; +.bp-about-wrap .wp-person { + display: inline-block; + vertical-align: top; + margin-right: 10px; + padding-bottom: 15px; + height: 70px; + width: 280px; } -/* - * 1.2.3 Changelog Section - */ -.buddypress .bp-changelog-section { - clear: both; - margin-bottom: 3em; - margin-top: 4em; +.bp-about-wrap .compact .wp-person { + height: auto; + width: 180px; padding-bottom: 0; + margin-bottom: 0; } -.buddypress .bp-changelog-section:after { - clear: both; - content: ""; - display: table; -} - -.buddypress .bp-changelog-section .changelog-title { - color: #23282d; - font-size: 1.25em; - line-height: 1.5; - margin: 0 auto 1.5em; -} - -.buddypress .bp-two-column div { - float: left; - margin-right: 4.799999999%; - position: relative; - width: 47.6%; -} - -.buddypress .bp-three-column .bp-column { +.bp-about-wrap .wp-person .gravatar { float: left; - margin-right: 5%; - position: relative; - width: 29.95%; + margin: 0 10px 10px 0; + padding: 1px; + width: 60px; + height: 60px; } -.buddypress .bp-two-column .bp-column:nth-of-type(2n), -.buddypress .bp-three-column .bp-column:nth-of-type(3n) { - margin-right: 0; +.bp-about-wrap .compact .wp-person .gravatar { + width: 30px; + height: 30px; } -.buddypress .bp-changelog { - margin-bottom: 3em; -} - -.buddypress .bp-changelog:after { - clear: both; - content: ""; - display: table; -} - -.buddypress .bp-changelog .title { - font-size: 14px; - margin-bottom: 0.75em; - margin-top: 0; -} - -.buddypress .bp-changelog p { - margin-bottom: 0; +.bp-about-wrap .wp-person .web { + margin: 6px 0 2px; + font-size: 16px; + font-weight: 400; + line-height: 2; + text-decoration: none; } -.bp-changelog-url { - text-align: center; +.bp-about-wrap .wp-person .title { + display: block; } -.bp-assets { - clear: both; - margin-bottom: 3em; +.bp-about-wrap p.wp-credits-list a { + white-space: nowrap; } -@media screen and ( max-width: 782px ) { +@media only screen and (max-width: 500px) { - .bp-headline-feature, - .bp-features-section, - .bp-changelog-section, - .bp-assets { - margin-left: 20px; + .bp-about-wrap { margin-right: 20px; + margin-left: 10px; } - .buddypress .bp-headline-feature { - padding: 0; - } - - .buddypress .bp-headline { - margin: 0; - width: 97%; - } - - .buddypress .bp-features-section { - clear: both; - margin-bottom: 0; - margin-top: 2em; - padding-bottom: 2em; - } - - .buddypress .bp-features-section .bp-feature-with-images { - margin-bottom: 2em; - } - - .buddypress .bp-features-section .headline-title { - margin-bottom: 1em; - } - - .buddypress .bp-changelog-section .changelog-title { - font-size: 1.25em; - line-height: 1.5; - margin-bottom: 0.5em; - margin-top: 0.5em; - } - - .buddypress .bp-features-section .feature-title, - .buddypress .bp-changelog-section .title { - font-size: 1.25em; - line-height: 1.25; - margin-top: 0.6em; - text-align: left; - } - - .buddypress .bp-features-section .bp-feature, - .buddypress .bp-features-section .bp-feature-imaged { - clear: both; - float: left; - margin-bottom: 1em; - margin-top: 1em; + .bp-about-wrap .bp-about-wrap h1 { margin-right: 0; - padding-right: 1em; - width: 100%; - } - - .buddypress .bp-features-section .bp-feature-imaged p { - font-size: 1em; - } - - .buddypress .bp-features-section .bp-feature span { - margin-top: 0.33em; - } - - .buddypress .bp-feature.opposite .feature-title, - .buddypress .bp-feature.opposite p { - float: none; - } - - .buddypress .bp-changelog-section { - clear: both; - margin-bottom: 2em; - margin-top: 2em; - } - - .buddypress .bp-changelog { - margin-bottom: 0; - } - - .buddypress .bp-changelog-section .changelog-title { - margin-bottom: 0.5em; - } - - .buddypress .bp-changelog .title { - font-size: 1em; - } - - .buddypress .bp-changelog p { - margin-bottom: 1em; - } - - .buddypress .bp-changelog-section .two-col > div, - .buddypress .bp-changelog-section .three-col .col { - margin-top: 0; - padding-bottom: 0.5em; - width: 100%; - } - - .buddypress .bp-three-column .bp-column { - width: 100%; - } -} - -@media screen and ( max-width: 360px ) { - - .buddypress .bp-headline { - text-align: center; - } - - .buddypress .bp-headline span.dashicons { - clear: none; - font-size: 80px; - float: none; - height: 80px; - line-height: 80px; - margin: 0 auto; - width: 80px; - } - - .buddypress .bp-headline-feature .headline-title, - .buddypress .bp-features-section .headline-title { - font-size: 1.5em; - line-height: 1.5; - text-align: left; - } - - .buddypress .bp-headline-feature .headline-title { - margin: 1em 0 0; - } - - .buddypress .bp-headline-feature p { - margin: 1.15em auto 0.6em 0; - text-align: left; - width: auto; - } - - .buddypress .bp-features-section .bp-feature { - text-align: center; - } - - .buddypress .bp-features-section span.dashicons { - float: none; - } - - .buddypress .bp-features-section .feature-title, - .buddypress .bp-features-section p { - margin-left: 0; - text-align: left; } } @@ -523,10 +258,6 @@ TABLE OF CONTENTS: content: "\f457"; } -.settings_page_bp-components tr.forums td.plugin-title span:before { - content: "\f452"; -} - .settings_page_bp-components tr.blogs td.plugin-title span:before { content: "\f120"; } @@ -571,10 +302,84 @@ TABLE OF CONTENTS: content: ""; } +/* + * 2.4 Tooltips + */ +.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, 0.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%; + -webkit-transform: translateX(50%); + -ms-transform: translateX(50%); + transform: translateX(50%); + -webkit-transition: opacity 2s ease-out; + -ms-transition: opacity 2s ease-out; + 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; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); +} + +.bp-hello-social .bp-tooltip:after { + bottom: 120%; + margin-bottom: 20px; + margin-top: 0; + top: auto; + -webkit-transform: translateX(15%); + -ms-transform: translateX(15%); + transform: translateX(15%); +} + +.bp-tooltip:hover:after, +.bp-tooltip:active:after, +.bp-tooltip:focus:after { + display: inline-block; + opacity: 1; + overflow: visible; + text-decoration: none; + z-index: 999; +} /*------------------------------------------------------------------------------ - * 3.0 User's Lists + * 3.0 Users *----------------------------------------------------------------------------*/ + +/* + * 3.1 Users List + */ body.site-users-php th#role, body.users-php th#role, body.users_page_bp-signups th#count_sent { @@ -611,6 +416,93 @@ body.users_page_bp-signups td.count_sent { font-weight: 700; } +/* + * 3.2 Site Notices + */ +.bp-new-notice-panel { + background: #fff; + border: 1px solid #e5e5e5; + box-shadow: 0 1px 1px rgba(0, 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: 0.5em; + } +} + /*------------------------------------------------------------------------------ * 4.0 Emails - Edit Page *----------------------------------------------------------------------------*/ 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 1c9b66b81d40d1e5aba3d54714b874426ac1e76e..f171bc203fc9f3f630e93e2ad871febae178ba41 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"}.about-wrap .bp-badge{position:absolute;top:0;right:0}.index_page_bp-about code,.index_page_bp-credits code{background-color:#e0e0e0;color:#636363;font-size:1em}@media only screen and (max-width:500px){.about-wrap .bp-badge{position:relative;margin:10px auto;top:auto;right:auto}}.buddypress .bp-headline-feature{margin-bottom:2em;margin-top:3em;padding:2em 3em}.buddypress .bp-headline{margin:0 auto;width:45em}.buddypress .bp-headline span.dashicons{background-color:#f1f1f1;color:#d84800;clear:left;font-size:100px;float:left;height:100px;line-height:100px;margin:0 15px 15px 0;text-align:center;width:100px}.buddypress .bp-headline-feature .headline-title{font-size:2.2em;font-weight:300;line-height:2;margin:0 0 1em;text-align:center}.buddypress .bp-headline-feature p{font-size:1.15em;margin:1.15em auto .6em 0}.buddypress .bp-features-section{border-bottom:1px solid #ccc;clear:both;margin-bottom:3em;margin-top:2em;overflow:hidden;padding-bottom:2em}.buddypress .bp-features-section p{font-size:14px;line-height:1.5}.buddypress .bp-features-section img{margin-bottom:20px}.buddypress .bp-features-section span.dashicons{background-color:#fff;border-radius:50%;clear:left;color:#d84800;font-size:50px;float:left;height:80px;line-height:80px;margin:0 15px 15px 0;text-align:center;width:80px}.buddypress .bp-features-section .headline-title{font-size:2em;font-weight:300;line-height:1.5;margin:1em auto 2em;text-align:center}.buddypress .bp-features-section .bp-feature-with-images{border-bottom:1px solid #ccc;margin-bottom:5em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{float:left;margin-bottom:3em;margin-right:4.799999999%;width:47.6%}.buddypress .bp-features-section .bp-feature-imaged.anon,.buddypress .bp-features-section .bp-feature.opposite{margin-right:0}.buddypress .bp-features-section .bp-feature code{font-size:.95em;line-height:1.5}.buddypress .bp-feature:after{clear:both;content:"";margin-bottom:2em}.buddypress .bp-feature-imaged .feature-title{color:#23282d;font-size:1.25em;margin-bottom:.6em;margin-top:0}.buddypress .bp-feature-imaged p{clear:left;font-size:1.1em}.buddypress .bp-feature-imaged img{clear:left}.buddypress .bp-feature .feature-title{font-size:1em;line-height:1.5;margin-bottom:0;margin-left:110px;margin-top:0;text-align:left}.buddypress .bp-feature p{margin-left:110px}.buddypress .bp-changelog-section{clear:both;margin-bottom:3em;margin-top:4em;padding-bottom:0}.buddypress .bp-changelog-section:after{clear:both;content:"";display:table}.buddypress .bp-changelog-section .changelog-title{color:#23282d;font-size:1.25em;line-height:1.5;margin:0 auto 1.5em}.buddypress .bp-two-column div{float:left;margin-right:4.799999999%;position:relative;width:47.6%}.buddypress .bp-three-column .bp-column{float:left;margin-right:5%;position:relative;width:29.95%}.buddypress .bp-three-column .bp-column:nth-of-type(3n),.buddypress .bp-two-column .bp-column:nth-of-type(2n){margin-right:0}.buddypress .bp-changelog{margin-bottom:3em}.buddypress .bp-changelog:after{clear:both;content:"";display:table}.buddypress .bp-changelog .title{font-size:14px;margin-bottom:.75em;margin-top:0}.buddypress .bp-changelog p{margin-bottom:0}.bp-changelog-url{text-align:center}.bp-assets{clear:both;margin-bottom:3em}@media screen and (max-width:782px){.bp-assets,.bp-changelog-section,.bp-features-section,.bp-headline-feature{margin-left:20px;margin-right:20px}.buddypress .bp-headline-feature{padding:0}.buddypress .bp-headline{margin:0;width:97%}.buddypress .bp-features-section{clear:both;margin-bottom:0;margin-top:2em;padding-bottom:2em}.buddypress .bp-features-section .bp-feature-with-images{margin-bottom:2em}.buddypress .bp-features-section .headline-title{margin-bottom:1em}.buddypress .bp-changelog-section .changelog-title{font-size:1.25em;line-height:1.5;margin-bottom:.5em;margin-top:.5em}.buddypress .bp-changelog-section .title,.buddypress .bp-features-section .feature-title{font-size:1.25em;line-height:1.25;margin-top:.6em;text-align:left}.buddypress .bp-features-section .bp-feature,.buddypress .bp-features-section .bp-feature-imaged{clear:both;float:left;margin-bottom:1em;margin-top:1em;margin-right:0;padding-right:1em;width:100%}.buddypress .bp-features-section .bp-feature-imaged p{font-size:1em}.buddypress .bp-features-section .bp-feature span{margin-top:.33em}.buddypress .bp-feature.opposite .feature-title,.buddypress .bp-feature.opposite p{float:none}.buddypress .bp-changelog-section{clear:both;margin-bottom:2em;margin-top:2em}.buddypress .bp-changelog{margin-bottom:0}.buddypress .bp-changelog-section .changelog-title{margin-bottom:.5em}.buddypress .bp-changelog .title{font-size:1em}.buddypress .bp-changelog p{margin-bottom:1em}.buddypress .bp-changelog-section .three-col .col,.buddypress .bp-changelog-section .two-col>div{margin-top:0;padding-bottom:.5em;width:100%}.buddypress .bp-three-column .bp-column{width:100%}}@media screen and (max-width:360px){.buddypress .bp-headline{text-align:center}.buddypress .bp-headline span.dashicons{clear:none;font-size:80px;float:none;height:80px;line-height:80px;margin:0 auto;width:80px}.buddypress .bp-features-section .headline-title,.buddypress .bp-headline-feature .headline-title{font-size:1.5em;line-height:1.5;text-align:left}.buddypress .bp-headline-feature .headline-title{margin:1em 0 0}.buddypress .bp-headline-feature p{margin:1.15em auto .6em 0;text-align:left;width:auto}.buddypress .bp-features-section .bp-feature{text-align:center}.buddypress .bp-features-section span.dashicons{float:none}.buddypress .bp-features-section .feature-title,.buddypress .bp-features-section p{margin-left:0;text-align:left}}#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.forums td.plugin-title span:before{content:"\f452"}.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"}#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:""}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}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"}#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%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.bp-hello-social .bp-tooltip:after{bottom:120%;margin-bottom:20px;margin-top:0;top:auto;-webkit-transform:translateX(15%);-ms-transform:translateX(15%);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 diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.css b/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..45fa3b5737948baf2258b3cfc749fc000a2696d3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.css @@ -0,0 +1,338 @@ +/*------------------------------------------------------------------------------ +Loaded in wp-admin for query string `hello=buddypress`. + +@since 3.0.0 + +-------------------------------------------------------------------------------- +TABLE OF CONTENTS: +-------------------------------------------------------------------------------- +1.0 - Typography and colour +2.0 - Dashicons +3.0 - Elements + 3.1 - Backdrop and container + 3.2 - Modal footer + 3.3 - Modal header + 3.4 - Modal content +4.0 - Content styles + 4.1 - Backdrop and container + 4.2 - Footer content + 4.3 - Header content + 4.4 - Content content +5.0 - Media +6.0 - Media Queries + 6.1 - Desktop Medium + 6.2 - Desktop Large +------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------ + * 1.0 - Typography and colour + *----------------------------------------------------------------------------*/ +:root { + --bp-hello-color-primary: #d34600; + --bp-hello-color-secondary: #e5e5e5; + --bp-hello-container-size: 15%; +} + +#bp-hello-container a { + color: var(--bp-hello-color-primary); +} + +#bp-hello-container a:hover { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: black; +} + +#bp-hello-container .bp-hello-header h1 { + line-height: 1.7; + font-size: 21px; + font-weight: 400; +} + +.bp-hello-content p { + font-size: 16px; +} + +/*------------------------------------------------------------------------------ + * 2.0 - Dashicons + *----------------------------------------------------------------------------*/ +.bp-hello-close .button { + padding: 5px !important; +} + +.bp-hello-close .close-modal:before { + content: "\f158"; + color: #23282d; + /* wp toolbar */ + font: 400 1.5em/1 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; +} + +.bp-hello-close .close-modal:focus:before, .bp-hello-close .close-modal:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); +} + +.bp-hello-social li a:before { + color: #23282d; + /* wp toolbar */ + font: 400 30px/0.6 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; +} + +.bp-hello-social li a:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); +} + +.bp-hello-social li a.support:before { + content: "\f448"; +} + +.bp-hello-social li a.twitter:before { + content: "\f301"; +} + +/*------------------------------------------------------------------------------ + * 3.0 - Elements + *----------------------------------------------------------------------------*/ +/* + * 3.1 - Backdrop and container + */ +#bp-hello-backdrop { + position: fixed; + top: 0; + right: 0; + left: 0; + bottom: 0; + z-index: 9998; + display: none; +} + +#bp-hello-container { + position: fixed; + top: 0; + bottom: 80px; + z-index: 99999; +} + +.bp-disable-scroll { + overflow: hidden; +} + +/* + * 3.2 - Modal footer + */ +.bp-hello-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + height: 58px; + max-height: 58px; +} + +.bp-hello-social-cta, +.bp-hello-social-links { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.bp-hello-social-links ul { + display: inline-block; +} + +.bp-hello-social li { + position: relative; + bottom: -5px; + display: inline-block; + list-style-type: none; + margin-bottom: 0; +} + +.bp-hello-social li:last-child a { + margin-right: 4px; +} + +/* + * 3.3 - Modal header + */ +.bp-hello-header { + height: 58px; + max-height: 58px; +} + +/* + * 3.4 - Modal content + */ +.bp-hello-content { + padding: 0 25px; + height: calc(100% - 58px); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*------------------------------------------------------------------------------ + * 4.0 - Content styles + *----------------------------------------------------------------------------*/ +/* + * 4.1 - Backdrop and container + */ +#bp-hello-backdrop { + background-color: rgba(0, 0, 0, 0.8); + -webkit-transition: opacity 0.15s ease-out; + -o-transition: opacity 0.15s ease-out; + transition: opacity 0.15s ease-out; +} + +#bp-hello-container { + background-color: white; +} + +/* + * 4.2 - Footer content + */ +.bp-hello-footer { + border-radius: 0 0 3px 3px; + background-color: white; + border-top: 1px solid var(--bp-hello-color-secondary); + padding: 6px 25px; +} + +.bp-hello-footer p { + font-size: 15px; +} + +.bp-hello-social-cta { + text-align: right; +} + +.bp-hello-social-links { + text-align: left; +} + +.bp-hello-social li a { + text-decoration: none; +} + +/* + * 4.3 - Header content + */ +.bp-hello-header { + padding: 6px 25px; +} + +.bp-hello-header h1 { + width: calc(100% - 51px); +} + +#bp-hello-container .bp-hello-header { + border-bottom: 1px solid var(--bp-hello-color-secondary); +} + +.bp-hello-title { + text-align: right; +} + +.bp-hello-close { + position: absolute; + top: 20px; + left: 25px; + text-align: left; +} + +/* + * 4.4 - Content content + */ +.bp-hello-content { + background-color: white; +} + +/*------------------------------------------------------------------------------ + * 5.0 - Media + *----------------------------------------------------------------------------*/ +.bp-hello-content img { + border-radius: 2px; + max-width: 100%; +} + +.bp-hello-content iframe { + width: 100%; +} + +/*------------------------------------------------------------------------------ + * 6.0 - Media Queries + *----------------------------------------------------------------------------*/ +/* + * 6.1 - Desktop Medium + */ +@media only screen and (min-width: 1024px) { + #bp-hello-backdrop { + display: block; + } + #bp-hello-container { + position: fixed; + top: 60px; + right: var(--bp-hello-container-size); + left: var(--bp-hello-container-size); + bottom: 30px; + z-index: 9999; + border-radius: 3px; + } + #bp-hello-container .bp-hello-header h1 { + line-height: inherit; + } + .bp-hello-header { + height: auto; + max-height: inherit; + padding: 6px 30px; + } + .bp-hello-close { + left: 30px; + } + .bp-hello-close .close-modal:before { + line-height: 0.7; + } + .bp-hello-footer { + position: fixed; + right: var(--bp-hello-container-size); + left: var(--bp-hello-container-size); + bottom: 30px; + z-index: 10000; + height: auto; + max-height: inherit; + padding: 6px 30px; + } + .bp-hello-content { + height: calc(100% - 90px); + padding: 0 30px; + } + .bp-hello-content p { + font-size: 14px; + } + .bp-hello-content iframe { + height: 100%; + } +} + +/** + * 6.2 - Desktop Large + */ +@media screen and (min-width: 1280px) { + #bp-hello-container, + .bp-hello-footer { + right: calc((100% - 896px) / 2); + left: calc((100% - 896px) / 2); + } +} diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.min.css b/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.min.css new file mode 100644 index 0000000000000000000000000000000000000000..6507819446d16cf216786c055cb47d8f923396ba --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/css/hello-rtl.min.css @@ -0,0 +1 @@ +:root{--bp-hello-color-primary:#d34600;--bp-hello-color-secondary:#e5e5e5;--bp-hello-container-size:15%}#bp-hello-container a{color:var(--bp-hello-color-primary)}#bp-hello-container a:hover{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:#000}#bp-hello-container .bp-hello-header h1{line-height:1.7;font-size:21px;font-weight:400}.bp-hello-content p{font-size:16px}.bp-hello-close .button{padding:5px!important}.bp-hello-close .close-modal:before{content:"\f158";color:#23282d;font:400 1.5em/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important}.bp-hello-close .close-modal:focus:before,.bp-hello-close .close-modal:hover:before{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:var(--bp-hello-color-primary)}.bp-hello-social li a:before{color:#23282d;font:400 30px/.6 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important}.bp-hello-social li a:hover:before{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:var(--bp-hello-color-primary)}.bp-hello-social li a.support:before{content:"\f448"}.bp-hello-social li a.twitter:before{content:"\f301"}#bp-hello-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;z-index:9998;display:none}#bp-hello-container{position:fixed;top:0;bottom:80px;z-index:99999}.bp-disable-scroll{overflow:hidden}.bp-hello-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;height:58px;max-height:58px}.bp-hello-social-cta,.bp-hello-social-links{-ms-flex-preferred-size:50%;flex-basis:50%}.bp-hello-social-links ul{display:inline-block}.bp-hello-social li{position:relative;bottom:-5px;display:inline-block;list-style-type:none;margin-bottom:0}.bp-hello-social li:last-child a{margin-right:4px}.bp-hello-header{height:58px;max-height:58px}.bp-hello-content{padding:0 25px;height:calc(100% - 58px);overflow-y:auto;-webkit-overflow-scrolling:touch}#bp-hello-backdrop{background-color:rgba(0,0,0,.8);-webkit-transition:opacity .15s ease-out;-o-transition:opacity .15s ease-out;transition:opacity .15s ease-out}#bp-hello-container{background-color:#fff}.bp-hello-footer{border-radius:0 0 3px 3px;background-color:#fff;border-top:1px solid var(--bp-hello-color-secondary);padding:6px 25px}.bp-hello-footer p{font-size:15px}.bp-hello-social-cta{text-align:right}.bp-hello-social-links{text-align:left}.bp-hello-social li a{text-decoration:none}.bp-hello-header{padding:6px 25px}.bp-hello-header h1{width:calc(100% - 51px)}#bp-hello-container .bp-hello-header{border-bottom:1px solid var(--bp-hello-color-secondary)}.bp-hello-title{text-align:right}.bp-hello-close{position:absolute;top:20px;left:25px;text-align:left}.bp-hello-content{background-color:#fff}.bp-hello-content img{border-radius:2px;max-width:100%}.bp-hello-content iframe{width:100%}@media only screen and (min-width:1024px){#bp-hello-backdrop{display:block}#bp-hello-container{position:fixed;top:60px;right:var(--bp-hello-container-size);left:var(--bp-hello-container-size);bottom:30px;z-index:9999;border-radius:3px}#bp-hello-container .bp-hello-header h1{line-height:inherit}.bp-hello-header{height:auto;max-height:inherit;padding:6px 30px}.bp-hello-close{left:30px}.bp-hello-close .close-modal:before{line-height:.7}.bp-hello-footer{position:fixed;right:var(--bp-hello-container-size);left:var(--bp-hello-container-size);bottom:30px;z-index:10000;height:auto;max-height:inherit;padding:6px 30px}.bp-hello-content{height:calc(100% - 90px);padding:0 30px}.bp-hello-content p{font-size:14px}.bp-hello-content iframe{height:100%}}@media screen and (min-width:1280px){#bp-hello-container,.bp-hello-footer{right:calc((100% - 896px)/ 2);left:calc((100% - 896px)/ 2)}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/hello.css b/wp-content/plugins/buddypress/bp-core/admin/css/hello.css new file mode 100644 index 0000000000000000000000000000000000000000..afe0c8ea5c49b8b9950b629fc745e946f79e5519 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/css/hello.css @@ -0,0 +1,338 @@ +/*------------------------------------------------------------------------------ +Loaded in wp-admin for query string `hello=buddypress`. + +@since 3.0.0 + +-------------------------------------------------------------------------------- +TABLE OF CONTENTS: +-------------------------------------------------------------------------------- +1.0 - Typography and colour +2.0 - Dashicons +3.0 - Elements + 3.1 - Backdrop and container + 3.2 - Modal footer + 3.3 - Modal header + 3.4 - Modal content +4.0 - Content styles + 4.1 - Backdrop and container + 4.2 - Footer content + 4.3 - Header content + 4.4 - Content content +5.0 - Media +6.0 - Media Queries + 6.1 - Desktop Medium + 6.2 - Desktop Large +------------------------------------------------------------------------------*/ +/*------------------------------------------------------------------------------ + * 1.0 - Typography and colour + *----------------------------------------------------------------------------*/ +:root { + --bp-hello-color-primary: #d34600; + --bp-hello-color-secondary: #e5e5e5; + --bp-hello-container-size: 15%; +} + +#bp-hello-container a { + color: var(--bp-hello-color-primary); +} + +#bp-hello-container a:hover { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: black; +} + +#bp-hello-container .bp-hello-header h1 { + line-height: 1.7; + font-size: 21px; + font-weight: 400; +} + +.bp-hello-content p { + font-size: 16px; +} + +/*------------------------------------------------------------------------------ + * 2.0 - Dashicons + *----------------------------------------------------------------------------*/ +.bp-hello-close .button { + padding: 5px !important; +} + +.bp-hello-close .close-modal:before { + content: "\f158"; + color: #23282d; + /* wp toolbar */ + font: 400 1.5em/1 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; +} + +.bp-hello-close .close-modal:focus:before, .bp-hello-close .close-modal:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); +} + +.bp-hello-social li a:before { + color: #23282d; + /* wp toolbar */ + font: 400 30px/0.6 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; +} + +.bp-hello-social li a:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); +} + +.bp-hello-social li a.support:before { + content: "\f448"; +} + +.bp-hello-social li a.twitter:before { + content: "\f301"; +} + +/*------------------------------------------------------------------------------ + * 3.0 - Elements + *----------------------------------------------------------------------------*/ +/* + * 3.1 - Backdrop and container + */ +#bp-hello-backdrop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 9998; + display: none; +} + +#bp-hello-container { + position: fixed; + top: 0; + bottom: 80px; + z-index: 99999; +} + +.bp-disable-scroll { + overflow: hidden; +} + +/* + * 3.2 - Modal footer + */ +.bp-hello-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + height: 58px; + max-height: 58px; +} + +.bp-hello-social-cta, +.bp-hello-social-links { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.bp-hello-social-links ul { + display: inline-block; +} + +.bp-hello-social li { + position: relative; + bottom: -5px; + display: inline-block; + list-style-type: none; + margin-bottom: 0; +} + +.bp-hello-social li:last-child a { + margin-left: 4px; +} + +/* + * 3.3 - Modal header + */ +.bp-hello-header { + height: 58px; + max-height: 58px; +} + +/* + * 3.4 - Modal content + */ +.bp-hello-content { + padding: 0 25px; + height: calc(100% - 58px); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*------------------------------------------------------------------------------ + * 4.0 - Content styles + *----------------------------------------------------------------------------*/ +/* + * 4.1 - Backdrop and container + */ +#bp-hello-backdrop { + background-color: rgba(0, 0, 0, 0.8); + -webkit-transition: opacity 0.15s ease-out; + -o-transition: opacity 0.15s ease-out; + transition: opacity 0.15s ease-out; +} + +#bp-hello-container { + background-color: white; +} + +/* + * 4.2 - Footer content + */ +.bp-hello-footer { + border-radius: 0 0 3px 3px; + background-color: white; + border-top: 1px solid var(--bp-hello-color-secondary); + padding: 6px 25px; +} + +.bp-hello-footer p { + font-size: 15px; +} + +.bp-hello-social-cta { + text-align: left; +} + +.bp-hello-social-links { + text-align: right; +} + +.bp-hello-social li a { + text-decoration: none; +} + +/* + * 4.3 - Header content + */ +.bp-hello-header { + padding: 6px 25px; +} + +.bp-hello-header h1 { + width: calc(100% - 51px); +} + +#bp-hello-container .bp-hello-header { + border-bottom: 1px solid var(--bp-hello-color-secondary); +} + +.bp-hello-title { + text-align: left; +} + +.bp-hello-close { + position: absolute; + top: 20px; + right: 25px; + text-align: right; +} + +/* + * 4.4 - Content content + */ +.bp-hello-content { + background-color: white; +} + +/*------------------------------------------------------------------------------ + * 5.0 - Media + *----------------------------------------------------------------------------*/ +.bp-hello-content img { + border-radius: 2px; + max-width: 100%; +} + +.bp-hello-content iframe { + width: 100%; +} + +/*------------------------------------------------------------------------------ + * 6.0 - Media Queries + *----------------------------------------------------------------------------*/ +/* + * 6.1 - Desktop Medium + */ +@media only screen and (min-width: 1024px) { + #bp-hello-backdrop { + display: block; + } + #bp-hello-container { + position: fixed; + top: 60px; + left: var(--bp-hello-container-size); + right: var(--bp-hello-container-size); + bottom: 30px; + z-index: 9999; + border-radius: 3px; + } + #bp-hello-container .bp-hello-header h1 { + line-height: inherit; + } + .bp-hello-header { + height: auto; + max-height: inherit; + padding: 6px 30px; + } + .bp-hello-close { + right: 30px; + } + .bp-hello-close .close-modal:before { + line-height: 0.7; + } + .bp-hello-footer { + position: fixed; + left: var(--bp-hello-container-size); + right: var(--bp-hello-container-size); + bottom: 30px; + z-index: 10000; + height: auto; + max-height: inherit; + padding: 6px 30px; + } + .bp-hello-content { + height: calc(100% - 90px); + padding: 0 30px; + } + .bp-hello-content p { + font-size: 14px; + } + .bp-hello-content iframe { + height: 100%; + } +} + +/** + * 6.2 - Desktop Large + */ +@media screen and (min-width: 1280px) { + #bp-hello-container, + .bp-hello-footer { + left: calc((100% - 896px) / 2); + right: calc((100% - 896px) / 2); + } +} diff --git a/wp-content/plugins/buddypress/bp-core/admin/css/hello.min.css b/wp-content/plugins/buddypress/bp-core/admin/css/hello.min.css new file mode 100644 index 0000000000000000000000000000000000000000..d4fe9720de6fb9af38fb0bf47550b7497f42b189 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/css/hello.min.css @@ -0,0 +1 @@ +:root{--bp-hello-color-primary:#d34600;--bp-hello-color-secondary:#e5e5e5;--bp-hello-container-size:15%}#bp-hello-container a{color:var(--bp-hello-color-primary)}#bp-hello-container a:hover{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:#000}#bp-hello-container .bp-hello-header h1{line-height:1.7;font-size:21px;font-weight:400}.bp-hello-content p{font-size:16px}.bp-hello-close .button{padding:5px!important}.bp-hello-close .close-modal:before{content:"\f158";color:#23282d;font:400 1.5em/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important}.bp-hello-close .close-modal:focus:before,.bp-hello-close .close-modal:hover:before{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:var(--bp-hello-color-primary)}.bp-hello-social li a:before{color:#23282d;font:400 30px/.6 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important}.bp-hello-social li a:hover:before{-webkit-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;transition:all .1s ease-in-out;color:var(--bp-hello-color-primary)}.bp-hello-social li a.support:before{content:"\f448"}.bp-hello-social li a.twitter:before{content:"\f301"}#bp-hello-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9998;display:none}#bp-hello-container{position:fixed;top:0;bottom:80px;z-index:99999}.bp-disable-scroll{overflow:hidden}.bp-hello-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;height:58px;max-height:58px}.bp-hello-social-cta,.bp-hello-social-links{-ms-flex-preferred-size:50%;flex-basis:50%}.bp-hello-social-links ul{display:inline-block}.bp-hello-social li{position:relative;bottom:-5px;display:inline-block;list-style-type:none;margin-bottom:0}.bp-hello-social li:last-child a{margin-left:4px}.bp-hello-header{height:58px;max-height:58px}.bp-hello-content{padding:0 25px;height:calc(100% - 58px);overflow-y:auto;-webkit-overflow-scrolling:touch}#bp-hello-backdrop{background-color:rgba(0,0,0,.8);-webkit-transition:opacity .15s ease-out;-o-transition:opacity .15s ease-out;transition:opacity .15s ease-out}#bp-hello-container{background-color:#fff}.bp-hello-footer{border-radius:0 0 3px 3px;background-color:#fff;border-top:1px solid var(--bp-hello-color-secondary);padding:6px 25px}.bp-hello-footer p{font-size:15px}.bp-hello-social-cta{text-align:left}.bp-hello-social-links{text-align:right}.bp-hello-social li a{text-decoration:none}.bp-hello-header{padding:6px 25px}.bp-hello-header h1{width:calc(100% - 51px)}#bp-hello-container .bp-hello-header{border-bottom:1px solid var(--bp-hello-color-secondary)}.bp-hello-title{text-align:left}.bp-hello-close{position:absolute;top:20px;right:25px;text-align:right}.bp-hello-content{background-color:#fff}.bp-hello-content img{border-radius:2px;max-width:100%}.bp-hello-content iframe{width:100%}@media only screen and (min-width:1024px){#bp-hello-backdrop{display:block}#bp-hello-container{position:fixed;top:60px;left:var(--bp-hello-container-size);right:var(--bp-hello-container-size);bottom:30px;z-index:9999;border-radius:3px}#bp-hello-container .bp-hello-header h1{line-height:inherit}.bp-hello-header{height:auto;max-height:inherit;padding:6px 30px}.bp-hello-close{right:30px}.bp-hello-close .close-modal:before{line-height:.7}.bp-hello-footer{position:fixed;left:var(--bp-hello-container-size);right:var(--bp-hello-container-size);bottom:30px;z-index:10000;height:auto;max-height:inherit;padding:6px 30px}.bp-hello-content{height:calc(100% - 90px);padding:0 30px}.bp-hello-content p{font-size:14px}.bp-hello-content iframe{height:100%}}@media screen and (min-width:1280px){#bp-hello-container,.bp-hello-footer{left:calc((100% - 896px)/ 2);right:calc((100% - 896px)/ 2)}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/js/hello.js b/wp-content/plugins/buddypress/bp-core/admin/js/hello.js new file mode 100644 index 0000000000000000000000000000000000000000..5805472cdc7aa2d088350e42da6f37d697ba2b84 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/js/hello.js @@ -0,0 +1,116 @@ +/** + * Loads for BuddyPress Hello in wp-admin for query string `hello=buddypress`. + * + * @since 3.0.0 + */ +(function() { + /** + * Open the BuddyPress Hello modal. + */ + var bp_hello_open_modal = function() { + var backdrop = document.getElementById( 'bp-hello-backdrop' ), + modal = document.getElementById( 'bp-hello-container' ); + + document.body.classList.add( 'bp-disable-scroll' ); + + // Show modal and overlay. + backdrop.style.display = ''; + modal.style.display = ''; + + // Focus the "X" so bp_hello_handle_keyboard_events() works. + var focus_target = modal.querySelectorAll( 'a[href], button' ); + focus_target = Array.prototype.slice.call( focus_target ); + focus_target[0].focus(); + + // Events. + modal.addEventListener( 'keydown', bp_hello_handle_keyboard_events ); + backdrop.addEventListener( 'click', bp_hello_close_modal ); + }; + + /** + * Close modal if "X" or background is touched. + * + * @param {Event} event - A click event. + */ + document.addEventListener( 'click', function( event ) { + var backdrop = document.getElementById( 'bp-hello-backdrop' ); + if ( ! backdrop || ! document.getElementById( 'bp-hello-container' ) ) { + return; + } + + var backdrop_click = backdrop.contains( event.target ), + modal_close_click = event.target.classList.contains( 'close-modal' ); + + if ( ! modal_close_click && ! backdrop_click ) { + return; + } + + bp_hello_close_modal(); + }, false ); + + /** + * Close the Hello modal. + */ + var bp_hello_close_modal = function() { + var backdrop = document.getElementById( 'bp-hello-backdrop' ), + modal = document.getElementById( 'bp-hello-container' ); + + document.body.classList.remove( 'bp-disable-scroll' ); + + // Remove modal and overlay. + modal.parentNode.removeChild( modal ); + backdrop.parentNode.removeChild( backdrop ); + }; + + /** + * Restrict keyboard focus to elements within the BuddyPress Hello modal. + * + * @param {Event} event - A keyboard focus event. + */ + var bp_hello_handle_keyboard_events = function( event ) { + var modal = document.getElementById( 'bp-hello-container' ), + focus_targets = Array.prototype.slice.call( + modal.querySelectorAll( 'a[href], button' ) + ), + first_tab_stop = focus_targets[0], + last_tab_stop = focus_targets[ focus_targets.length - 1 ]; + + // Check for TAB key press. + if ( event.keyCode !== 9 ) { + return; + } + + // When SHIFT+TAB on first tab stop, go to last tab stop in modal. + if ( event.shiftKey && document.activeElement === first_tab_stop ) { + event.preventDefault(); + last_tab_stop.focus(); + + // When TAB reaches last tab stop, go to first tab stop in modal. + } else if ( document.activeElement === last_tab_stop ) { + event.preventDefault(); + first_tab_stop.focus(); + } + }; + + /** + * Close modal if escape key is presssed. + * + * @param {Event} event - A keyboard focus event. + */ + document.addEventListener( 'keyup', function( event ) { + if ( event.keyCode === 27 ) { + if ( ! document.getElementById( 'bp-hello-backdrop' ) || ! document.getElementById( 'bp-hello-container' ) ) { + return; + } + + bp_hello_close_modal(); + } + }, false ); + + // Init modal after the screen's loaded. + if ( document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading' ) { + bp_hello_open_modal(); + } else { + document.addEventListener( 'DOMContentLoaded', bp_hello_open_modal ); + } +}()); diff --git a/wp-content/plugins/buddypress/bp-core/admin/js/hello.min.js b/wp-content/plugins/buddypress/bp-core/admin/js/hello.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ef802107a419e53c0a09d37a1d7987829f68830d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/js/hello.min.js @@ -0,0 +1 @@ +!function(){var e=function(){var e=document.getElementById("bp-hello-backdrop"),o=document.getElementById("bp-hello-container");document.body.classList.add("bp-disable-scroll"),e.style.display="",o.style.display="";var l=o.querySelectorAll("a[href], button");(l=Array.prototype.slice.call(l))[0].focus(),o.addEventListener("keydown",n),e.addEventListener("click",t)};document.addEventListener("click",function(e){var n=document.getElementById("bp-hello-backdrop");if(n&&document.getElementById("bp-hello-container")){var o=n.contains(e.target);(e.target.classList.contains("close-modal")||o)&&t()}},!1);var t=function(){var e=document.getElementById("bp-hello-backdrop"),t=document.getElementById("bp-hello-container");document.body.classList.remove("bp-disable-scroll"),t.parentNode.removeChild(t),e.parentNode.removeChild(e)},n=function(e){var t=document.getElementById("bp-hello-container"),n=Array.prototype.slice.call(t.querySelectorAll("a[href], button")),o=n[0],l=n[n.length-1];9===e.keyCode&&(e.shiftKey&&document.activeElement===o?(e.preventDefault(),l.focus()):document.activeElement===l&&(e.preventDefault(),o.focus()))};document.addEventListener("keyup",function(e){if(27===e.keyCode){if(!document.getElementById("bp-hello-backdrop")||!document.getElementById("bp-hello-container"))return;t()}},!1),(document.attachEvent?"complete"===document.readyState:"loading"!==document.readyState)?e():document.addEventListener("DOMContentLoaded",e)}(); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/admin/sass/hello.scss b/wp-content/plugins/buddypress/bp-core/admin/sass/hello.scss new file mode 100644 index 0000000000000000000000000000000000000000..a338b606167a0e52a6651fc73ae5f6f0af73538c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/admin/sass/hello.scss @@ -0,0 +1,403 @@ +/*------------------------------------------------------------------------------ +Loaded in wp-admin for query string `hello=buddypress`. + +@since 3.0.0 + +-------------------------------------------------------------------------------- +TABLE OF CONTENTS: +-------------------------------------------------------------------------------- +1.0 - Typography and colour +2.0 - Dashicons +3.0 - Elements + 3.1 - Backdrop and container + 3.2 - Modal footer + 3.3 - Modal header + 3.4 - Modal content +4.0 - Content styles + 4.1 - Backdrop and container + 4.2 - Footer content + 4.3 - Header content + 4.4 - Content content +5.0 - Media +6.0 - Media Queries + 6.1 - Desktop Medium + 6.2 - Desktop Large +------------------------------------------------------------------------------*/ + +/*------------------------------------------------------------------------------ + * 1.0 - Typography and colour + *----------------------------------------------------------------------------*/ +:root { + --bp-hello-color-primary: #d34600; + --bp-hello-color-secondary: #e5e5e5; + --bp-hello-container-size: 15%; +} + +#bp-hello-container { + + a { + color: var(--bp-hello-color-primary); + + &:hover { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: rgb(0, 0, 0); + } + } + + .bp-hello-header { + + h1 { + line-height: 1.7; + font-size: 21px; + font-weight: 400; + } + } +} + +.bp-hello-content { + + p { + font-size: 16px; + } +} + +/*------------------------------------------------------------------------------ + * 2.0 - Dashicons + *----------------------------------------------------------------------------*/ +.bp-hello-close { + + .button { + padding: 5px !important; + } + + .close-modal { + + &:before { + content: "\f158"; + color: #23282d; /* wp toolbar */ + font: 400 1.5em/1 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; + } + + &:focus:before, + &:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); + } + } +} + +.bp-hello-social { + + li a { + + &:before { + color: #23282d; /* wp toolbar */ + font: 400 30px/0.6 dashicons; + speak: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-image: none !important; + } + + &:hover:before { + -webkit-transition: all 0.1s ease-in-out; + -o-transition: all 0.1s ease-in-out; + transition: all 0.1s ease-in-out; + color: var(--bp-hello-color-primary); + } + + &.support:before { + content: "\f448"; + } + + &.twitter:before { + content: "\f301"; + } + } +} + +/*------------------------------------------------------------------------------ + * 3.0 - Elements + *----------------------------------------------------------------------------*/ + +/* + * 3.1 - Backdrop and container + */ +#bp-hello-backdrop { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 9998; + + display: none; +} + +#bp-hello-container { + position: fixed; + top: 0; + bottom: 80px; + z-index: 99999; +} + +.bp-disable-scroll { + overflow: hidden; +} + +/* + * 3.2 - Modal footer + */ +.bp-hello-footer { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + + height: 58px; + max-height: 58px; +} + +.bp-hello-social-cta, +.bp-hello-social-links { + -ms-flex-preferred-size: 50%; + flex-basis: 50%; +} + +.bp-hello-social-links { + + ul { + display: inline-block; + } +} + +.bp-hello-social { + + li { + position: relative; + bottom: -5px; + display: inline-block; + list-style-type: none; + margin-bottom: 0; + + &:last-child a { + margin-left: 4px; + } + } +} + +/* + * 3.3 - Modal header + */ +.bp-hello-header { + height: 58px; + max-height: 58px; +} + +/* + * 3.4 - Modal content + */ +.bp-hello-content { + padding: 0 25px; + + // Force scrolling. + height: calc(100% - 58px); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*------------------------------------------------------------------------------ + * 4.0 - Content styles + *----------------------------------------------------------------------------*/ + +/* + * 4.1 - Backdrop and container + */ +#bp-hello-backdrop { + background-color: rgba(0, 0, 0, 0.8); + -webkit-transition: opacity 0.15s ease-out; + -o-transition: opacity 0.15s ease-out; + transition: opacity 0.15s ease-out; +} + +#bp-hello-container { + background-color: rgb(255, 255, 255); +} + +/* + * 4.2 - Footer content + */ +.bp-hello-footer { + border-radius: 0 0 3px 3px; + background-color: rgb(255, 255, 255); + border-top: 1px solid var(--bp-hello-color-secondary); + padding: 6px 25px; + + p { + font-size: 15px; + } +} + +.bp-hello-social-cta { + text-align: left; +} + +.bp-hello-social-links { + text-align: right; +} + +.bp-hello-social { + + li { + + a { + text-decoration: none; + } + } +} + +/* + * 4.3 - Header content + */ +.bp-hello-header { + padding: 6px 25px; + + h1 { + width: calc(100% - 51px); // Approx. width of "X" button block. + } +} + +#bp-hello-container { + + .bp-hello-header { + border-bottom: 1px solid var(--bp-hello-color-secondary); + } +} + +.bp-hello-title { + text-align: left; +} + +.bp-hello-close { + position: absolute; + top: 20px; + right: 25px; + text-align: right; +} + +/* + * 4.4 - Content content + */ +.bp-hello-content { + background-color: rgb(255, 255, 255); +} + +/*------------------------------------------------------------------------------ + * 5.0 - Media + *----------------------------------------------------------------------------*/ +.bp-hello-content { + + img { + border-radius: 2px; + max-width: 100%; + } + + iframe { + width: 100%; + } +} + +/*------------------------------------------------------------------------------ + * 6.0 - Media Queries + *----------------------------------------------------------------------------*/ + +/* + * 6.1 - Desktop Medium + */ +@media only screen and (min-width: 1024px) { + + #bp-hello-backdrop { + display: block; + } + + #bp-hello-container { + position: fixed; + top: 60px; + left: var(--bp-hello-container-size); + right: var(--bp-hello-container-size); + bottom: 30px; + z-index: 9999; + + border-radius: 3px; + + .bp-hello-header { + + h1 { + line-height: inherit; + } + } + } + + .bp-hello-header { + height: auto; + max-height: inherit; + padding: 6px 30px; + } + + .bp-hello-close { + right: 30px; + + .close-modal:before { + line-height: 0.7; + } + } + + .bp-hello-footer { + position: fixed; // Fixed position above "content" div. + left: var(--bp-hello-container-size); + right: var(--bp-hello-container-size); + bottom: 30px; + z-index: 10000; // See #bp-hello-backdrop + + height: auto; + max-height: inherit; + + padding: 6px 30px; + } + + .bp-hello-content { + // Very very approx. height of header and footer. + height: calc(100% - 90px); + padding: 0 30px; + + p { + font-size: 14px; + } + + iframe { + height: 100%; + } + } +} + +/** + * 6.2 - Desktop Large + */ +@media screen and (min-width: 1280px) { + + #bp-hello-container, + .bp-hello-footer { + // Approx. max-width of modal at Desktop Medium size. + left: calc((100% - 896px) / 2); + right: calc((100% - 896px) / 2); + } +} 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 6e2ad3857548c2b34f9d47307e7d2b8a4ef0076e..fe50c8a58ad403bfae642a5057c83b9453ebd30c 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-actions.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-actions.php @@ -85,6 +85,14 @@ add_action( 'bp_init', 'bp_add_permastructs', 40 ); */ add_action( 'bp_register_taxonomies', 'bp_register_member_types' ); +/** + * Late includes. + * + * Run after the canonical stack is setup to allow for conditional includes + * on certain pages. + */ +add_action( 'bp_setup_canonical_stack', 'bp_late_include', 20 ); + /** * The bp_template_redirect hook - Attached to 'template_redirect' above. * @@ -105,8 +113,9 @@ add_action( 'bp_template_redirect', 'bp_get_request', 10 ); /** * Add the BuddyPress functions file and the Theme Compat Default features. */ -add_action( 'bp_after_setup_theme', 'bp_load_theme_functions', 1 ); -add_action( 'bp_after_setup_theme', 'bp_register_theme_compat_default_features', 10 ); +add_action( 'bp_after_setup_theme', 'bp_check_theme_template_pack_dependency', -10 ); +add_action( 'bp_after_setup_theme', 'bp_load_theme_functions', 1 ); +add_action( 'bp_after_setup_theme', 'bp_register_theme_compat_default_features', 10 ); // Load the admin. if ( is_admin() ) { diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php b/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php index 91750d15b5ea83d99977b8d2f6ac81fcded7630e..0bb1159452e13591e2d6a2d18f8243b0ee739553 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-adminbar.php @@ -47,8 +47,6 @@ add_action( 'admin_bar_menu', 'bp_admin_bar_my_account_root', 100 ); * Handle the Toolbar/BuddyBar business. * * @since 1.2.0 - * - * @global string $wp_version */ function bp_core_load_admin_bar() { diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-attachments.php b/wp-content/plugins/buddypress/bp-core/bp-core-attachments.php index 2a321d32ddb9ed43b796b0a456227832f6d13b0f..794cdbd2ec1685bb5cb0636b5008cfe836a09be5 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-attachments.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-attachments.php @@ -18,11 +18,12 @@ defined( 'ABSPATH' ) || exit; * match with our needs. * * @since 2.3.0 + * @since 3.0.0 We now require WP >= 4.5, so this is always true. * - * @return bool True if WordPress is 3.9+, false otherwise. + * @return bool Always true. */ function bp_attachments_is_wp_version_supported() { - return (bool) version_compare( bp_get_major_wp_version(), '3.9', '>=' ); + return true; } /** @@ -83,6 +84,58 @@ function bp_attachments_uploads_dir_get( $data = '' ) { return apply_filters( 'bp_attachments_uploads_dir_get', $retval, $data ); } +/** + * Gets the upload dir array for cover images. + * + * @since 3.0.0 + * + * @return array See wp_upload_dir(). + */ +function bp_attachments_cover_image_upload_dir( $args = array() ) { + // Default values are for profiles. + $object_id = bp_displayed_user_id(); + + if ( empty( $object_id ) ) { + $object_id = bp_loggedin_user_id(); + } + + $object_directory = 'members'; + + // We're in a group, edit default values. + if ( bp_is_group() || bp_is_group_create() ) { + $object_id = bp_get_current_group_id(); + $object_directory = 'groups'; + } + + $r = bp_parse_args( $args, array( + 'object_id' => $object_id, + 'object_directory' => $object_directory, + ), 'cover_image_upload_dir' ); + + + // Set the subdir. + $subdir = '/' . $r['object_directory'] . '/' . $r['object_id'] . '/cover-image'; + + $upload_dir = bp_attachments_uploads_dir_get(); + + /** + * Filters the cover image upload directory. + * + * @since 2.4.0 + * + * @param array $value Array containing the path, URL, and other helpful settings. + * @param array $upload_dir The original Uploads dir. + */ + return apply_filters( 'bp_attachments_cover_image_upload_dir', array( + 'path' => $upload_dir['basedir'] . $subdir, + 'url' => set_url_scheme( $upload_dir['baseurl'] ) . $subdir, + 'subdir' => $subdir, + 'basedir' => $upload_dir['basedir'], + 'baseurl' => set_url_scheme( $upload_dir['baseurl'] ), + 'error' => false, + ), $upload_dir ); +} + /** * Get the max upload file size for any attachment. * @@ -265,7 +318,7 @@ function bp_attachments_create_item_type( $type = 'avatar', $args = array() ) { } // Make sure the file path is safe. - if ( 0 !== validate_file( $r['image'] ) ) { + if ( 1 === validate_file( $r['image'] ) ) { return false; } @@ -312,7 +365,7 @@ function bp_attachments_create_item_type( $type = 'avatar', $args = array() ) { $attachment_data = call_user_func_array( $r['component'] . '_avatar_upload_dir', $dir_args ); } } elseif ( 'cover_image' === $type ) { - $attachment_data = bp_attachments_uploads_dir_get(); + $attachment_data = bp_attachments_cover_image_upload_dir(); // The BP Attachments Uploads Dir is not set, stop. if ( ! $attachment_data ) { @@ -447,7 +500,7 @@ function bp_attachments_get_attachment( $data = 'url', $args = array() ) { $type_subdir = $r['object_dir'] . '/' . $r['item_id'] . '/' . $r['type']; $type_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $type_subdir; - if ( ! is_dir( $type_dir ) ) { + if ( 1 === validate_file( $type_dir ) || ! is_dir( $type_dir ) ) { return $attachment_data; } @@ -1130,8 +1183,10 @@ function bp_attachments_cover_image_generate_file( $args = array(), $cover_image $cover_image_class = new BP_Attachment_Cover_Image(); } + $upload_dir = bp_attachments_cover_image_upload_dir(); + // Make sure the file is inside the Cover Image Upload path. - if ( false === strpos( $args['file'], $cover_image_class->upload_path ) ) { + if ( false === strpos( $args['file'], $upload_dir['basedir'] ) ) { return false; } @@ -1189,36 +1244,27 @@ function bp_attachments_cover_image_generate_file( $args = array(), $cover_image * error message otherwise. */ function bp_attachments_cover_image_ajax_upload() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { wp_die(); } - /** - * Sending the json response will be different if - * the current Plupload runtime is html4 - */ - $is_html4 = false; - if ( ! empty( $_POST['html4' ] ) ) { - $is_html4 = true; - } - - // Check the nonce. check_admin_referer( 'bp-uploader' ); - // Init the BuddyPress parameters. - $bp_params = array(); + // Sending the json response will be different if the current Plupload runtime is html4. + $is_html4 = ! empty( $_POST['html4' ] ); - // We need it to carry on. - if ( ! empty( $_POST['bp_params'] ) ) { - $bp_params = bp_parse_args( $_POST['bp_params'], array( - 'object' => 'user', - 'item_id' => bp_loggedin_user_id(), - ), 'attachments_cover_image_ajax_upload' ); - } else { + if ( empty( $_POST['bp_params'] ) ) { bp_attachments_json_response( false, $is_html4 ); } + $bp_params = bp_parse_args( $_POST['bp_params'], array( + 'object' => 'user', + 'item_id' => bp_loggedin_user_id(), + ), 'attachments_cover_image_ajax_upload' ); + + $bp_params['item_id'] = (int) $bp_params['item_id']; + $bp_params['object'] = sanitize_text_field( $bp_params['object'] ); + // We need the object to set the uploads dir filter. if ( empty( $bp_params['object'] ) ) { bp_attachments_json_response( false, $is_html4 ); @@ -1297,11 +1343,9 @@ function bp_attachments_cover_image_ajax_upload() { ) ); } - // Default error message. $error_message = __( 'There was a problem uploading the cover image.', 'buddypress' ); - // Get BuddyPress Attachments Uploads Dir datas. - $bp_attachments_uploads_dir = bp_attachments_uploads_dir_get(); + $bp_attachments_uploads_dir = bp_attachments_cover_image_upload_dir(); // The BP Attachments Uploads Dir is not set, stop. if ( ! $bp_attachments_uploads_dir ) { @@ -1314,7 +1358,7 @@ function bp_attachments_cover_image_ajax_upload() { $cover_subdir = $object_data['dir'] . '/' . $bp_params['item_id'] . '/cover-image'; $cover_dir = trailingslashit( $bp_attachments_uploads_dir['basedir'] ) . $cover_subdir; - if ( ! is_dir( $cover_dir ) ) { + if ( 1 === validate_file( $cover_dir ) || ! is_dir( $cover_dir ) ) { // Upload error response. bp_attachments_json_response( false, $is_html4, array( 'type' => 'upload_error', @@ -1322,10 +1366,10 @@ function bp_attachments_cover_image_ajax_upload() { ) ); } - /** + /* * Generate the cover image so that it fit to feature's dimensions * - * Unlike the Avatar, Uploading and generating the cover image is happening during + * Unlike the avatar, uploading and generating the cover image is happening during * the same Ajax request, as we already instantiated the BP_Attachment_Cover_Image * class, let's use it. */ @@ -1336,17 +1380,15 @@ function bp_attachments_cover_image_ajax_upload() { ), $cover_image_attachment ); if ( ! $cover ) { - // Upload error response. bp_attachments_json_response( false, $is_html4, array( 'type' => 'upload_error', 'message' => $error_message, ) ); } - // Build the url to the file. $cover_url = trailingslashit( $bp_attachments_uploads_dir['baseurl'] ) . $cover_subdir . '/' . $cover['cover_basename']; - // Init Feedback code, 1 is success. + // 1 is success. $feedback_code = 1; // 0 is the size warning. @@ -1368,10 +1410,20 @@ function bp_attachments_cover_image_ajax_upload() { * code once the user has set his cover image. * * @since 2.4.0 + * @since 3.0.0 Added $cover_url, $name, $feedback_code arguments. * - * @param int $item_id Inform about the item id the cover image was set for. + * @param int $item_id Inform about the item id the cover image was set for. + * @param string $name Filename. + * @param string $cover_url URL to the image. + * @param int $feedback_code If value not 1, an error occured. */ - do_action( $object_data['component'] . '_cover_image_uploaded', (int) $bp_params['item_id'] ); + do_action( + $object_data['component'] . '_cover_image_uploaded', + (int) $bp_params['item_id'], + $name, + $cover_url, + $feedback_code + ); // Finally return the cover image url to the UI. bp_attachments_json_response( true, $is_html4, array( @@ -1391,38 +1443,38 @@ add_action( 'wp_ajax_bp_cover_image_upload', 'bp_attachments_cover_image_ajax_up * error message otherwise. */ function bp_attachments_cover_image_ajax_delete() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { wp_send_json_error(); } - $cover_image_data = $_POST; - - if ( empty( $cover_image_data['object'] ) || empty( $cover_image_data['item_id'] ) ) { + if ( empty( $_POST['object'] ) || empty( $_POST['item_id'] ) ) { wp_send_json_error(); } - // Check the nonce. - check_admin_referer( 'bp_delete_cover_image', 'nonce' ); + $args = array( + 'object' => sanitize_text_field( $_POST['object'] ), + 'item_id' => (int) $_POST['item_id'], + ); - // Capability check. - if ( ! bp_attachments_current_user_can( 'edit_cover_image', $cover_image_data ) ) { + // Check permissions. + check_admin_referer( 'bp_delete_cover_image', 'nonce' ); + if ( ! bp_attachments_current_user_can( 'edit_cover_image', $args ) ) { wp_send_json_error(); } // Set object for the user's case. - if ( 'user' === $cover_image_data['object'] ) { + if ( 'user' === $args['object'] ) { $component = 'xprofile'; $dir = 'members'; // Set it for any other cases. } else { - $component = $cover_image_data['object'] . 's'; + $component = $args['object'] . 's'; $dir = $component; } // Handle delete. - if ( bp_attachments_delete_file( array( 'item_id' => $cover_image_data['item_id'], 'object_dir' => $dir, 'type' => 'cover-image' ) ) ) { + if ( bp_attachments_delete_file( array( 'item_id' => $args['item_id'], 'object_dir' => $dir, 'type' => 'cover-image' ) ) ) { /** * Fires if the cover image was successfully deleted. * @@ -1435,12 +1487,11 @@ function bp_attachments_cover_image_ajax_delete() { * * @param int $item_id Inform about the item id the cover image was deleted for. */ - do_action( "{$component}_cover_image_deleted", (int) $cover_image_data['item_id'] ); + do_action( "{$component}_cover_image_deleted", (int) $args['item_id'] ); - // Defaults no cover image. $response = array( 'reset_url' => '', - 'feedback_code' => 3 , + 'feedback_code' => 3, ); // Get cover image settings in case there's a default header. @@ -1451,7 +1502,6 @@ function bp_attachments_cover_image_ajax_delete() { $response['reset_url'] = $cover_params['default_cover']; } - // Finally send the reset url. wp_send_json_success( $response ); } else { diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php b/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php index 293c8725e61ff2c3edee1c74904499a34d5ee006..eea116217c0058b0b56e9a01cfeb9db9d8f723d1 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-avatars.php @@ -809,8 +809,7 @@ function bp_core_delete_existing_avatar( $args = '' ) { * error message otherwise. */ function bp_avatar_ajax_delete() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { wp_send_json_error(); } @@ -952,8 +951,7 @@ function bp_core_avatar_handle_upload( $file, $upload_dir_filter ) { * error message otherwise. */ function bp_avatar_ajax_upload() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { wp_die(); } @@ -1237,8 +1235,7 @@ function bp_core_avatar_handle_crop( $args = '' ) { * error message otherwise. */ function bp_avatar_ajax_set() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { wp_send_json_error(); } diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php b/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php index be4408069e9fb526037240ada0537163ead5c6f5..ebdd21cb6f4895db226b115c868d1eef228772f6 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-buddybar.php @@ -608,6 +608,11 @@ function bp_core_register_subnav_screen_function( $args = '', $component = 'memb } $parent_nav = $bp->{$component}->nav->get_primary( array( 'slug' => $r['parent_slug'] ), false ); + if ( ! $parent_nav ) { + return ; + } + + $parent_nav = reset( $parent_nav ); // If we *do* meet condition (2), then the added subnav item is currently being requested. if ( ( bp_current_action() && bp_is_current_action( $r['slug'] ) ) || ( bp_is_user() && ! bp_current_action() && ! empty( $parent_nav->screen_function ) && $r['screen_function'] == $parent_nav->screen_function ) ) { @@ -670,10 +675,9 @@ function bp_core_maybe_hook_new_subnav_screen_function( $subnav_item, $component $bp = buddypress(); - // If a redirect URL has been passed to the subnav - // item, respect it. + // If a redirect URL has been passed to the subnav item, respect it. if ( ! empty( $subnav_item['no_access_url'] ) ) { - $message = __( 'You do not have access to this page.', 'buddypress' ); + $message = __( 'You do not have access to that page.', 'buddypress' ); $redirect_to = trailingslashit( $subnav_item['no_access_url'] ); // In the case of a user page, we try to assume a @@ -689,7 +693,7 @@ function bp_core_maybe_hook_new_subnav_screen_function( $subnav_item, $component // component, as long as that component is // publicly accessible. if ( bp_is_my_profile() || ( isset( $parent_nav_default_item ) && $parent_nav_default_item->show_for_displayed_user ) ) { - $message = __( 'You do not have access to this page.', 'buddypress' ); + $message = __( 'You do not have access to that page.', 'buddypress' ); $redirect_to = bp_displayed_user_domain(); // In some cases, the default tab is not accessible to @@ -717,6 +721,7 @@ function bp_core_maybe_hook_new_subnav_screen_function( $subnav_item, $component 'message' => $message, 'root' => $redirect_to, 'redirect' => false, + 'mode' => 1 ); } else { 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 bd73b37af7c499bce1bd1f08ece93ed5022399bf..5cf0d9c0718ed48c69b92fa25593eaf6af48aaff 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-cache.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-cache.php @@ -306,6 +306,23 @@ function bp_core_set_incremented_cache( $key, $group, $ids ) { return wp_cache_set( $cache_key, $ids, $group ); } +/** + * Delete a value that has been cached using an incremented key. + * + * A utility function for use by query methods like BP_Activity_Activity::get(). + * + * @since 3.0.0 + * @see bp_core_set_incremented_cache() + * + * @param string $key Unique key for the query. Usually a SQL string. + * @param string $group Cache group. Eg 'bp_activity'. + * @return bool True on successful removal, false on failure. + */ +function bp_core_delete_incremented_cache( $key, $group ) { + $cache_key = bp_core_get_incremented_cache_key( $key, $group ); + return wp_cache_delete( $cache_key, $group ); +} + /** * Gets the key to be used when caching a value using an incremented cache key. * diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-customizer-email.php b/wp-content/plugins/buddypress/bp-core/bp-core-customizer-email.php index 2ffe9f0c966fa33c4571c9b4e9c0b191e4eb921b..4c5e94611ba0b3fd296989bd1adb0800fc4a9dbc 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-customizer-email.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-customizer-email.php @@ -18,12 +18,6 @@ defined( 'ABSPATH' ) || exit; * @param WP_Customize_Manager $wp_customize The Customizer object. */ function bp_email_init_customizer( WP_Customize_Manager $wp_customize ) { - - // Require WP 4.0+. - if ( ! method_exists( $wp_customize, 'add_panel' ) ) { - return; - } - if ( ! bp_is_email_customizer() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) { return; } 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 f1791ecb8790d89d534e09163a738995fa5215fb..71e6fc5e042caa33b4c387b93c8e22eee3e72d6b 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-dependency.php @@ -33,6 +33,23 @@ function bp_include() { do_action( 'bp_include' ); } +/** + * Fire the 'bp_late_include' action for loading conditional files. + * + * @since 3.0.0 + */ +function bp_late_include() { + + /** + * Fires the 'bp_late_include' action. + * + * Allow for conditional includes on certain pages. + * + * @since 3.0.0 + */ + do_action( 'bp_late_include' ); +} + /** * Fire the 'bp_setup_components' action, where plugins should initialize components. * 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 8d3be6e719b775669bf5b139d0fd1cc67d2cebed..5844743ff83fdc20d9554bba3bd62e6b641594e7 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-filters.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-filters.php @@ -101,9 +101,6 @@ function bp_core_exclude_pages( $pages = array() ) { if ( !empty( $bp->pages->register ) ) $pages[] = $bp->pages->register->id; - if ( !empty( $bp->pages->forums ) && ( !bp_is_active( 'forums' ) || ( bp_is_active( 'forums' ) && bp_forums_has_directory() && !bp_forums_is_installed_correctly() ) ) ) - $pages[] = $bp->pages->forums->id; - /** * Filters specific pages that shouldn't show up on page listings. * @@ -967,7 +964,7 @@ function bp_email_add_link_color_to_template( $value, $property_name, $transform } $settings = bp_email_get_appearance_settings(); - $replacement = 'style="color: ' . esc_attr( $settings['highlight_color'] ) . ';'; + $replacement = 'style="color: ' . esc_attr( $settings['link_text_color'] ) . ';'; // Find all links. preg_match_all( '#<a[^>]+>#i', $value, $links, PREG_SET_ORDER ); @@ -1008,16 +1005,17 @@ function bp_email_set_default_headers( $headers, $property, $transform, $email ) $tokens = $email->get_tokens(); // Add 'List-Unsubscribe' header if applicable. - if ( ! empty( $tokens['unsubscribe'] ) && $tokens['unsubscribe'] !== site_url( 'wp-login.php' ) ) { + if ( ! empty( $tokens['unsubscribe'] ) && $tokens['unsubscribe'] !== wp_login_url() ) { $user = get_user_by( 'email', $tokens['recipient.email'] ); - $headers['List-Unsubscribe'] = sprintf( - '<%s>', - esc_url_raw( bp_email_get_unsubscribe_link( array( - 'user_id' => $user->ID, - 'notification_type' => $email->get( 'type' ), - ) ) ) - ); + $link = bp_email_get_unsubscribe_link( array( + 'user_id' => $user->ID, + 'notification_type' => $email->get( 'type' ), + ) ); + + if ( ! empty( $link ) ) { + $headers['List-Unsubscribe'] = sprintf( '<%s>', esc_url_raw( $link ) ); + } } return $headers; @@ -1038,6 +1036,7 @@ add_filter( 'bp_email_get_headers', 'bp_email_set_default_headers', 6, 4 ); function bp_email_set_default_tokens( $tokens, $property_name, $transform, $email ) { $tokens['site.admin-email'] = bp_get_option( 'admin_email' ); $tokens['site.url'] = home_url(); + $tokens['email.subject'] = $email->get_subject(); // These options are escaped with esc_html on the way into the database in sanitize_option(). $tokens['site.description'] = wp_specialchars_decode( bp_get_option( 'blogdescription' ), ENT_QUOTES ); @@ -1049,7 +1048,6 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai $tokens['recipient.name'] = ''; $tokens['recipient.username'] = ''; - // Who is the email going to? $recipient = $email->get( 'to' ); if ( $recipient ) { @@ -1065,6 +1063,7 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai if ( $user_obj ) { $tokens['recipient.username'] = $user_obj->user_login; + if ( bp_is_active( 'settings' ) && empty( $tokens['unsubscribe'] ) ) { $tokens['unsubscribe'] = esc_url( sprintf( '%s%s/notifications/', @@ -1077,7 +1076,7 @@ function bp_email_set_default_tokens( $tokens, $property_name, $transform, $emai // Set default unsubscribe link if not passed. if ( empty( $tokens['unsubscribe'] ) ) { - $tokens['unsubscribe'] = site_url( 'wp-login.php' ); + $tokens['unsubscribe'] = wp_login_url(); } // Email preheader. @@ -1132,7 +1131,7 @@ function bp_core_render_email_template( $template ) { // Make sure we add a <title> tag so WP Customizer picks it up. $template = str_replace( '<head>', '<head><title>' . esc_html_x( 'BuddyPress Emails', 'screen heading', 'buddypress' ) . '</title>', $template ); - echo str_replace( '{{{content}}}', nl2br( get_post()->post_content ), $template ); + echo str_replace( '{{{content}}}', wpautop( get_post()->post_content ), $template ); /* * Link colours are applied directly in the email template before sending, so we 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 2b5a6ebe536cf12e7a9abeaebc5d798b2fd78249..57c1de3ae1c0703557f8b3599b69bfdaee81fd42 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-functions.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-functions.php @@ -445,6 +445,27 @@ function bp_use_wp_admin_bar() { return (bool) apply_filters( 'bp_use_wp_admin_bar', $use_admin_bar ); } + +/** + * Return the parent forum ID for the Legacy Forums abstraction layer. + * + * @since 1.5.0 + * @since 3.0.0 Supported for compatibility with bbPress 2. + * + * @return int Forum ID. + */ +function bp_forums_parent_forum_id() { + + /** + * Filters the parent forum ID for the bbPress abstraction layer. + * + * @since 1.5.0 + * + * @param int BP_FORUMS_PARENT_FORUM_ID The Parent forum ID constant. + */ + return apply_filters( 'bp_forums_parent_forum_id', BP_FORUMS_PARENT_FORUM_ID ); +} + /** Directory *****************************************************************/ /** @@ -467,12 +488,6 @@ function bp_core_get_packaged_component_ids() { 'notifications', ); - // Only add legacy forums if it is enabled - // prevents conflicts with bbPress, which also uses the same 'forums' id. - if ( class_exists( 'BP_Forums_Component' ) ) { - $components[] = 'forums'; - } - return $components; } @@ -1022,7 +1037,11 @@ function bp_core_redirect( $location = '', $status = 302 ) { buddypress()->no_status_set = true; wp_safe_redirect( $location, $status ); - die; + + // If PHPUnit is running, do not kill execution. + if ( ! defined( 'BP_TESTS_DIR' ) ) { + die; + } } /** @@ -1729,26 +1748,6 @@ function bp_use_embed_in_activity_replies() { return apply_filters( 'bp_use_embed_in_activity_replies', !defined( 'BP_EMBED_DISABLE_ACTIVITY_REPLIES' ) || !BP_EMBED_DISABLE_ACTIVITY_REPLIES ); } -/** - * Are oembeds allowed in forum posts? - * - * @since 1.5.0 - * - * @return bool False when forum post embed support is disabled; true when - * enabled. Default: true. - */ -function bp_use_embed_in_forum_posts() { - - /** - * Filters whether or not oEmbeds are allowed in forum posts. - * - * @since 1.5.0 - * - * @param bool $value Whether or not oEmbeds are allowed. - */ - return apply_filters( 'bp_use_embed_in_forum_posts', !defined( 'BP_EMBED_DISABLE_FORUM_POSTS' ) || !BP_EMBED_DISABLE_FORUM_POSTS ); -} - /** * Are oembeds allowed in private messages? * @@ -2355,11 +2354,6 @@ function bp_core_action_search_site( $slug = '' ) { $slug = bp_is_active( 'blogs' ) ? bp_get_blogs_root_slug() : ''; break; - case 'forums': - $slug = bp_is_active( 'forums' ) ? bp_get_forums_root_slug() : ''; - $query_string = '/?fs='; - break; - case 'groups': $slug = bp_is_active( 'groups' ) ? bp_get_groups_root_slug() : ''; break; @@ -2463,10 +2457,6 @@ function bp_core_get_components( $type = 'all' ) { ); $retired_components = array( - 'forums' => array( - 'title' => __( 'Group Forums', 'buddypress' ), - 'description' => sprintf( __( 'BuddyPress Forums are retired. Use %s.', 'buddypress' ), '<a href="https://bbpress.org/">bbPress</a>' ) - ), ); $optional_components = array( @@ -2498,10 +2488,6 @@ function bp_core_get_components( $type = 'all' ) { 'title' => __( 'User Groups', 'buddypress' ), 'description' => __( 'Groups allow your users to organize themselves into specific public, private or hidden sections with separate activity streams and member listings.', 'buddypress' ) ), - 'forums' => array( - 'title' => __( 'Group Forums (Legacy)', 'buddypress' ), - 'description' => __( 'Group forums allow for focused, bulletin-board style conversations.', 'buddypress' ) - ), 'blogs' => array( 'title' => __( 'Site Tracking', 'buddypress' ), 'description' => __( 'Record activity for new posts and comments from your site.', 'buddypress' ) @@ -3242,6 +3228,8 @@ function bp_send_email( $email_type, $to, $args = array() ) { * Return email appearance settings. * * @since 2.5.0 + * @since 3.0.0 Added "direction" parameter for LTR/RTL email support, and + * "link_text_color" to override that in the email body. * * @return array */ @@ -3258,6 +3246,7 @@ function bp_email_get_appearance_settings() { 'highlight_color' => '#D84800', 'header_text_color' => '#000000', 'header_text_size' => 30, + 'direction' => is_rtl() ? 'right' : 'left', 'footer_text' => sprintf( /* translators: email disclaimer, e.g. "© 2016 Site Name". */ @@ -3267,11 +3256,18 @@ function bp_email_get_appearance_settings() { ), ); - return bp_parse_args( + $options = bp_parse_args( bp_get_option( 'bp_email_options', array() ), $default_args, 'email_appearance_settings' ); + + // Link text colour defaults to the highlight colour. + if ( ! isset( $options['link_text_color'] ) ) { + $options['link_text_color'] = $options['highlight_color']; + } + + return $options; } /** @@ -3294,6 +3290,7 @@ function bp_email_get_template( WP_Post $object ) { * @param WP_Post $object WP_Post object. */ return apply_filters( 'bp_email_get_template', array( + "assets/emails/{$single}-{$object->post_name}.php", "{$single}-{$object->post_name}.php", "{$single}.php", "assets/emails/{$single}.php", @@ -3390,7 +3387,7 @@ function bp_email_get_schema() { /* translators: do not remove {} brackets or translate its contents. */ 'post_content' => __( "Thanks for registering!\n\nTo complete the activation of your account, go to the following link: <a href=\"{{{activate.url}}}\">{{{activate.url}}}</a>", 'buddypress' ), /* translators: do not remove {} brackets or translate its contents. */ - 'post_excerpt' => __( "Thanks for registering!\n\nTo complete the activation of your account, go to the following link: {{{activate.url}}}", 'buddypress' ), + 'post_excerpt' => __( "Thanks for registering!\n\nTo complete the activation of your account, go to the following link: {{{activate.url}}}", 'buddypress' ) ), 'core-user-registration-with-blog' => array( /* translators: do not remove {} brackets or translate its contents. */ @@ -3399,6 +3396,9 @@ function bp_email_get_schema() { 'post_content' => __( "Thanks for registering!\n\nTo complete the activation of your account and site, go to the following link: <a href=\"{{{activate-site.url}}}\">{{{activate-site.url}}}</a>.\n\nAfter you activate, you can visit your site at <a href=\"{{{user-site.url}}}\">{{{user-site.url}}}</a>.", 'buddypress' ), /* translators: do not remove {} brackets or translate its contents. */ 'post_excerpt' => __( "Thanks for registering!\n\nTo complete the activation of your account and site, go to the following link: {{{activate-site.url}}}\n\nAfter you activate, you can visit your site at {{{user-site.url}}}.", 'buddypress' ), + 'args' => array( + 'multisite' => true, + ), ), 'friends-request' => array( /* translators: do not remove {} brackets or translate its contents. */ @@ -3568,14 +3568,6 @@ function bp_email_get_type_schema( $field = 'description' ) { ), ); - $groups_details_updated = array( - 'description' => __( "A group's details were updated.", 'buddypress' ), - 'unsubscribe' => array( - 'meta_key' => 'notification_groups_group_updated', - 'message' => __( 'You will no longer receive emails when one of your groups is updated.', 'buddypress' ), - ), - ); - $groups_invitation = array( 'description' => __( 'A member has sent a group invitation to the recipient.', 'buddypress' ), 'unsubscribe' => array( @@ -3592,14 +3584,6 @@ function bp_email_get_type_schema( $field = 'description' ) { ), ); - $groups_member_promoted = array( - 'description' => __( "Recipient's status within a group has changed.", 'buddypress' ), - 'unsubscribe' => array( - 'meta_key' => 'notification_groups_admin_promotion', - 'message' => __( 'You will no longer receive emails when you have been promoted in a group.', 'buddypress' ), - ), - ); - $groups_membership_request = array( 'description' => __( 'A member has requested permission to join a group.', 'buddypress' ), 'unsubscribe' => array( @@ -3677,13 +3661,13 @@ function bp_email_unsubscribe_handler() { // Check required values. if ( ! $raw_user_id || ! $raw_email_type || ! $raw_hash || ! array_key_exists( $raw_email_type, $emails ) ) { - $redirect_to = site_url( 'wp-login.php' ); + $redirect_to = wp_login_url(); $result_msg = __( 'Something has gone wrong.', 'buddypress' ); $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' ); // Check valid hash. } elseif ( ! hash_equals( $new_hash, $raw_hash ) ) { - $redirect_to = site_url( 'wp-login.php' ); + $redirect_to = wp_login_url(); $result_msg = __( 'Something has gone wrong.', 'buddypress' ); $unsub_msg = __( 'Please log in and go to your settings to unsubscribe from notification emails.', 'buddypress' ); @@ -3753,7 +3737,7 @@ function bp_email_get_unsubscribe_link( $args ) { $emails = bp_email_get_unsubscribe_type_schema(); if ( empty( $args['notification_type'] ) || ! array_key_exists( $args['notification_type'], $emails ) ) { - return site_url( 'wp-login.php' ); + return wp_login_url(); } $email_type = $args['notification_type']; @@ -3816,3 +3800,52 @@ function bp_email_get_unsubscribe_type_schema() { */ return (array) apply_filters( 'bp_email_get_unsubscribe_type_schema', $emails ); } + +/** + * Get BuddyPress content allowed tags. + * + * @since 3.0.0 + * + * @global array $allowedtags KSES allowed HTML elements. + * @return array BuddyPress content allowed tags. + */ +function bp_get_allowedtags() { + global $allowedtags; + + return array_merge_recursive( $allowedtags, array( + 'a' => array( + 'aria-label' => array(), + 'class' => array(), + 'data-bp-tooltip' => array(), + 'id' => array(), + 'rel' => array(), + ), + 'img' => array( + 'src' => array(), + 'alt' => array(), + 'width' => array(), + 'height' => array(), + 'class' => array(), + 'id' => array(), + ), + 'span'=> array( + 'class' => array(), + 'data-livestamp' => array(), + ), + 'ul' => array(), + 'ol' => array(), + 'li' => array(), + ) ); +} + +/** + * Remove script and style tags from a string. + * + * @since 3.0.1 + * + * @param string $string The string to strip tags from. + * @return string The stripped tags string. + */ +function bp_strip_script_and_style_tags( $string ) { + return preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $string ); +} diff --git a/wp-content/plugins/buddypress/bp-core/bp-core-options.php b/wp-content/plugins/buddypress/bp-core/bp-core-options.php index 86d376a0dad95eb2579bccf1fb594b1218f20573..7a88ca5513c895fd5d22434d89fc592b5716c61d 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-options.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-options.php @@ -29,11 +29,6 @@ function bp_get_default_options() { 'bp-deactivated-components' => array(), - /* bbPress ***********************************************************/ - - // Legacy bbPress config location. - 'bb-config-location' => ABSPATH . 'bb-config.php', - /* XProfile **********************************************************/ // Base profile groups name. @@ -70,11 +65,11 @@ function bp_get_default_options() { // Allow users to delete their own accounts. 'bp-disable-account-deletion' => false, - // Allow comments on blog and forum activity items. + // Allow comments on post and comment activity items. 'bp-disable-blogforum-comments' => true, // The ID for the current theme package. - '_bp_theme_package_id' => 'legacy', + '_bp_theme_package_id' => 'nouveau', // Email unsubscribe salt. 'bp-emails-unsubscribe-salt' => '', @@ -626,7 +621,7 @@ function bp_disable_account_deletion( $default = false ) { } /** - * Are blog and forum activity stream comments disabled? + * Are post/comment activity stream comments disabled? * * @since 1.6.0 * @@ -693,57 +688,6 @@ function bp_force_buddybar( $default = true ) { return (bool) apply_filters( 'bp_force_buddybar', (bool) bp_get_option( '_bp_force_buddybar', $default ) ); } -/** - * Output the group forums root parent forum id. - * - * @since 1.6.0 - * - * @param bool|string $default Optional. Default: '0'. - */ -function bp_group_forums_root_id( $default = '0' ) { - echo bp_get_group_forums_root_id( $default ); -} - /** - * Return the group forums root parent forum id. - * - * @since 1.6.0 - * - * @param bool|string $default Optional. Default: '0'. - * @return int The ID of the group forums root forum. - */ - function bp_get_group_forums_root_id( $default = '0' ) { - - /** - * Filters the group forums root parent forum id. - * - * @since 1.6.0 - * - * @param int $value The group forums root parent forum id. - */ - return (int) apply_filters( 'bp_get_group_forums_root_id', (int) bp_get_option( '_bp_group_forums_root_id', $default ) ); - } - -/** - * Check whether BuddyPress Group Forums are enabled. - * - * @since 1.6.0 - * - * @param bool $default Optional. Fallback value if not found in the database. - * Default: true. - * @return bool True if group forums are active, otherwise false. - */ -function bp_is_group_forums_active( $default = true ) { - - /** - * Filters whether or not BuddyPress Group Forums are enabled. - * - * @since 1.6.0 - * - * @param bool $value Whether or not BuddyPress Group Forums are enabled. - */ - return (bool) apply_filters( 'bp_is_group_forums_active', (bool) bp_get_option( '_bp_enable_group_forums', $default ) ); -} - /** * Check whether Akismet is enabled. * 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 21825050f3a4babe5a2f6cb18559bd88dcc6dc32..b0b21e28985036c0cdd79ff6689ea379aba2fab2 100644 --- a/wp-content/plugins/buddypress/bp-core/bp-core-template.php +++ b/wp-content/plugins/buddypress/bp-core/bp-core-template.php @@ -550,10 +550,6 @@ function bp_search_form_type_select() { $options['blogs'] = _x( 'Blogs', 'search form', 'buddypress' ); } - if ( bp_is_active( 'forums' ) && bp_forums_is_installed_correctly() && bp_forums_has_directory() ) { - $options['forums'] = _x( 'Forums', 'search form', 'buddypress' ); - } - $options['posts'] = _x( 'Posts', 'search form', 'buddypress' ); // Eventually this won't be needed and a page will be built to integrate all search results. @@ -796,7 +792,14 @@ function bp_form_field_attributes( $name = '', $attributes = array() ) { $attributes = (array) apply_filters( 'bp_get_form_field_attributes', $attributes, $name ); foreach( $attributes as $attr => $value ) { - $retval .= sprintf( ' %s="%s"', sanitize_key( $attr ), esc_attr( $value ) ); + // Numeric keyed array. + if (is_numeric( $attr ) ) { + $retval .= sprintf( ' %s', esc_attr( $value ) ); + + // Associative keyed array. + } else { + $retval .= sprintf( ' %s="%s"', sanitize_key( $attr ), esc_attr( $value ) ); + } } return $retval; @@ -1154,10 +1157,7 @@ function bp_blog_signup_allowed() { * otherwise false. */ function bp_account_was_activated() { - $bp = buddypress(); - $activation_complete = !empty( $bp->activation_complete ) - ? $bp->activation_complete - : false; + $activation_complete = ! empty( buddypress()->activation_complete ) || ( bp_is_current_component( 'activate' ) && ! empty( $_GET['activated'] ) ); return $activation_complete; } @@ -2199,6 +2199,7 @@ function bp_is_groups_component() { * Check whether the current page is part of the Forums component. * * @since 1.5.0 + * @since 3.0.0 Required for bbPress 2 integration. * * @return bool True if the current page is part of the Forums component. */ @@ -2472,54 +2473,6 @@ function bp_is_user_change_cover_image() { return (bool) ( bp_is_profile_component() && bp_is_current_action( 'change-cover-image' ) ); } -/** - * Is this a user's forums page? - * - * Eg http://example.com/members/joe/forums/ (or a subpage thereof). - * - * @since 1.5.0 - * - * @return bool True if the current page is a user's forums page. - */ -function bp_is_user_forums() { - - if ( ! bp_is_active( 'forums' ) ) { - return false; - } - - if ( bp_is_user() && bp_is_forums_component() ) { - return true; - } - - return false; -} - -/** - * Is this a user's "Topics Started" page? - * - * Eg http://example.com/members/joe/forums/topics/. - * - * @since 1.5.0 - * - * @return bool True if the current page is a user's Topics Started page. - */ -function bp_is_user_forums_started() { - return (bool) ( bp_is_user_forums() && bp_is_current_action( 'topics' ) ); -} - -/** - * Is this a user's "Replied To" page? - * - * Eg http://example.com/members/joe/forums/replies/. - * - * @since 1.5.0 - * - * @return bool True if the current page is a user's Replied To forums page. - */ -function bp_is_user_forums_replied_to() { - return (bool) ( bp_is_user_forums() && bp_is_current_action( 'replies' ) ); -} - /** * Is the current page part of a user's Groups page? * @@ -2754,32 +2707,6 @@ function bp_is_group_admin_page() { return (bool) ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'admin' ) ); } -/** - * Is the current page a group's forum page? - * - * Only applies to legacy bbPress forums. - * - * @since 1.1.0 - * - * @return bool True if the current page is a group forum page. - */ -function bp_is_group_forum() { - $retval = false; - - // At a forum URL. - if ( bp_is_single_item() && bp_is_groups_component() && bp_is_current_action( 'forum' ) ) { - $retval = true; - - // If at a forum URL, set back to false if forums are inactive, or not - // installed correctly. - if ( ! bp_is_active( 'forums' ) || ! bp_forums_is_installed_correctly() ) { - $retval = false; - } - } - - return $retval; -} - /** * Is the current page a group's activity page? * @@ -2804,9 +2731,8 @@ function bp_is_group_activity() { /** * Is the current page a group forum topic? * - * Only applies to legacy bbPress (1.x) forums. - * * @since 1.1.0 + * @since 3.0.0 Required for bbPress 2 integration. * * @return bool True if the current page is part of a group forum topic. */ @@ -2817,9 +2743,8 @@ function bp_is_group_forum_topic() { /** * Is the current page a group forum topic edit page? * - * Only applies to legacy bbPress (1.x) forums. - * * @since 1.2.0 + * @since 3.0.0 Required for bbPress 2 integration. * * @return bool True if the current page is part of a group forum topic edit page. */ @@ -3416,18 +3341,6 @@ function bp_the_body_class() { $bp_classes[] = 'group-members'; } - if ( bp_is_group_forum_topic() ) { - $bp_classes[] = 'group-forum-topic'; - } - - if ( bp_is_group_forum_topic_edit() ) { - $bp_classes[] = 'group-forum-topic-edit'; - } - - if ( bp_is_group_forum() ) { - $bp_classes[] = 'group-forum'; - } - if ( bp_is_group_admin_page() ) { $bp_classes[] = 'group-admin'; $bp_classes[] = bp_get_group_current_admin_tab(); @@ -3525,9 +3438,6 @@ function bp_get_the_post_class( $wp_classes = array() ) { } elseif ( bp_is_activation_page() ) { $bp_classes[] = 'bp_activate'; - - } elseif ( bp_is_forums_component() && bp_is_directory() ) { - $bp_classes[] = 'bp_forum'; } if ( empty( $bp_classes ) ) { 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 74505bf8d58c6f59fe2fb33d8b5b6ccca1d5dfd6..429b14ece8001b04edde3644c021954dece33c09 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 @@ -987,3 +987,26 @@ function bp_theme_compat_loop_end( $query ) { unset( $bp->theme_compat->is_page_toggled ); } add_action( 'loop_end', 'bp_theme_compat_loop_end' ); + +/** + * Maybe override the preferred template pack if the theme declares a dependency. + * + * @since 3.0.0 + */ +function bp_check_theme_template_pack_dependency() { + if ( bp_is_deactivation() ) { + return; + } + + $all_packages = array_keys( buddypress()->theme_compat->packages ); + + foreach ( $all_packages as $package ) { + // e.g. "buddypress-use-nouveau", "buddypress-use-legacy". + if ( ! current_theme_supports( "buddypress-use-{$package}" ) ) { + continue; + } + + bp_setup_theme_compat( $package ); + return; + } +} 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 7535f474bc86d288c758e3eac5e53ce15a072451..dfa42d12e8d4b70b23f06ccd6c7e273d316ba2b6 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 @@ -155,8 +155,8 @@ class BP_Admin { // Add settings. add_action( 'bp_register_admin_settings', array( $this, 'register_admin_settings' ) ); - // Add a link to BuddyPress About page to the admin bar. - add_action( 'admin_bar_menu', array( $this, 'admin_bar_about_link' ), 15 ); + // Add a link to BuddyPress Hello in the admin bar. + add_action( 'admin_bar_menu', array( $this, 'admin_bar_about_link' ), 100 ); // Add a description of new BuddyPress tools in the available tools page. add_action( 'tool_box', 'bp_core_admin_available_tools_intro' ); @@ -169,6 +169,9 @@ class BP_Admin { add_filter( 'manage_' . bp_get_email_post_type() . '_posts_columns', array( $this, 'emails_register_situation_column' ) ); add_action( 'manage_' . bp_get_email_post_type() . '_posts_custom_column', array( $this, 'emails_display_situation_column_data' ), 10, 2 ); + // BuddyPress Hello. + add_action( 'admin_footer', array( $this, 'about_screen' ) ); + /* Filters ***********************************************************/ // Add link to settings page. @@ -197,24 +200,6 @@ class BP_Admin { return; } - // About. - add_dashboard_page( - __( 'Welcome to BuddyPress', 'buddypress' ), - __( 'Welcome to BuddyPress', 'buddypress' ), - 'manage_options', - 'bp-about', - array( $this, 'about_screen' ) - ); - - // Credits. - add_dashboard_page( - __( 'Welcome to BuddyPress', 'buddypress' ), - __( 'Welcome to BuddyPress', 'buddypress' ), - 'manage_options', - 'bp-credits', - array( $this, 'credits_screen' ) - ); - $hooks = array(); // Changed in BP 1.6 . See bp_core_admin_backpat_menu(). @@ -264,6 +249,16 @@ class BP_Admin { 'bp_core_admin_settings' ); + // Credits. + $hooks[] = add_submenu_page( + $this->settings_page, + __( 'BuddyPress Credits', 'buddypress' ), + __( 'BuddyPress Credits', 'buddypress' ), + $this->capability, + 'bp-credits', + array( $this, 'credits_screen' ) + ); + // For consistency with non-Multisite, we add a Tools menu in // the Network Admin as a home for our Tools panel. if ( is_multisite() && bp_core_do_network_admin() ) { @@ -336,27 +331,24 @@ class BP_Admin { $hooks = array(); - // Require WP 4.0+. - if ( bp_is_root_blog() && version_compare( $GLOBALS['wp_version'], '4.0', '>=' ) ) { - // Appearance > Emails. - $hooks[] = add_theme_page( - _x( 'Emails', 'screen heading', 'buddypress' ), - _x( 'Emails', 'screen heading', 'buddypress' ), - $this->capability, - 'bp-emails-customizer-redirect', - 'bp_email_redirect_to_customizer' - ); + // Appearance > Emails. + $hooks[] = add_theme_page( + _x( 'Emails', 'screen heading', 'buddypress' ), + _x( 'Emails', 'screen heading', 'buddypress' ), + $this->capability, + 'bp-emails-customizer-redirect', + 'bp_email_redirect_to_customizer' + ); - // Emails > Customize. - $hooks[] = add_submenu_page( - 'edit.php?post_type=' . bp_get_email_post_type(), - _x( 'Customize', 'email menu label', 'buddypress' ), - _x( 'Customize', 'email menu label', 'buddypress' ), - $this->capability, - 'bp-emails-customizer-redirect', - 'bp_email_redirect_to_customizer' - ); - } + // Emails > Customize. + $hooks[] = add_submenu_page( + 'edit.php?post_type=' . bp_get_email_post_type(), + _x( 'Customize', 'email menu label', 'buddypress' ), + _x( 'Customize', 'email menu label', 'buddypress' ), + $this->capability, + 'bp-emails-customizer-redirect', + 'bp_email_redirect_to_customizer' + ); foreach( $hooks as $hook ) { add_action( "admin_head-$hook", 'bp_core_modify_admin_menu_highlight' ); @@ -396,7 +388,7 @@ class BP_Admin { register_setting( 'buddypress', 'bp-disable-account-deletion', 'intval' ); // Template pack picker. - add_settings_field( '_bp_theme_package_id', __( 'Template Pack', 'buddypress' ), 'bp_admin_setting_callback_theme_package_id', 'buddypress', 'bp_main' ); + add_settings_field( '_bp_theme_package_id', __( 'Template Pack', 'buddypress' ), 'bp_admin_setting_callback_theme_package_id', 'buddypress', 'bp_main', array( 'label_for' => '_bp_theme_package_id' ) ); register_setting( 'buddypress', '_bp_theme_package_id', 'sanitize_text_field' ); /* XProfile Section **************************************************/ @@ -443,18 +435,6 @@ class BP_Admin { } } - /* Forums ************************************************************/ - - if ( bp_is_active( 'forums' ) ) { - - // Add the main section. - add_settings_section( 'bp_forums', __( 'Legacy Group Forums', 'buddypress' ), 'bp_admin_setting_callback_bbpress_section', 'buddypress' ); - - // Allow subscriptions setting. - add_settings_field( 'bb-config-location', __( 'bbPress Configuration', 'buddypress' ), 'bp_admin_setting_callback_bbpress_configuration', 'buddypress', 'bp_forums' ); - register_setting( 'buddypress', 'bb-config-location', '' ); - } - /* Activity Section **************************************************/ if ( bp_is_active( 'activity' ) ) { @@ -462,8 +442,8 @@ class BP_Admin { // Add the main section. add_settings_section( 'bp_activity', __( 'Activity Settings', 'buddypress' ), 'bp_admin_setting_callback_activity_section', 'buddypress' ); - // Activity commenting on blog and forum posts. - add_settings_field( 'bp-disable-blogforum-comments', __( 'Blog & Forum Comments', 'buddypress' ), 'bp_admin_setting_callback_blogforum_comments', 'buddypress', 'bp_activity' ); + // Activity commenting on post and comments. + add_settings_field( 'bp-disable-blogforum-comments', __( 'Post Comments', 'buddypress' ), 'bp_admin_setting_callback_blogforum_comments', 'buddypress', 'bp_activity' ); register_setting( 'buddypress', 'bp-disable-blogforum-comments', 'bp_admin_sanitize_callback_blogforum_comments' ); // Activity Heartbeat refresh. @@ -479,21 +459,27 @@ class BP_Admin { } /** - * Add a link to BuddyPress About page to the admin bar. + * Add a link to BuddyPress Hello to the admin bar. * * @since 1.9.0 + * @since 3.0.0 Hooked at priority 100 (was 15). * - * @param WP_Admin_Bar $wp_admin_bar As passed to 'admin_bar_menu'. + * @param WP_Admin_Bar $wp_admin_bar */ public function admin_bar_about_link( $wp_admin_bar ) { - if ( is_user_logged_in() ) { - $wp_admin_bar->add_menu( array( - 'parent' => 'wp-logo', - 'id' => 'bp-about', - 'title' => esc_html__( 'About BuddyPress', 'buddypress' ), - 'href' => add_query_arg( array( 'page' => 'bp-about' ), bp_get_admin_url( 'index.php' ) ), - ) ); + if ( ! is_user_logged_in() ) { + return; } + + $wp_admin_bar->add_menu( array( + 'parent' => 'wp-logo', + 'id' => 'bp-about', + 'title' => esc_html_x( 'Hello, BuddyPress!', 'Colloquial alternative to "learn about BuddyPress"', 'buddypress' ), + 'href' => bp_get_admin_url( '?hello=buddypress' ), + 'meta' => array( + 'class' => 'say-hello-buddypress', + ), + ) ); } /** @@ -515,7 +501,7 @@ class BP_Admin { // Add a few links to the existing links array. return array_merge( $links, array( 'settings' => '<a href="' . esc_url( add_query_arg( array( 'page' => 'bp-components' ), bp_get_admin_url( $this->settings_page ) ) ) . '">' . esc_html__( 'Settings', 'buddypress' ) . '</a>', - 'about' => '<a href="' . esc_url( add_query_arg( array( 'page' => 'bp-about' ), bp_get_admin_url( 'index.php' ) ) ) . '">' . esc_html__( 'About', 'buddypress' ) . '</a>' + 'about' => '<a href="' . esc_url( bp_get_admin_url( '?hello=buddypress' ) ) . '">' . esc_html_x( 'Hello, BuddyPress!', 'Colloquial alternative to "learn about BuddyPress"', 'buddypress' ) . '</a>' ) ); } @@ -529,6 +515,7 @@ class BP_Admin { // Settings pages. remove_submenu_page( $this->settings_page, 'bp-page-settings' ); remove_submenu_page( $this->settings_page, 'bp-settings' ); + remove_submenu_page( $this->settings_page, 'bp-credits' ); // Network Admin Tools. remove_submenu_page( 'network-tools', 'network-tools' ); @@ -545,156 +532,185 @@ class BP_Admin { */ public function enqueue_scripts() { wp_enqueue_style( 'bp-admin-common-css' ); + + // BuddyPress Hello + if ( 0 === strpos( get_current_screen()->id, 'dashboard' ) && ! empty( $_GET['hello'] ) && $_GET['hello'] === 'buddypress' ) { + wp_enqueue_style( 'bp-hello-css' ); + wp_enqueue_script( 'bp-hello-js' ); + } } /** About *****************************************************************/ /** - * Output the about screen. + * Output the BuddyPress Hello template. * - * @since 1.7.0 + * @since 1.7.0 Screen content. + * @since 3.0.0 Now outputs BuddyPress Hello template. */ public function about_screen() { + if ( 0 !== strpos( get_current_screen()->id, 'dashboard' ) || empty( $_GET['hello'] ) || $_GET['hello'] !== 'buddypress' ) { + return; + } ?> - <div class="wrap about-wrap"> - - <?php self::welcome_text(); ?> - - <?php self::tab_navigation( __METHOD__ ); ?> - - <?php if ( self::is_new_install() ) : ?> - - <div id="welcome-panel" class="welcome-panel"> - <div class="welcome-panel-content"> - <h3 style="margin:0;"><?php _e( 'Getting Started with BuddyPress', 'buddypress' ); ?></h3> - <div class="welcome-panel-column-container"> - <div class="welcome-panel-column"> - <h4><?php _e( 'Configure BuddyPress', 'buddypress' ); ?></h4> - <ul> - <li><?php printf( - '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Set Up Components', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-components' ), $this->settings_page ) ) ) - ); ?></li> - <li><?php printf( - '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Assign Components to Pages', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-page-settings' ), $this->settings_page ) ) ) - ); ?></li> - <li><?php printf( - '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Customize Settings', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-settings' ), $this->settings_page ) ) ) - ); ?></li> - </ul> - <a class="button button-primary button-hero" style="margin-bottom:20px;margin-top:0;" href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-components' ), $this->settings_page ) ) ); ?>"><?php _e( 'Get Started', 'buddypress' ); ?></a> - </div> - <div class="welcome-panel-column"> - <h4><?php _e( 'Administration Tools', 'buddypress' ); ?></h4> - <ul> - <?php if ( bp_is_active( 'members' ) ) : ?> - <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Add User Profile Fields', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-profile-setup' ), 'users.php' ) ) ) ); ?></li> - <?php endif; ?> - <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Manage User Signups', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-signups' ), 'users.php' ) ) ) ); ?></li> - <?php if ( bp_is_active( 'activity' ) ) : ?> - <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Moderate Activity Streams', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-activity' ), 'admin.php' ) ) ) ); ?></li> - <?php endif; ?> - <?php if ( bp_is_active( 'groups' ) ) : ?> - <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Manage Groups', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-groups' ), 'admin.php' ) ) ) ); ?></li> - <?php endif; ?> - <li><?php printf( '<a href="%s" class="welcome-icon welcome-add-page">' . __( 'Repair Data', 'buddypress' ) . '</a>', esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-tools' ), 'tools.php' ) ) ) ); ?> - </li> - </ul> - </div> - <div class="welcome-panel-column welcome-panel-last"> - <h4><?php _e( 'Community and Support', 'buddypress' ); ?></h4> - <p class="welcome-icon welcome-learn-more" style="margin-right:10px"><?php _e( 'Looking for help? The <a href="https://codex.buddypress.org/">BuddyPress Codex</a> has you covered.', 'buddypress' ) ?></p> - <p class="welcome-icon welcome-learn-more" style="margin-right:10px"><?php _e( 'Can’t find what you need? Stop by <a href="https://buddypress.org/support/">our support forums</a>, where active BuddyPress users and developers are waiting to share tips and more.', 'buddypress' ) ?></p> - </div> - </div> - </div> - </div> - - <?php endif; ?> - - <div class="bp-features-section"> - - <h3 class="headline-title"><?php esc_html_e( 'For Developers & Site Builders', 'buddypress' ); ?></h3> - - <div class="bp-feature"> - <span class="dashicons dashicons-groups" aria-hidden="true"></span> - <h4 class="feature-title"><?php esc_html_e( 'Edit Group Slug', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Allow administrators to change group names and permalinks. Navigate to the Groups screen in the wp-admin dashboard, click on the Edit link under the Group name, and adjust as needed.', 'buddypress' ); ?></p> - </div> - - <div class="bp-feature opposite"> - <span class="dashicons dashicons-admin-users" aria-hidden="true"></span> - <h4 class="feature-title"><?php esc_html_e( 'Improve accessibility of Extended Profile Fields', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Related form fields are grouped together in fieldsets and all interactive form controls are associated with necessary ARIA states and properties.', 'buddypress' ); ?></p> - </div> + <div id="bp-hello-backdrop" style="display: none;"> + </div> - <div class="bp-feature"> - <span class="dashicons dashicons-email" aria-hidden="true"></span> - <h4 class="feature-title"><?php esc_html_e( 'Send group invitation only once per user', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Prevent duplicate group invitations from being sent to a user by double-checking if a group invitation has already been sent to that user.', 'buddypress' ); ?></p> + <div id="bp-hello-container" role="dialog" aria-labelledby="bp-hello-title" style="display: none;"> + <div class="bp-hello-header" role="document"> + <div class="bp-hello-close"> + <button type="button" class="close-modal button bp-tooltip" data-bp-tooltip="<?php echo esc_attr( 'Close pop-up', 'buddypress' ); ?>"> + <span class="screen-reader-text"><?php esc_html_e( 'Close pop-up', 'buddypress' ); ?></span> + </button> </div> - <div class="bp-feature opposite"> - <span class="dashicons dashicons-testimonial" aria-hidden="true"></span> - <h4 class="feature-title"><?php esc_html_e( 'Tooltips Usable for All Devices', 'buddypress' ); ?></h4> - - <p><?php esc_html_e( 'Replaced HTML title attributes with tooltips which provide additional information and visual cues where needed on mouse hover and keyboard focus events.', 'buddypress' ); - ?></p> + <div class="bp-hello-title"> + <h1 id="bp-hello-title" tabindex="-1"><?php esc_html_e( _x( 'New in BuddyPress', 'section heading', 'buddypress' ) ); ?></h1> </div> + </div> + <div class="bp-hello-content"> + <h2><?php echo esc_html( _n( 'Maintenance Release', 'Maintenance Releases', 1, 'buddypress' ) ); ?></h2> + <p> + <?php + printf( + /* translators: 1: BuddyPress version number, 2: plural number of bugs. */ + _n( + '<strong>Version %1$s</strong> addressed %2$s bug.', + '<strong>Version %1$s</strong> addressed %2$s bugs.', + 23, + 'buddypress' + ), + self::display_version(), + number_format_i18n( 23 ) + ); + ?> + </p> + + <hr> + <h2><?php esc_html_e( __( 'Say hello to “Nouveau”!', 'buddypress' ) ); ?></h2> + <p> + <?php + printf( + __( 'A bold reimagining of our legacy templates, Nouveau is our celebration of <a href="%s">10 years of BuddyPress</a>! Nouveau delivers modern markup with fresh JavaScript-powered templates, and full integration with WordPress\' Customizer, allowing more out-of-the-box control of your BuddyPress content than ever before.', 'buddypress' ), + esc_url( 'https://buddypress.org/2018/03/10-years/' ) + ); + ?> + </p> + <p><?php esc_html_e( 'Nouveau provides vertical and horizontal layout options for BuddyPress navigation, and for the component directories, you can choose between a grid layout, and a classic flat list.', 'buddypress' ); ?></p> + <p> + <?php + printf( + __( 'Nouveau is fully compatible with WordPress. Existing BuddyPress themes have been written for our legacy template pack, and until they are updated, resolve any compatibility issues by choosing the legacy template pack option in <a href="%s">Settings > BuddyPress</a>.', 'buddypress' ), + esc_url( bp_get_admin_url( 'admin.php?page=bp-settings' ) ) + ); + ?> + </p> + + <?php echo $GLOBALS['wp_embed']->autoembed( 'https://player.vimeo.com/video/270507360' ); ?> + + <h2><?php esc_html_e( __( 'Support for WP-CLI', 'buddypress' ) ); ?></h2> + <p> + <?php + printf( + __( '<a href="%s">WP-CLI</a> is the command-line interface for WordPress. You can update plugins, configure multisite installs, and much more, without using a web browser. With this version of BuddyPress, you can now manage your BuddyPress content from WP-CLI.', 'buddypress' ), + esc_url( 'https://wp-cli.org' ) + ); + ?> + </p> + + <h2><?php esc_html_e( _x( 'Control site-wide notices from your dashboard', 'section heading', 'buddypress' ) ); ?></h2> + <p><?php esc_html_e( 'Site Notices are a feature within the Private Messaging component that allows community managers to share important messages with all members of their community. With Nouveau, the management interface for Site Notices has been removed from the front-end theme templates.', 'buddypress' ); ?></p> + + <?php if ( bp_is_active( 'messages' ) ) : ?> + <p> + <?php + printf( + __( 'Explore the new management interface at <a href="%s">Users > Site Notices</a>.', 'buddypress' ), + esc_url( bp_get_admin_url( 'users.php?page=bp-notices' ) ) + ); + ?> + </p> + <?php endif; ?> + + <h2><?php esc_html_e( __( 'New profile field type: telephone numbers', 'buddypress' ) ); ?></h2> + <p><?php esc_html_e( 'A new telephone number field type has been added to the Extended Profiles component, with support for all international number formats. With a modern web browser, your members can use this field type to touch-to-dial a number directly.', 'buddypress' ); ?></p> + + <h2><?php esc_html_e( __( "BuddyPress: leaner, faster, stronger", 'buddypress' ) ); ?></h2> + <p><?php esc_html_e( 'With every BuddyPress version, we strive to make performance improvements alongside new features and fixes; this version is no exception. Memory use has been optimised — within active components, we now only load each individual code file when it\'s needed, not before.', 'buddypress' ); ?></p> + <p> + <?php + printf( + __( 'Most notably, the <a href="%s">Legacy Forums component has been removed</a> after 9 years of service. If your site was using Legacy Forums, you need to <a href="%s">migrate to the bbPress plugin</a>.', 'buddypress' ), + esc_url( 'https://bpdevel.wordpress.com/2017/12/07/legacy-forums-support-will-be/' ), + esc_url( 'https://codex.buddypress.org/getting-started/guides/migrating-from-old-forums-to-bbpress-2/' ) + ); + ?> + </p> + + <p><em> + <?php + printf( + __( 'To read the full list of features, fixes, and changes in this version of BuddyPress, <a href="%s">visit Trac</a>.', 'buddypress' ), + esc_url( 'https://buddypress.trac.wordpress.org/query?group=status&milestone=3.0' ) + ); + ?> + </em></p> + + <h2><?php esc_html_e( _x( 'Your feedback', 'screen heading', 'buddypress' ) ); ?></h2> + <p> + <?php + printf( + __( ' How are you using BuddyPress? Receiving your feedback and suggestions for future versions of BuddyPress genuinely motivates and encourages our contributors. Please <a href="%s">share your feedback</a> about this version of BuddyPress on our website. ', 'buddypress' ), + esc_url( 'https://buddypress.org/support/' ) + ); + ?> + </p> + <p><?php esc_html_e( 'Thank you for using BuddyPress! 😊', 'buddypress' ); ?></p> + + <br /><br /> </div> - <div class="bp-changelog-section"> - - <h3 class="changelog-title"><?php esc_html_e( 'More under the hood …', 'buddypress' ); ?></h3> - <div class="bp-changelog bp-three-column"> - <div class="bp-column"> - <h4 class="title"><?php esc_html_e( 'Better support for private message thread links in emails', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Redirect non-authenticated users to the login screen and authenticated users to the message linked.', 'buddypress' ); ?></p> - </div> - <div class="bp-column"> - <h4 class="title"><?php esc_html_e( 'Compatibility with Bootstrap themes', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Removed issues with BuddyPress-generated content being hidden in the Groups loop and Activity comments in Bootstrap themes.', 'buddypress' ); ?></p> - </div> - - <div class="bp-column"> - <h4 class="title"><?php esc_html_e( 'Improve profile image uploads', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Fixed issues with uploading in iOS Safari and uploading files with non-ASCII filenames.', 'buddypress' ); ?></p> - </div> + <div class="bp-hello-footer"> + <div class="bp-hello-social-cta"> + <p> + <?php + printf( + _n( 'Built by <a href="%s">%s volunteer</a>.', 'Built by <a href="%s">%s volunteers</a>.', 57, 'buddypress' ), + esc_url( bp_get_admin_url( 'admin.php?page=bp-credits' ) ), + number_format_i18n( 57 ) + ); + ?> + </p> </div> - <div class="bp-changelog bp-three-column"> - <div class="bp-column"> - <h4 class="title"><?php esc_html_e( 'URL compatibility for LightSpeed Servers', 'buddypress' ); ?></h4> - <p><?php - /* translators: %s: trailingslashit() */ - printf( __( 'Audited and changed template link functions to use %s where necessary.', 'buddypress' ), - '<code>trailingslashit()</code>' ); - ?></p> - </div> - <div class="bp-column"> - <h4 class="title"><?php esc_html_e( 'Template Packs UI in BuddyPress > Settings.', 'buddypress' ); ?></h4> - <p><?php esc_html_e( 'Register your new BuddyPress theme package and allow the user to select which template pack to use.', 'buddypress' ); ?></p> - </div> - - <div class="bp-column"> - <h4 class="title"><?php - /* translators: %s: bp_group_link() */ - printf( __( 'New template function %s', 'buddypress' ), - '<code>bp_group_link()</code>' ); - ?></h4> - <p><?php esc_html_e( 'Output a group name as a text hyperlink where appropriate.', 'buddypress' ); ?></p> - </div> + <div class="bp-hello-social-links"> + <ul class="bp-hello-social"> + <li> + <?php + printf( + '<a class="twitter bp-tooltip" data-bp-tooltip="%1$s" href="%2$s"><span class="screen-reader-text">%3$s</span></a>', + esc_attr( 'Follow BuddyPress on Twitter', 'buddypress' ), + esc_url( 'https://twitter.com/buddypress' ), + esc_html( 'Follow BuddyPress on Twitter', 'buddypress' ) + ); + ?> + </li> + + <li> + <?php + printf( + '<a class="support bp-tooltip" data-bp-tooltip="%1$s" href="%2$s"><span class="screen-reader-text">%3$s</span></a>', + esc_attr( 'Visit the Support Forums', 'buddypress' ), + esc_url( 'https://buddypress.org/support/' ), + esc_html( 'Visit the Support Forums', 'buddypress' ) + ); + ?> + </li> + </ul> </div> - - </div> - - <div class="bp-assets"> - <p><?php _ex( 'Learn more:', 'About screen, website links', 'buddypress' ); ?> <a href="https://buddypress.org/blog/"><?php _ex( 'News', 'About screen, link to project blog', 'buddypress' ); ?></a> • <a href="https://buddypress.org/support/"><?php _ex( 'Support', 'About screen, link to support site', 'buddypress' ); ?></a> • <a href="https://codex.buddypress.org/"><?php _ex( 'Documentation', 'About screen, link to documentation', 'buddypress' ); ?></a> • <a href="https://bpdevel.wordpress.com/"><?php _ex( 'Development Blog', 'About screen, link to development blog', 'buddypress' ); ?></a></p> - - <p><?php _ex( 'Twitter:', 'official Twitter accounts:', 'buddypress' ); ?> <a href="https://twitter.com/buddypress/"><?php _ex( 'BuddyPress', '@buddypress twitter account name', 'buddypress' ); ?></a> • <a href="https://twitter.com/bptrac/"><?php _ex( 'Trac', '@bptrac twitter account name', 'buddypress' ); ?></a> • <a href="https://twitter.com/buddypressdev/"><?php _ex( 'Development', '@buddypressdev twitter account name', 'buddypress' ); ?></a></p> </div> - </div> <?php @@ -711,168 +727,193 @@ class BP_Admin { public function credits_screen() { ?> - <div class="wrap about-wrap"> + <div class="wrap bp-about-wrap"> - <?php self::welcome_text(); ?> + <h1><?php _e( 'BuddyPress Settings', 'buddypress' ); ?> </h1> - <?php self::tab_navigation( __METHOD__ ); ?> + <h2 class="nav-tab-wrapper"><?php bp_core_admin_tabs( __( 'Credits', 'buddypress' ) ); ?></h2> - <p class="about-description"><?php _e( 'BuddyPress is created by a worldwide network of friendly folks like these.', 'buddypress' ); ?></p> + <p class="about-description"><?php _e( 'Meet the contributors behind BuddyPress:', 'buddypress' ); ?></p> <h3 class="wp-people-group"><?php _e( 'Project Leaders', 'buddypress' ); ?></h3> <ul class="wp-people-group " id="wp-people-group-project-leaders"> <li class="wp-person" id="wp-person-johnjamesjacoby"> - <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7a2644fb53ae2f7bfd7143b504af396c?s=60"> + <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7a2644fb53ae2f7bfd7143b504af396c?s=120"> John James Jacoby</a> <span class="title"><?php _e( 'Project Lead', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-boonebgorges"> - <a class="web" href="https://profiles.wordpress.org/boonebgorges"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/9cf7c4541a582729a5fc7ae484786c0c?s=60"> + <a class="web" href="https://profiles.wordpress.org/boonebgorges"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/9cf7c4541a582729a5fc7ae484786c0c?s=120"> Boone B. Gorges</a> <span class="title"><?php _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=60"> + <a class="web" href="https://profiles.wordpress.org/djpaul"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/3bc9ab796299d67ce83dceb9554f75df?s=120"> Paul Gibbs</a> - <span class="title"><?php _e( 'Lead Developer', 'buddypress' ); ?></span> + <span class="title"><?php _e( 'Release Lead', 'buddypress' ); ?></span> </li> </ul> <h3 class="wp-people-group"><?php _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=60"> - Hugo Ashmore</a> - <span class="title"><?php _e( '2.9 Release Lead', 'buddypress' ); ?></span> - </li> <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=60"> + <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 _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 _e( 'Core 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=60"> + <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 _e( 'Core 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=60"> + <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 _e( 'Navigator', '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=60"> + <a class="web" href="https://profiles.wordpress.org/dcavins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5fa7e83d59cb45ebb616235a176595a?s=120"> David Cavins</a> <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-tw2113"> - <a class="web" href="https://profiles.wordpress.org/tw2113"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5d7c934621fa1c025b83ee79bc62366?s=60"> + <a class="web" href="https://profiles.wordpress.org/tw2113"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/a5d7c934621fa1c025b83ee79bc62366?s=120"> Michael Beckwith</a> <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-henry-wright"> - <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=60"> + <a class="web" href="https://profiles.wordpress.org/henry.wright"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0da2f1a9340d6af196b870f6c107a248?s=120"> Henry Wright</a> <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-danbp"> - <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=60"> + <a class="web" href="https://profiles.wordpress.org/danbp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/0deae2e7003027fbf153500cd3fa5501?s=120"> danbp</a> <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-shanebp"> - <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=60"> + <a class="web" href="https://profiles.wordpress.org/shanebp"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ffd294ab5833ba14aaf175f9acc71cc4?s=120"> shanebp</a> <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-slaffik"> - <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/61fb07ede3247b63f19015f200b3eb2c?s=60"> + <a class="web" href="https://profiles.wordpress.org/r-a-y"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/61fb07ede3247b63f19015f200b3eb2c?s=120"> Slava Abakumov</a> <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-offereins"> - <a class="web" href="https://profiles.wordpress.org/Offereins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/2404ed0a35bb41aedefd42b0a7be61c1?s=60"> + <a class="web" href="https://profiles.wordpress.org/Offereins"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/2404ed0a35bb41aedefd42b0a7be61c1?s=120"> Laurens Offereins</a> <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> </li> <li class="wp-person" id="wp-person-netweb"> - <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=60"> + <a class="web" href="https://profiles.wordpress.org/netweb"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/97e1620b501da675315ba7cfb740e80f?s=120"> Stephen Edgar</a> <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> </li> + <li class="wp-person" id="wp-person-espellcaste"> + <a class="web" href="https://profiles.wordpress.org/espellcaste"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/b691e67be0ba5cad6373770656686bc3?s=120"> + Renato Alves</a> + <span class="title"><?php _e( 'Core Developer', 'buddypress' ); ?></span> + </li> + <li class="wp-person" id="wp-person-venutius"> + <a class="web" href="https://profiles.wordpress.org/venutius"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/6a7c42a77fd94b82b217a7a97afdddbc?s=120"> + Venutius</a> + <span class="title"><?php _e( 'Community Support', 'buddypress' ); ?></span> + </li> </ul> - <h3 class="wp-people-group"><?php _e( '🌟Recent Rockstars🌟', 'buddypress' ); ?></h3> + <h3 class="wp-people-group"><?php _e( 'Recent Rockstars', 'buddypress' ); ?></h3> <ul class="wp-people-group " id="wp-people-group-rockstars"> <li class="wp-person" id="wp-person-dimensionmedia"> - <a class="web" href="https://profiles.wordpress.org/dimensionmedia"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7735aada1ec39d0c1118bd92ed4551f1?s=60"> + <a class="web" href="https://profiles.wordpress.org/dimensionmedia"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7735aada1ec39d0c1118bd92ed4551f1?s=120"> David Bisset</a> </li> <li class="wp-person" id="wp-person-garrett-eclipse"> - <a class="web" href="https://profiles.wordpress.org/garrett-eclipse"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7f68f24441c61514d5d0e1451bb5bc9d?s=60"> + <a class="web" href="https://profiles.wordpress.org/garrett-eclipse"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/7f68f24441c61514d5d0e1451bb5bc9d?s=120"> Garrett Hyder</a> </li> <li class="wp-person" id="wp-person-thebrandonallen"> - <a class="web" href="https://profiles.wordpress.org/thebrandonallen"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/6d3f77bf3c9ca94c406dea401b566950?s=60"> + <a class="web" href="https://profiles.wordpress.org/thebrandonallen"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/6d3f77bf3c9ca94c406dea401b566950?s=120"> Brandon Allen</a> </li> <li class="wp-person" id="wp-person-ramiy"> - <a class="web" href="https://profiles.wordpress.org/ramiy"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ce2a269e424156d79cb0c4e1d4d82db1?s=60"> + <a class="web" href="https://profiles.wordpress.org/ramiy"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ce2a269e424156d79cb0c4e1d4d82db1?s=120"> Rami Yushuvaev</a> </li> + <li class="wp-person" id="wp-person-vapvarun"> + <a class="web" href="https://profiles.wordpress.org/vapvarun"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/78a3bf7eb3a1132fc667f96f2631e448?s=120"> + Vapvarun</a> + </li> </ul> <h3 class="wp-people-group"><?php printf( esc_html__( 'Contributors to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h3> <p class="wp-credits-list"> - <a href="https://profiles.wordpress.org/55don/">55don</a>, - <a href="https://profiles.wordpress.org/aaronoftomorrow/">AaronOfTomorrow</a>, - <a href="https://profiles.wordpress.org/allianse/">allianse</a>, + <a href="https://profiles.wordpress.org/1naveengiri">1naveengiri</a>, + <a href="https://profiles.wordpress.org/abhishekfdd/">Abhishek Kumar (abhishekfdd)</a>, + <a href="https://profiles.wordpress.org/andrewteg/">Andrew Tegenkamp (andrewteg)</a>, + <a href="https://profiles.wordpress.org/ankit-k-gupta/">Ankit K Gupta (ankit-k-gupta)</a>, <a href="https://profiles.wordpress.org/antonioeatgoat/">Antonio Mangiacapra (antonioeatgoat)</a>, - <a href="https://profiles.wordpress.org/benjlipchak/">Benj (benjlipchak)</a>, <a href="https://profiles.wordpress.org/boonebgorges/">Boone B Gorges (boonebgorges)</a>, - <a href="https://profiles.wordpress.org/bhargavbhandari90/">Bunty (bhargavbhandari90)</a>, + <a href="https://profiles.wordpress.org/thebrandonallen/">Brandon Allen (thebrandonallen)</a>, + <a href="https://profiles.wordpress.org/brandonliles/">brandonliles</a>, <a href="https://profiles.wordpress.org/sbrajesh/">Brajesh Singh (sbrajesh)</a>, + <a href="https://profiles.wordpress.org/ketuchetan/">chetansatasiya (ketuchetan)</a>, + <a href="https://profiles.wordpress.org/chherbst/">chherbst</a>, <a href="https://profiles.wordpress.org/needle/">Christian Wach (needle)</a>, - <a href="https://profiles.wordpress.org/brandonliles/">brandonliles</a>, + <a href="https://profiles.wordpress.org/coach-afrane/">Coach Afrane</a>, + <a href="https://profiles.wordpress.org/cshinkin/">cshinkin</a>, <a href="https://profiles.wordpress.org/danbp/">danbp</a>, <a href="https://profiles.wordpress.org/dcavins/">David Cavins (dcavins)</a>, - <a href="https://profiles.wordpress.org/dkelm/">dkelm</a>, - <a href="https://profiles.wordpress.org/dsar/">dsar</a>, - <a href="https://profiles.wordpress.org/dsided/">dsided</a>, + <a href="https://profiles.wordpress.org/devitate/">devitate</a>, + <a href="https://profiles.wordpress.org/garrett-eclipse/">Garrett Hyder (garrett-eclipse)</a>, + <a href="https://profiles.wordpress.org/geminorum/">geminorum</a>, + <a href="https://profiles.wordpress.org/Mamaduka/">George Mamadashvili (Mamaduka)</a>, + <a href="https://profiles.wordpress.org/januzi_pl/">januzi_pl</a>, + <a href="https://profiles.wordpress.org/jcrr/">jcrr</a>, + <a href="https://profiles.wordpress.org/jdgrimes/">J.D. Grimes (jdgrimes)</a>, + <a href="https://profiles.wordpress.org/JohnPBloch/">John P. Bloch (JohnPBloch)</a>, + <a href="https://profiles.wordpress.org/joost-abrahams/">Joost Abrahams (joost-abrahams)</a>, <a href="https://profiles.wordpress.org/henry.wright">Henry Wright (henry.wright)</a>, <a href="https://profiles.wordpress.org/hnla/">Hugo (hnla)</a>, <a href="https://profiles.wordpress.org/idofri/">Ido Friedlander (idofri)</a>, - <a href="https://profiles.wordpress.org/uscore713/">Jay (uscore713)</a>, - <a href="https://profiles.wordpress.org/johnbillion/">John Blackbourn (johnbillion)</a>, + <a href="https://profiles.wordpress.org/dunhakdis/">Joseph G. (dunhakdis)</a>, <a href="https://profiles.wordpress.org/johnjamesjacoby/">John James Jacoby (johnjamesjacoby)</a>, - <a href="https://profiles.wordpress.org/juanho/">Juanho</a>, - <a href="https://profiles.wordpress.org/lakrisgubben/">lakrisgubben</a>, <a href="https://profiles.wordpress.org/Offereins">Laurens Offereins (Offereins)</a>, - <a href="https://profiles.wordpress.org/lne1030/">lne1030</a>, - <a href="https://profiles.wordpress.org/lenasterg/">lenasterg</a>, - <a href="https://profiles.wordpress.org/maniou/">Maniou</a>, + <a href="https://profiles.wordpress.org/mechter/">Markus Echterhoff (mechter)</a>, <a href="https://profiles.wordpress.org/imath/">Mathieu Viet (imath)</a>, + <a href="https://profiles.wordpress.org/meitar/">meitar</a>, <a href="https://profiles.wordpress.org/mercime/">mercime</a>, <a href="https://profiles.wordpress.org/tw2113/">Michael Beckwith (tw2113)</a>, - <a href="https://profiles.wordpress.org/mikegillihan/">Mike Gillihan (MikeGillihan)</a>, - <a href="https://profiles.wordpress.org/milindmore22/">Milind More (milindmore22)</a>, + <a href="https://profiles.wordpress.org/mauteri/">Mike Auteri (mauteri)</a>, <a href="https://profiles.wordpress.org/modemlooper/">modemlooper</a>, - <a href="https://profiles.wordpress.org/mrjarbenne/">mrjarbenne</a>, - <a href="https://profiles.wordpress.org/nicolaskulka/">Nicolas Kulka (NicolasKulka)</a>, - <a href="https://profiles.wordpress.org/oelita/">Oelita</a>, - <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>, + <a href="https://profiles.wordpress.org/m_uysl/">Mustafa Uysal (m_uysl)</a>, <a href="https://profiles.wordpress.org/pareshradadiya/">paresh.radadiya (pareshradadiya)</a>, + <a href="https://profiles.wordpress.org/DJPaul/">Paul Gibbs (DJPaul)</a>, + <a href="https://profiles.wordpress.org/pavloopanasenko/">pavlo.opanasenko (pavloopanasenko)</a>, + <a href="https://profiles.wordpress.org/pscolv/">pscolv</a>, <a href="https://profiles.wordpress.org/r-a-y/">r-a-y</a>, + <a href="https://profiles.wordpress.org/rachelbaker/">Rachel Baker (rachelbaker)</a>, + <a href="https://profiles.wordpress.org/rekmla/">rekmla</a>, <a href="https://profiles.wordpress.org/espellcaste/">Renato Alves (espellcaste)</a>, <a href="https://profiles.wordpress.org/rianrietveld/">Rian Rietveld (rianrietvelde)</a>, - <a href="https://profiles.wordpress.org/elhardoum/">Samuel Elh (elhardoum)</a>, - <a href="https://profiles.wordpress.org/seventhqueen/">seventhqueen</a>, + <a href="https://profiles.wordpress.org/ripstechcom/">ripstechcom</a>, + <a href="https://profiles.wordpress.org/cyclic/">Ryan Williams (cyclic)</a>, <a href="https://profiles.wordpress.org/slaffik/">Slava Abakumov (slaffik)</a>, <a href="https://profiles.wordpress.org/netweb/">Stephen Edgar (netweb)</a>, - <a href="https://profiles.wordpress.org/vishalkakadiya/">Vishal Kakadiya (vishalkakadiya)</a> + <a href="https://profiles.wordpress.org/tobiashonold/">Tobias Honold (tobiashonold)</a>, + <a href="https://profiles.wordpress.org/uzosky/">uzosky</a>, + <a href="https://profiles.wordpress.org/vapvarun/">vapvarun</a>, + <a href="https://profiles.wordpress.org/Venutius/">Venutius</a>, + <a href="https://profiles.wordpress.org/yahil/">Yahil Madakiya (yahil)</a> </p> - <h3 class="wp-people-group"><?php _e( '💖With our thanks to these Open Source projects💖', 'buddypress' ); ?></h3> + <h3 class="wp-people-group"><?php _e( 'With our thanks to these Open Source projects', 'buddypress' ); ?></h3> <p class="wp-credits-list"> <a href="https://github.com/ichord/At.js">At.js</a>, <a href="https://bbpress.org">bbPress</a>, @@ -882,67 +923,39 @@ class BP_Admin { <a href="https://github.com/carhartl/jquery-cookie">jquery.cookie</a>, <a href="https://mattbradley.github.io/livestampjs/">Livestamp.js</a>, <a href="https://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a>, - <a href="http://momentjs.com/">Moment.js</a>, + <a href="https://momentjs.com/">Moment.js</a>, <a href="https://wordpress.org">WordPress</a>. </p> + <h3 class="wp-people-group"><?php _e( 'Contributor Emeriti', 'buddypress' ); ?></h3> + <ul class="wp-people-group " id="wp-people-group-emeriti"> + <li class="wp-person" id="wp-person-apeatling"> + <a class="web" href="https://profiles.wordpress.org/johnjamesjacoby"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/bb29d699b5cba218c313b61aa82249da?s=120"> + Andy Peatling</a> + <span class="title"><?php _e( 'Project Founder', 'buddypress' ); ?></span> + </li> + <li class="wp-person" id="wp-person-burtadsit"> + <a class="web" href="https://profiles.wordpress.org/burtadsit"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/185e1d3e2d653af9d49a4e8e4fc379df?s=120"> + Burt Adsit</a> + </li> + <li class="wp-person" id="wp-person-jeffsayre"> + <a class="web" href="https://profiles.wordpress.org/jeffsayre"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/8e009a84ff5d245c22a69c7df6ab45f7?s=120"> + Jeff Sayre</a> + </li> + <li class="wp-person" id="wp-person-karmatosed"> + <a class="web" href="https://profiles.wordpress.org/karmatosed"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/ca7d4273a689cdbf524d8332771bb1ca?s=120"> + Tammie Lister</a> + </li> + <li class="wp-person" id="wp-person-modemlooper"> + <a class="web" href="https://profiles.wordpress.org/modemlooper"><img alt="" class="gravatar" src="//www.gravatar.com/avatar/1c07be1016e845de514931477c939307?s=120"> + modemlooper</a> + </li> + </ul> </div> <?php } - /** - * Output welcome text and badge for What's New and Credits pages. - * - * @since 2.2.0 - */ - public static function welcome_text() { - - // Switch welcome text based on whether this is a new installation or not. - $welcome_text = ( self::is_new_install() ) - ? __( 'Thank you for installing BuddyPress! BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more!', 'buddypress' ) - : __( 'Thank you for updating! BuddyPress %s has many new improvements that you will enjoy.', 'buddypress' ); - - ?> - - <h1><?php printf( esc_html__( 'Welcome to BuddyPress %s', 'buddypress' ), self::display_version() ); ?></h1> - - <div class="about-text"> - <?php - if ( self::is_new_install() ) { - echo $welcome_text; - } else { - printf( $welcome_text, self::display_version() ); - } - ?> - </div> - - <div class="bp-badge"></div> - - <?php - } - - /** - * Output tab navigation for `What's New` and `Credits` pages. - * - * @since 2.2.0 - * - * @param string $tab Tab to highlight as active. - */ - public static function tab_navigation( $tab = 'whats_new' ) { - ?> - - <h2 class="nav-tab-wrapper"> - <a class="nav-tab <?php if ( 'BP_Admin::about_screen' === $tab ) : ?>nav-tab-active<?php endif; ?>" href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-about' ), 'index.php' ) ) ); ?>"> - <?php esc_html_e( 'What’s New', 'buddypress' ); ?> - </a><a class="nav-tab <?php if ( 'BP_Admin::credits_screen' === $tab ) : ?>nav-tab-active<?php endif; ?>" href="<?php echo esc_url( bp_get_admin_url( add_query_arg( array( 'page' => 'bp-credits' ), 'index.php' ) ) ); ?>"> - <?php esc_html_e( 'Credits', 'buddypress' ); ?> - </a> - </h2> - - <?php - } - /** Emails ****************************************************************/ /** @@ -1092,8 +1105,13 @@ class BP_Admin { 'file' => "{$url}customizer-controls{$min}.css", 'dependencies' => array(), ), - ) ); + // 3.0 + 'bp-hello-css' => array( + 'file' => "{$url}hello{$min}.css", + 'dependencies' => array( 'bp-admin-common-css' ), + ), + ) ); $version = bp_get_version(); @@ -1130,6 +1148,13 @@ class BP_Admin { 'dependencies' => array( 'jquery' ), 'footer' => true, ), + + // 3.0 + 'bp-hello-js' => array( + 'file' => "{$url}hello{$min}.js", + 'dependencies' => array(), + 'footer' => true, + ), ) ); $version = bp_get_version(); diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-attachment-cover-image.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-attachment-cover-image.php index 8c6c60b10a74b7d4deca1faacf407f9a7ef4a61d..9cb501887034859cefe2f02d47b0c4ea4a8a10f5 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-attachment-cover-image.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-attachment-cover-image.php @@ -96,40 +96,7 @@ class BP_Attachment_Cover_Image extends BP_Attachment { * @return array $value Upload data (path, url, basedir...). */ public function upload_dir_filter( $upload_dir = array() ) { - // Default values are for profiles. - $object_id = bp_displayed_user_id(); - - if ( empty( $object_id ) ) { - $object_id = bp_loggedin_user_id(); - } - - $object_directory = 'members'; - - // We're in a group, edit default values. - if ( bp_is_group() || bp_is_group_create() ) { - $object_id = bp_get_current_group_id(); - $object_directory = 'groups'; - } - - // Set the subdir. - $subdir = '/' . $object_directory . '/' . $object_id . '/cover-image'; - - /** - * Filters the cover image upload directory. - * - * @since 2.4.0 - * - * @param array $value Array containing the path, URL, and other helpful settings. - * @param array $upload_dir The original Uploads dir. - */ - return apply_filters( 'bp_attachments_cover_image_upload_dir', array( - 'path' => $this->upload_path . $subdir, - 'url' => $this->url . $subdir, - 'subdir' => $subdir, - 'basedir' => $this->upload_path, - 'baseurl' => $this->url, - 'error' => false - ), $upload_dir ); + return bp_attachments_cover_image_upload_dir(); } /** diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-component.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-component.php index 137c8cb33d00e214bc94abec98b85c308bb431ec..e610cace6c2ca1993189d595655d64d55c9d5d89 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-component.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-component.php @@ -393,6 +393,17 @@ class BP_Component { do_action( 'bp_' . $this->id . '_includes' ); } + /** + * Late includes method. + * + * Components should include files here only on specific pages using + * conditionals such as {@link bp_is_current_component()}. Intentionally left + * empty. + * + * @since 3.0.0 + */ + public function late_includes() {} + /** * Set up the actions. * @@ -414,6 +425,9 @@ class BP_Component { // extending this base class. add_action( 'bp_include', array( $this, 'includes' ), 8 ); + // Load files conditionally, based on certain pages. + add_action( 'bp_late_include', array( $this, 'late_includes' ) ); + // Setup navigation. add_action( 'bp_setup_nav', array( $this, 'setup_nav' ), 10 ); diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-nav.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-nav.php index 3fc68bf1d5035897a7cb1f9c702b186d1d586fa7..28d3d0fca848c2551d16f21e227fed5d05c2b650 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-nav.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-core-nav.php @@ -352,7 +352,7 @@ class BP_Core_Nav { * * @param array $args Filters to select the specific secondary items. See wp_list_filter(). * @param bool $sort True to sort the nav items. False otherwise. - * @return array The list of secondary objects nav + * @return bool|array The list of secondary objects nav, or false if none set. */ public function get_secondary( $args = array(), $sort = true ) { $params = wp_parse_args( $args, array( 'parent_slug' => '' ) ); 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 d9f4975777dcee02fc7a36bc35d0d5ca1de70dc3..64467f5ed13476c490a8f7748c70b78a0d6a5ca4 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 @@ -166,11 +166,6 @@ class BP_Core_User { $this->email = esc_attr( bp_core_get_user_email( $this->id ) ); } - // Cache a few things that are fetched often. - wp_cache_set( 'bp_user_fullname_' . $this->id, $this->fullname, 'bp' ); - wp_cache_set( 'bp_user_email_' . $this->id, $this->email, 'bp' ); - wp_cache_set( 'bp_user_url_' . $this->id, $this->user_url, 'bp' ); - $this->avatar = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'full', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ) ) ); $this->avatar_thumb = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ) ) ); $this->avatar_mini = bp_core_fetch_avatar( array( 'item_id' => $this->id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile photo of %s', 'buddypress' ), $this->fullname ), 'width' => 30, 'height' => 30 ) ); @@ -749,18 +744,13 @@ class BP_Core_User { /** * Get WordPress user details for a specified user. * - * @global wpdb $wpdb WordPress database object. + * @since 3.0.0 Results might be from cache * * @param int $user_id User ID. - * @return array Associative array. + * @return false|object WP_User if successful, false on failure. */ public static function get_core_userdata( $user_id ) { - global $wpdb; - - if ( !$user = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->users} WHERE ID = %d LIMIT 1", $user_id ) ) ) - return false; - - return $user; + return WP_User::get_data_by( 'id', $user_id ); } /** 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 3fc94e37a4ad7438b8dd0c954058444914c86f3b..2afcf77c8a878be4daef2b471018e1f2c489d6de 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 @@ -65,7 +65,7 @@ class BP_Core extends BP_Component { * * @param array $value Array of included and optional components. */ - $bp->optional_components = apply_filters( 'bp_optional_components', array( 'activity', 'blogs', 'forums', 'friends', 'groups', 'messages', 'notifications', 'settings', 'xprofile' ) ); + $bp->optional_components = apply_filters( 'bp_optional_components', array( 'activity', 'blogs', 'friends', 'groups', 'messages', 'notifications', 'settings', 'xprofile' ) ); /** * Filters the required components. diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-email.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-email.php index f4de900a1e1071c2da90908c5bdf77aa81ef0f08..19c22c60e4f3de5cea6834df639133849003edfc 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-email.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-email.php @@ -246,7 +246,7 @@ class BP_Email { switch ( $transform ) { // Special-case to fill the $template with the email $content. case 'add-content': - $retval = str_replace( '{{{content}}}', nl2br( $this->get_content( 'replace-tokens' ) ), $retval ); + $retval = str_replace( '{{{content}}}', wpautop( $this->get_content( 'replace-tokens' ) ), $retval ); // Fall through. case 'replace-tokens': 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 54f9bb52e0e59c71b92a3600bca28aae993513b0..5aae8689c9fd6273bffce4f4f9014c73a4094b8c 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 @@ -45,11 +45,6 @@ class BP_Embed extends WP_Embed { add_filter( 'bp_get_activity_content', array( &$this, 'run_shortcode' ), 7 ); } - if ( bp_use_embed_in_forum_posts() ) { - add_filter( 'bp_get_the_topic_post_content', array( &$this, 'autoembed' ), 8 ); - add_filter( 'bp_get_the_topic_post_content', array( &$this, 'run_shortcode' ), 7 ); - } - if ( bp_use_embed_in_private_messages() ) { add_filter( 'bp_get_the_thread_message_content', array( &$this, 'autoembed' ), 8 ); add_filter( 'bp_get_the_thread_message_content', array( &$this, 'run_shortcode' ), 7 ); diff --git a/wp-content/plugins/buddypress/bp-core/classes/class-bp-members-suggestions.php b/wp-content/plugins/buddypress/bp-core/classes/class-bp-members-suggestions.php index 0edea59af5641734d1564b719932ff49ddc00736..65f7cc7490b6232da2e67e61fb1dc3bcf088f770 100644 --- a/wp-content/plugins/buddypress/bp-core/classes/class-bp-members-suggestions.php +++ b/wp-content/plugins/buddypress/bp-core/classes/class-bp-members-suggestions.php @@ -117,10 +117,11 @@ class BP_Members_Suggestions extends BP_Suggestions { $results = array(); foreach ( $user_query->results as $user ) { - $result = new stdClass(); - $result->ID = $user->user_nicename; - $result->image = bp_core_fetch_avatar( array( 'html' => false, 'item_id' => $user->ID ) ); - $result->name = bp_core_get_user_displayname( $user->ID ); + $result = new stdClass(); + $result->ID = $user->user_nicename; + $result->image = bp_core_fetch_avatar( array( 'html' => false, 'item_id' => $user->ID ) ); + $result->name = bp_core_get_user_displayname( $user->ID ); + $result->user_id = $user->ID; $results[] = $result; } 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 34ecfbdf8fafb3f20bd3012629bf2d2678633b97..533eff41b203be1d2262ffe4578a187dd2b798ef 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 @@ -413,13 +413,16 @@ class BP_User_Query { $search_terms_space = '%' . $search_terms . '%'; } - $sql['where']['search'] = $wpdb->prepare( - "u.{$this->uid_name} IN ( SELECT ID FROM {$wpdb->users} WHERE ( user_login LIKE %s OR user_login LIKE %s OR user_nicename LIKE %s OR user_nicename LIKE %s ) )", + $matched_user_ids = $wpdb->get_col( $wpdb->prepare( + "SELECT ID FROM {$wpdb->users} WHERE ( user_login LIKE %s OR user_login LIKE %s OR user_nicename LIKE %s OR user_nicename LIKE %s )", $search_terms_nospace, $search_terms_space, $search_terms_nospace, $search_terms_space - ); + ) ); + + $match_in_clause = empty( $matched_user_ids) ? 'NULL' : implode( ',', $matched_user_ids ); + $sql['where']['search'] = "u.{$this->uid_name} IN ({$match_in_clause})"; } // Only use $member_type__in if $member_type is not set. @@ -570,14 +573,6 @@ class BP_User_Query { ), $this ) ); - // WP_User_Query doesn't cache the data it pulls from wp_users, - // and it does not give us a way to save queries by fetching - // only uncached users. However, BP does cache this data, so - // we set it here. - foreach ( $wp_user_query->results as $u ) { - wp_cache_set( 'bp_core_userdata_' . $u->ID, $u, 'bp' ); - } - // 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 diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css index 6f55afbf2a784b57e9f0a4143fd161e30174bf0c..796997327dc4282c5a1f70f516babc8bcedb34ef 100644 --- a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.css @@ -100,7 +100,7 @@ body#bp-default #admin-bar-logo { padding: 0; float: right; position: relative; - background: url(../images/admin-menu-arrow.gif) 12% 53% no-repeat; + background: url(../images/admin-menu-arrow.gif) 88% 53% no-repeat; padding-left: 11px; } diff --git a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.min.css b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.min.css index 630301353add19fbaa99983f232a3e30b65a13c3..e31fa939725b08c558d483329076fd63d5efc07c 100644 --- a/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-core/css/buddybar-rtl.min.css @@ -1 +1 @@ -body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;right:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;right:10px}#wp-admin-bar a img{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:1;text-align:right}#wp-admin-bar li a{padding:7px 15px;color:#eee;text-decoration:none;font-size:11px}#wp-admin-bar li.alt{border:none}#wp-admin-bar li.no-arrow a{padding-left:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:right;font-weight:700;font-size:11px;padding:5px 8px;margin:0;text-decoration:none;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0;float:right;position:relative;background:url(../images/admin-menu-arrow.gif) 12% 53% no-repeat;padding-left:11px}#wp-admin-bar ul li.no-arrow{background:0 0;padding-left:0}#wp-admin-bar ul li ul li{background-image:none}#wp-admin-bar ul li.align-right{position:absolute;left:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;right:-999em;margin-right:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li ul a{color:#eee}#wp-admin-bar ul li ul li{float:right;width:174px;margin:0}#wp-admin-bar ul li ul li:hover a{color:#fff}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 184px 0 0;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a{color:#fff}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{right:auto}#wp-admin-bar ul li.align-right:hover ul{left:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{right:-999em}#wp-admin-bar img.avatar{float:right;margin-left:8px}#wp-admin-bar span.activity{display:block;margin-right:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-right:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px} \ No newline at end of file +body:not(.wp-admin){padding-top:25px!important}#wp-admin-bar{position:fixed;top:0;right:0;height:25px;font-size:11px;width:100%;z-index:9999}#wp-admin-bar .padder{position:relative;padding:0;width:100%;margin:0 auto;background:url(../images/60pc_black.png);height:25px}body#bp-default #wp-admin-bar .padder{max-width:1250px}#wp-admin-bar *{z-index:999}#wp-admin-bar div#admin-bar-logo{position:absolute;top:5px;right:10px}#wp-admin-bar a img{border:none}#wp-admin-bar li{list-style:none;margin:0;padding:0;line-height:1;text-align:right}#wp-admin-bar li a{padding:7px 15px;color:#eee;text-decoration:none;font-size:11px}#wp-admin-bar li.alt{border:none}#wp-admin-bar li.no-arrow a{padding-left:15px}#wp-admin-bar ul li ul li a span{display:none}#wp-admin-bar li.hover,#wp-admin-bar li:hover{position:static}#admin-bar-logo{float:right;font-weight:700;font-size:11px;padding:5px 8px;margin:0;text-decoration:none;color:#fff}body#bp-default #admin-bar-logo{padding:2px 8px}#wp-admin-bar ul{margin:0;list-style:none;line-height:1;cursor:pointer;height:auto;padding:0}#wp-admin-bar ul li{padding:0;float:right;position:relative;background:url(../images/admin-menu-arrow.gif) 88% 53% no-repeat;padding-left:11px}#wp-admin-bar ul li.no-arrow{background:0 0;padding-left:0}#wp-admin-bar ul li ul li{background-image:none}#wp-admin-bar ul li.align-right{position:absolute;left:0}#wp-admin-bar ul li a{display:block}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li.sfhover,#wp-admin-bar ul.main-nav li:hover{background-color:#333}#wp-admin-bar ul li ul{position:absolute;width:185px;right:-999em;margin-right:0;background:#333;border:1px solid #222;-moz-box-shadow:0 4px 8px rgba(0,0,0,.1);-webkit-box-shadow:0 4px 8px rgba(0,0,0,.1);-moz-border-radius:3px;-webkit-border-radius:3px;-moz-border-radius-topright:0;-webkit-border-top-right-radius:0;-moz-border-radius-topleft:0;-webkit-border-top-left-radius:0}#wp-admin-bar ul li>ul{border-top:none}#wp-admin-bar ul li ul a{color:#eee}#wp-admin-bar ul li ul li{float:right;width:174px;margin:0}#wp-admin-bar ul li ul li:hover a{color:#fff}#wp-admin-bar ul li div.admin-bar-clear{clear:both}#wp-admin-bar ul.main-nav li ul li.sfhover,#wp-admin-bar ul.main-nav li ul li:hover{background-color:#222}#wp-admin-bar ul li ul ul{margin:-25px 184px 0 0;-moz-border-radius:3px;-webkit-border-radius:3px}#wp-admin-bar ul li ul li:hover ul li a{color:#eee}#wp-admin-bar ul li ul li ul li:hover a{color:#fff}#wp-admin-bar ul li ul li.sfhover ul,#wp-admin-bar ul li ul li:hover ul,#wp-admin-bar ul li.sfhover ul,#wp-admin-bar ul li:hover ul{right:auto}#wp-admin-bar ul li.align-right:hover ul{left:0}#wp-admin-bar li.sfhover ul li ul,#wp-admin-bar ul li:hover ul ul{right:-999em}#wp-admin-bar img.avatar{float:right;margin-left:8px}#wp-admin-bar span.activity{display:block;margin-right:34px;padding:0}#wp-admin-bar ul.author-list li a{height:17px}#wp-admin-bar ul li#bp-adminbar-notifications-menu a span{padding:0 6px;margin-right:2px;background:#fff;color:#000;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}#wp-admin-bar-user-info img.avatar{height:64px;width:64px} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php b/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php index 0ecdcbec8643ae772d49d6f152c09411d4423977..ed1372e1258f0f693dd1e898a95824811735cb78 100644 --- a/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php +++ b/wp-content/plugins/buddypress/bp-core/deprecated/1.5.php @@ -398,19 +398,6 @@ function bp_core_delete_notifications_for_user_by_item_id( $user_id, $item_id, $ return BP_Core_Notification::delete_for_user_by_item_id( $user_id, $item_id, $component_name, $component_action, $secondary_item_id ); } -/** - * In BP 1.5, these functions were renamed for greater consistency - * @deprecated 1.5.0 - */ -function bp_forum_directory_permalink() { - _deprecated_function( __FUNCTION__, '1.5', 'bp_forums_directory_permalink()' ); - bp_forums_directory_permalink(); -} - function bp_get_forum_directory_permalink() { - _deprecated_function( __FUNCTION__, '1.5', 'bp_get_forums_directory_permalink()' ); - return bp_get_forums_directory_permalink(); - } - /** * Last used by core in BP 1.1. The markup was merged into DTheme's header.php template. * @deprecated 1.5.0 diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/1.6.php b/wp-content/plugins/buddypress/bp-core/deprecated/1.6.php index c5550b6dd48088d54b540c56a2af1dedc2d2502d..9101f52a97a10e423c296b50bf4bf8ab5519f3a6 100644 --- a/wp-content/plugins/buddypress/bp-core/deprecated/1.6.php +++ b/wp-content/plugins/buddypress/bp-core/deprecated/1.6.php @@ -265,8 +265,13 @@ if ( !function_exists( 'bp_dtheme_register_actions' ) ) : // For each of the problematic hooks, exit at the very end of execution foreach( $actions as $action ) { - add_action( 'wp_ajax_' . $action, create_function( '', 'exit;' ), 9999 ); - add_action( 'wp_ajax_nopriv_' . $action, create_function( '', 'exit;' ), 9999 ); + add_action( 'wp_ajax_' . $action, function() { + exit; + }, 9999 ); + + add_action( 'wp_ajax_nopriv_' . $action, function() { + exit; + }, 9999 ); } } add_action( 'after_setup_theme', 'bp_die_legacy_ajax_callbacks', 20 ); diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/2.8.php b/wp-content/plugins/buddypress/bp-core/deprecated/2.8.php index 46491651c8d1d9b6fa5277e3f01904adda741d3b..a7fc332b677ca0d8075c9396726855e1ab46f127 100644 --- a/wp-content/plugins/buddypress/bp-core/deprecated/2.8.php +++ b/wp-content/plugins/buddypress/bp-core/deprecated/2.8.php @@ -19,6 +19,7 @@ defined( 'ABSPATH' ) || exit; * @return bool */ function bp_core_admin_is_running_php53_or_greater() { + _deprecated_function( __FUNCTION__, '2.8' ); return version_compare( PHP_VERSION, '5.3', '>=' ); } @@ -70,6 +71,8 @@ function bp_core_admin_maybe_remove_from_update_core() { * @return object */ function bp_core_admin_remove_buddypress_from_update_transient( $retval ) { + _deprecated_function( __FUNCTION__, '2.8' ); + $loader = basename( constant( 'BP_PLUGIN_DIR' ) ) . '/bp-loader.php'; // Remove BP from update plugins list. @@ -96,6 +99,8 @@ function bp_core_admin_remove_buddypress_from_update_transient( $retval ) { * plugins API. */ function bp_core_admin_php52_plugin_row( $file, $plugin_data ) { + _deprecated_function( __FUNCTION__, '2.8' ); + if ( is_multisite() && ! is_network_admin() ) { return; } @@ -156,6 +161,8 @@ function bp_core_admin_php52_plugin_row( $file, $plugin_data ) { * @deprecated 2.8.0 */ function bp_core_admin_php53_admin_notice() { + _deprecated_function( __FUNCTION__, '2.8' ); + // If not on the Plugins page, stop now. if ( 'plugins' !== get_current_screen()->parent_base ) { return; @@ -184,14 +191,11 @@ function bp_core_admin_php53_admin_notice() { bp_get_version(), true ); - - $php_version = PHP_VERSION; - ?> <div id="message" class="error notice is-dismissible bp-is-dismissible" data-noticeid="<?php echo esc_attr( $notice_id ); ?>"> <p><strong><?php esc_html_e( 'Your site is not ready for BuddyPress 2.8.', 'buddypress' ); ?></strong></p> - <p><?php printf( esc_html__( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'buddypress' ), $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> + <p><?php printf( esc_html__( 'Your site is currently running PHP version %s, while BuddyPress 2.8 will require version 5.3+.', 'buddypress' ), esc_html( phpversion() ) ); ?> <?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> <?php wp_nonce_field( "bp-dismissible-notice-$notice_id", "bp-dismissible-nonce-$notice_id" ); ?> </div> <?php diff --git a/wp-content/plugins/buddypress/bp-core/deprecated/3.0.php b/wp-content/plugins/buddypress/bp-core/deprecated/3.0.php new file mode 100644 index 0000000000000000000000000000000000000000..ea8b3bfe1292cf240fb990a8a286cbcfbe194107 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-core/deprecated/3.0.php @@ -0,0 +1,187 @@ +<?php +/** + * Deprecated functions. + * + * @deprecated 2.9.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Check whether bbPress plugin-powered Group Forums are enabled. + * + * @since 1.6.0 + * @since 3.0.0 $default argument's default value changed from true to false. + * @deprecated 3.0.0 No longer used in core, but supported for third-party code. + * + * @param bool $default Optional. Fallback value if not found in the database. + * Default: false. + * @return bool True if group forums are active, otherwise false. + */ +function bp_is_group_forums_active( $default = false ) { + _deprecated_function( __FUNCTION__, '3.0', 'groups_get_group( $id )->enable_forum' ); + + $is_active = function_exists( 'bbp_is_group_forums_active' ) ? bbp_is_group_forums_active( $default ) : $default; + + /** + * Filters whether or not bbPress plugin-powered Group Forums are enabled. + * + * @since 1.6.0 + * @deprecated 3.0.0 No longer used in core, but supported for third-party code. + * + * @param bool $value Whether or not bbPress plugin-powered Group Forums are enabled. + */ + return (bool) apply_filters( 'bp_is_group_forums_active', $is_active ); +} + +/** + * Is this a user's forums page? + * + * Eg http://example.com/members/joe/forums/ (or a subpage thereof). + * + * @since 1.5.0 + * @deprecated 3.0.0 No longer used in core, but supported for third-party code. + * + * @return false + */ +function bp_is_user_forums() { + _deprecated_function( __FUNCTION__, '3.0', 'legacy forum support removed' ); + return false; +} + +/** + * Is the current page a group's (legacy bbPress) forum page? + * + * @since 1.1.0 + * @since 3.0.0 Always returns false. + * @deprecated 3.0.0 No longer used in core, but supported for custom theme templates. + * + * @return bool + */ +function bp_is_group_forum() { + _deprecated_function( __FUNCTION__, '3.0', 'legacy forum support removed' ); + return false; +} + + +/** + * Output a 'New Topic' button for a group. + * + * @since 1.2.7 + * @deprecated 3.0.0 No longer used in core, but supported for third-party code. + * + * @param BP_Groups_Group|bool $group The BP Groups_Group object if passed, boolean false if not passed. + */ +function bp_group_new_topic_button( $group = false ) { + _deprecated_function( __FUNCTION__, '3.0', 'legacy forum support removed' ); +} + + /** + * Return a 'New Topic' button for a group. + * + * @since 1.2.7 + * @deprecated 3.0.0 No longer used in core, but supported for third-party code. + * + * @param BP_Groups_Group|bool $group The BP Groups_Group object if passed, boolean false if not passed. + * + * @return false + */ + function bp_get_group_new_topic_button( $group = false ) { + _deprecated_function( __FUNCTION__, '3.0', 'legacy forum support removed' ); + return false; + } + +/** + * Catch a "Mark as Spammer/Not Spammer" click from the toolbar. + * + * When a site admin selects "Mark as Spammer/Not Spammer" from the admin menu + * this action will fire and mark or unmark the user and their blogs as spam. + * Must be a site admin for this function to run. + * + * Note: no longer used in the current state. See the Settings component. + * + * @since 1.1.0 + * @since 1.6.0 No longer used, unhooked. + * @since 3.0.0 Formally marked as deprecated. + * + * @param int $user_id Optional. User ID to mark as spam. Defaults to displayed user. + */ +function bp_core_action_set_spammer_status( $user_id = 0 ) { + _deprecated_function( __FUNCTION__, '3.0' ); + + // Only super admins can currently spam users (but they can't spam + // themselves). + if ( ! is_super_admin() || bp_is_my_profile() ) { + return; + } + + // Use displayed user if it's not yourself. + if ( empty( $user_id ) ) + $user_id = bp_displayed_user_id(); + + if ( bp_is_current_component( 'admin' ) && ( in_array( bp_current_action(), array( 'mark-spammer', 'unmark-spammer' ) ) ) ) { + + // Check the nonce. + check_admin_referer( 'mark-unmark-spammer' ); + + // To spam or not to spam. + $status = bp_is_current_action( 'mark-spammer' ) ? 'spam' : 'ham'; + + // The heavy lifting. + bp_core_process_spammer_status( $user_id, $status ); + + // Add feedback message. @todo - Error reporting. + if ( 'spam' == $status ) { + bp_core_add_message( __( 'User marked as spammer. Spam users are visible only to site admins.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'User removed as spammer.', 'buddypress' ) ); + } + + // Deprecated. Use bp_core_process_spammer_status. + $is_spam = 'spam' == $status; + do_action( 'bp_core_action_set_spammer_status', bp_displayed_user_id(), $is_spam ); + + // Redirect back to where we came from. + bp_core_redirect( wp_get_referer() ); + } +} + +/** + * Process user deletion requests. + * + * Note: no longer used in the current state. See the Settings component. + * + * @since 1.1.0 + * @since 1.6.0 No longer used, unhooked. + * @since 3.0.0 Formally marked as deprecated. + */ +function bp_core_action_delete_user() { + _deprecated_function( __FUNCTION__, '3.0' ); + + if ( !bp_current_user_can( 'bp_moderate' ) || bp_is_my_profile() || !bp_displayed_user_id() ) + return false; + + if ( bp_is_current_component( 'admin' ) && bp_is_current_action( 'delete-user' ) ) { + + // Check the nonce. + check_admin_referer( 'delete-user' ); + + $errors = false; + do_action( 'bp_core_before_action_delete_user', $errors ); + + if ( bp_core_delete_account( bp_displayed_user_id() ) ) { + bp_core_add_message( sprintf( __( '%s has been deleted from the system.', 'buddypress' ), bp_get_displayed_user_fullname() ) ); + } else { + bp_core_add_message( sprintf( __( 'There was an error deleting %s from the system. Please try again.', 'buddypress' ), bp_get_displayed_user_fullname() ), 'error' ); + $errors = true; + } + + do_action( 'bp_core_action_delete_user', $errors ); + + if ( $errors ) + bp_core_redirect( bp_displayed_user_domain() ); + else + bp_core_redirect( bp_loggedin_user_domain() ); + } +} diff --git a/wp-content/plugins/buddypress/bp-core/js/confirm.js b/wp-content/plugins/buddypress/bp-core/js/confirm.js index 902de34ff010563103a054404b8b4daa21e3c668..6e223497a82ad8455f972a39faf4a732b39e5871 100644 --- a/wp-content/plugins/buddypress/bp-core/js/confirm.js +++ b/wp-content/plugins/buddypress/bp-core/js/confirm.js @@ -2,11 +2,11 @@ /* global BP_Confirm */ jQuery( document ).ready( function() { - jQuery( 'a.confirm').click( function() { + jQuery( '#buddypress' ).on( 'click', 'a.confirm', function() { if ( confirm( BP_Confirm.are_you_sure ) ) { return true; } else { return false; } - }); -}); + } ); +} ); diff --git a/wp-content/plugins/buddypress/bp-core/js/confirm.min.js b/wp-content/plugins/buddypress/bp-core/js/confirm.min.js index 3f0860ae0ae1b7843115c55612d9f39bbbbaee96..e7bf0c58a4ff7815acaf136bdb1bbc1120b25a1e 100644 --- a/wp-content/plugins/buddypress/bp-core/js/confirm.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/confirm.min.js @@ -1 +1 @@ -jQuery(document).ready(function(){jQuery("a.confirm").click(function(){return!!confirm(BP_Confirm.are_you_sure)})}); \ No newline at end of file +jQuery(document).ready(function(){jQuery("#buddypress").on("click","a.confirm",function(){return!!confirm(BP_Confirm.are_you_sure)})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.js b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.js index 717d9935dd6889a56f2c6c548fa04b38dd205ca2..795b6c67dcd23a43276f7ff675a060ba34769857 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.js @@ -1,76 +1,180 @@ -/*! jquery.atwho - v0.5.2 %> -* Copyright (c) 2014 chord.luo <chord.luo@gmail.com>; -* homepage: http://ichord.github.com/At.js -* Licensed MIT -*/ +/** + * at.js - 1.5.4 + * Copyright (c) 2017 chord.luo <chord.luo@gmail.com>; + * Homepage: http://ichord.github.com/At.js + * License: MIT + */ (function (root, factory) { if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(["jquery"], function ($) { - return (root.returnExportsGlobal = factory($)); + // AMD. Register as an anonymous module unless amdModuleId is set + define(["jquery"], function (a0) { + return (factory(a0)); }); } else if (typeof exports === 'object') { // Node. Does not work with strict CommonJS, but - // only CommonJS-like enviroments that support module.exports, + // only CommonJS-like environments that support module.exports, // like Node. module.exports = factory(require("jquery")); } else { factory(jQuery); } }(this, function ($) { +var DEFAULT_CALLBACKS, KEY_CODE; -var Api, App, Controller, DEFAULT_CALLBACKS, KEY_CODE, Model, View, - __slice = [].slice; +KEY_CODE = { + ESC: 27, + TAB: 9, + ENTER: 13, + CTRL: 17, + A: 65, + P: 80, + N: 78, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + BACKSPACE: 8, + SPACE: 32 +}; + +DEFAULT_CALLBACKS = { + beforeSave: function(data) { + return Controller.arrayToDefaultHash(data); + }, + matcher: function(flag, subtext, should_startWithSpace, acceptSpaceBar) { + var _a, _y, match, regexp, space; + flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); + if (should_startWithSpace) { + flag = '(?:^|\\s)' + flag; + } + _a = decodeURI("%C3%80"); + _y = decodeURI("%C3%BF"); + space = acceptSpaceBar ? "\ " : ""; + regexp = new RegExp(flag + "([A-Za-z" + _a + "-" + _y + "0-9_" + space + "\'\.\+\-]*)$|" + flag + "([^\\x00-\\xff]*)$", 'gi'); + match = regexp.exec(subtext); + if (match) { + return match[2] || match[1]; + } else { + return null; + } + }, + filter: function(query, data, searchKey) { + var _results, i, item, len; + _results = []; + for (i = 0, len = data.length; i < len; i++) { + item = data[i]; + if (~new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase())) { + _results.push(item); + } + } + return _results; + }, + remoteFilter: null, + sorter: function(query, items, searchKey) { + var _results, i, item, len; + if (!query) { + return items; + } + _results = []; + for (i = 0, len = items.length; i < len; i++) { + item = items[i]; + item.atwho_order = new String(item[searchKey]).toLowerCase().indexOf(query.toLowerCase()); + if (item.atwho_order > -1) { + _results.push(item); + } + } + return _results.sort(function(a, b) { + return a.atwho_order - b.atwho_order; + }); + }, + tplEval: function(tpl, map) { + var error, error1, template; + template = tpl; + try { + if (typeof tpl !== 'string') { + template = tpl(map); + } + return template.replace(/\$\{([^\}]*)\}/g, function(tag, key, pos) { + return map[key]; + }); + } catch (error1) { + error = error1; + return ""; + } + }, + highlighter: function(li, query) { + var regexp; + if (!query) { + return li; + } + regexp = new RegExp(">\\s*([^\<]*?)(" + query.replace("+", "\\+") + ")([^\<]*)\\s*<", 'ig'); + return li.replace(regexp, function(str, $1, $2, $3) { + return '> ' + $1 + '<strong>' + $2 + '</strong>' + $3 + ' <'; + }); + }, + beforeInsert: function(value, $li, e) { + return value; + }, + beforeReposition: function(offset) { + return offset; + }, + afterMatchFailed: function(at, el) {} +}; + +var App; App = (function() { function App(inputor) { - this.current_flag = null; + this.currentFlag = null; this.controllers = {}; - this.alias_maps = {}; + this.aliasMaps = {}; this.$inputor = $(inputor); - this.setIframe(); + this.setupRootElement(); this.listen(); } App.prototype.createContainer = function(doc) { - if ((this.$el = $("#atwho-container", doc)).length === 0) { - return $(doc.body).append(this.$el = $("<div id='atwho-container'></div>")); + var ref; + if ((ref = this.$el) != null) { + ref.remove(); } + return $(doc.body).append(this.$el = $("<div class='atwho-container'></div>")); }; - App.prototype.setIframe = function(iframe, standalone) { - var _ref; - if (standalone == null) { - standalone = false; + App.prototype.setupRootElement = function(iframe, asRoot) { + var error, error1; + if (asRoot == null) { + asRoot = false; } if (iframe) { this.window = iframe.contentWindow; this.document = iframe.contentDocument || this.window.document; this.iframe = iframe; } else { - this.document = document; - this.window = window; - this.iframe = null; - } - if (this.iframeStandalone = standalone) { - if ((_ref = this.$el) != null) { - _ref.remove(); + this.document = this.$inputor[0].ownerDocument; + this.window = this.document.defaultView || this.document.parentWindow; + try { + this.iframe = this.window.frameElement; + } catch (error1) { + error = error1; + this.iframe = null; + if ($.fn.atwho.debug) { + throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n" + error); + } } - return this.createContainer(this.document); - } else { - return this.createContainer(document); } + return this.createContainer((this.iframeAsRoot = asRoot) ? this.document : document); }; App.prototype.controller = function(at) { - var c, current, current_flag, _ref; - if (this.alias_maps[at]) { - current = this.controllers[this.alias_maps[at]]; + var c, current, currentFlag, ref; + if (this.aliasMaps[at]) { + current = this.controllers[this.aliasMaps[at]]; } else { - _ref = this.controllers; - for (current_flag in _ref) { - c = _ref[current_flag]; - if (current_flag === at) { + ref = this.controllers; + for (currentFlag in ref) { + c = ref[currentFlag]; + if (currentFlag === at) { current = c; break; } @@ -79,58 +183,87 @@ App = (function() { if (current) { return current; } else { - return this.controllers[this.current_flag]; + return this.controllers[this.currentFlag]; } }; - App.prototype.set_context_for = function(at) { - this.current_flag = at; + App.prototype.setContextFor = function(at) { + this.currentFlag = at; return this; }; App.prototype.reg = function(flag, setting) { - var controller, _base; - controller = (_base = this.controllers)[flag] || (_base[flag] = new Controller(this, flag)); + var base, controller; + controller = (base = this.controllers)[flag] || (base[flag] = this.$inputor.is('[contentEditable]') ? new EditableController(this, flag) : new TextareaController(this, flag)); if (setting.alias) { - this.alias_maps[setting.alias] = flag; + this.aliasMaps[setting.alias] = flag; } controller.init(setting); return this; }; App.prototype.listen = function() { - return this.$inputor.on('keyup.atwhoInner', (function(_this) { + return this.$inputor.on('compositionstart', (function(_this) { return function(e) { - return _this.on_keyup(e); + var ref; + if ((ref = _this.controller()) != null) { + ref.view.hide(); + } + _this.isComposing = true; + return null; }; - })(this)).on('keydown.atwhoInner', (function(_this) { + })(this)).on('compositionend', (function(_this) { return function(e) { - return _this.on_keydown(e); + _this.isComposing = false; + setTimeout(function(e) { + return _this.dispatch(e); + }); + return null; }; - })(this)).on('scroll.atwhoInner', (function(_this) { + })(this)).on('keyup.atwhoInner', (function(_this) { return function(e) { - var _ref; - return (_ref = _this.controller()) != null ? _ref.view.hide(e) : void 0; + return _this.onKeyup(e); + }; + })(this)).on('keydown.atwhoInner', (function(_this) { + return function(e) { + return _this.onKeydown(e); }; })(this)).on('blur.atwhoInner', (function(_this) { return function(e) { var c; if (c = _this.controller()) { - return c.view.hide(e, c.get_opt("display_timeout")); + c.expectedQueryCBId = null; + return c.view.hide(e, c.getOpt("displayTimeout")); } }; })(this)).on('click.atwhoInner', (function(_this) { return function(e) { - return _this.dispatch(); + return _this.dispatch(e); }; - })(this)); + })(this)).on('scroll.atwhoInner', (function(_this) { + return function() { + var lastScrollTop; + lastScrollTop = _this.$inputor.scrollTop(); + return function(e) { + var currentScrollTop, ref; + currentScrollTop = e.target.scrollTop; + if (lastScrollTop !== currentScrollTop) { + if ((ref = _this.controller()) != null) { + ref.view.hide(e); + } + } + lastScrollTop = currentScrollTop; + return true; + }; + }; + })(this)()); }; App.prototype.shutdown = function() { - var c, _, _ref; - _ref = this.controllers; - for (_ in _ref) { - c = _ref[_]; + var _, c, ref; + ref = this.controllers; + for (_ in ref) { + c = ref[_]; c.destroy(); delete this.controllers[_]; } @@ -138,54 +271,46 @@ App = (function() { return this.$el.remove(); }; - App.prototype.dispatch = function() { - return $.map(this.controllers, (function(_this) { - return function(c) { - var delay; - if (delay = c.get_opt('delay')) { - clearTimeout(_this.delayedCallback); - return _this.delayedCallback = setTimeout(function() { - if (c.look_up()) { - return _this.set_context_for(c.at); - } - }, delay); - } else { - if (c.look_up()) { - return _this.set_context_for(c.at); - } - } - }; - })(this)); + App.prototype.dispatch = function(e) { + var _, c, ref, results; + ref = this.controllers; + results = []; + for (_ in ref) { + c = ref[_]; + results.push(c.lookUp(e)); + } + return results; }; - App.prototype.on_keyup = function(e) { - var _ref; + App.prototype.onKeyup = function(e) { + var ref; switch (e.keyCode) { case KEY_CODE.ESC: e.preventDefault(); - if ((_ref = this.controller()) != null) { - _ref.view.hide(); + if ((ref = this.controller()) != null) { + ref.view.hide(); } break; case KEY_CODE.DOWN: case KEY_CODE.UP: case KEY_CODE.CTRL: + case KEY_CODE.ENTER: $.noop(); break; case KEY_CODE.P: case KEY_CODE.N: if (!e.ctrlKey) { - this.dispatch(); + this.dispatch(e); } break; default: - this.dispatch(); + this.dispatch(e); } }; - App.prototype.on_keydown = function(e) { - var view, _ref; - view = (_ref = this.controller()) != null ? _ref.view : void 0; + App.prototype.onKeydown = function(e) { + var ref, view; + view = (ref = this.controller()) != null ? ref.view : void 0; if (!(view && view.visible())) { return; } @@ -218,11 +343,22 @@ App = (function() { break; case KEY_CODE.TAB: case KEY_CODE.ENTER: + case KEY_CODE.SPACE: if (!view.visible()) { return; } - e.preventDefault(); - view.choose(e); + if (!this.controller().getOpt('spaceSelectsMatch') && e.keyCode === KEY_CODE.SPACE) { + return; + } + if (!this.controller().getOpt('tabSelectsMatch') && e.keyCode === KEY_CODE.TAB) { + return; + } + if (view.highlighted()) { + e.preventDefault(); + view.choose(e); + } else { + view.hide(e); + } break; default: $.noop(); @@ -233,20 +369,23 @@ App = (function() { })(); +var Controller, + slice = [].slice; + Controller = (function() { Controller.prototype.uid = function() { return (Math.random().toString(16) + "000000000").substr(2, 8) + (new Date().getTime()); }; - function Controller(app, at) { + function Controller(app, at1) { this.app = app; - this.at = at; + this.at = at1; this.$inputor = this.app.$inputor; this.id = this.$inputor[0].id || this.uid(); + this.expectedQueryCBId = null; this.setting = null; this.query = null; this.pos = 0; - this.cur_rect = null; this.range = null; if ((this.$el = $("#atwho-ground-" + this.id, this.app.$el)).length === 0) { this.app.$el.append(this.$el = $("<div id='atwho-ground-" + this.id + "'></div>")); @@ -268,70 +407,185 @@ Controller = (function() { return this.$el.remove(); }; - Controller.prototype.call_default = function() { - var args, error, func_name; - func_name = arguments[0], args = 2 <= arguments.length ? __slice.call(arguments, 1) : []; + Controller.prototype.callDefault = function() { + var args, error, error1, funcName; + funcName = arguments[0], args = 2 <= arguments.length ? slice.call(arguments, 1) : []; try { - return DEFAULT_CALLBACKS[func_name].apply(this, args); - } catch (_error) { - error = _error; - return $.error("" + error + " Or maybe At.js doesn't have function " + func_name); + return DEFAULT_CALLBACKS[funcName].apply(this, args); + } catch (error1) { + error = error1; + return $.error(error + " Or maybe At.js doesn't have function " + funcName); } }; Controller.prototype.trigger = function(name, data) { - var alias, event_name; + var alias, eventName; if (data == null) { data = []; } data.push(this); - alias = this.get_opt('alias'); - event_name = alias ? "" + name + "-" + alias + ".atwho" : "" + name + ".atwho"; - return this.$inputor.trigger(event_name, data); + alias = this.getOpt('alias'); + eventName = alias ? name + "-" + alias + ".atwho" : name + ".atwho"; + return this.$inputor.trigger(eventName, data); }; - Controller.prototype.callbacks = function(func_name) { - return this.get_opt("callbacks")[func_name] || DEFAULT_CALLBACKS[func_name]; + Controller.prototype.callbacks = function(funcName) { + return this.getOpt("callbacks")[funcName] || DEFAULT_CALLBACKS[funcName]; }; - Controller.prototype.get_opt = function(at, default_value) { - var e; + Controller.prototype.getOpt = function(at, default_value) { + var e, error1; try { return this.setting[at]; - } catch (_error) { - e = _error; + } catch (error1) { + e = error1; return null; } }; - Controller.prototype.content = function() { - var range; - if (this.$inputor.is('textarea, input')) { - return this.$inputor.val(); + Controller.prototype.insertContentFor = function($li) { + var data, tpl; + tpl = this.getOpt('insertTpl'); + data = $.extend({}, $li.data('item-data'), { + 'atwho-at': this.at + }); + return this.callbacks("tplEval").call(this, tpl, data, "onInsert"); + }; + + Controller.prototype.renderView = function(data) { + var searchKey; + searchKey = this.getOpt("searchKey"); + data = this.callbacks("sorter").call(this, this.query.text, data.slice(0, 1001), searchKey); + return this.view.render(data.slice(0, this.getOpt('limit'))); + }; + + Controller.arrayToDefaultHash = function(data) { + var i, item, len, results; + if (!$.isArray(data)) { + return data; + } + results = []; + for (i = 0, len = data.length; i < len; i++) { + item = data[i]; + if ($.isPlainObject(item)) { + results.push(item); + } else { + results.push({ + name: item + }); + } + } + return results; + }; + + Controller.prototype.lookUp = function(e) { + var query, wait; + if (e && e.type === 'click' && !this.getOpt('lookUpOnClick')) { + return; + } + if (this.getOpt('suspendOnComposing') && this.app.isComposing) { + return; + } + query = this.catchQuery(e); + if (!query) { + this.expectedQueryCBId = null; + return query; + } + this.app.setContextFor(this.at); + if (wait = this.getOpt('delay')) { + this._delayLookUp(query, wait); } else { - if (!(range = this.mark_range())) { - return; + this._lookUp(query); + } + return query; + }; + + Controller.prototype._delayLookUp = function(query, wait) { + var now, remaining; + now = Date.now ? Date.now() : new Date().getTime(); + this.previousCallTime || (this.previousCallTime = now); + remaining = wait - (now - this.previousCallTime); + if ((0 < remaining && remaining < wait)) { + this.previousCallTime = now; + this._stopDelayedCall(); + return this.delayedCallTimeout = setTimeout((function(_this) { + return function() { + _this.previousCallTime = 0; + _this.delayedCallTimeout = null; + return _this._lookUp(query); + }; + })(this), wait); + } else { + this._stopDelayedCall(); + if (this.previousCallTime !== now) { + this.previousCallTime = 0; } - return (range.startContainer.textContent || "").slice(0, range.startOffset); + return this._lookUp(query); } }; - Controller.prototype.catch_query = function() { - var caret_pos, content, end, query, start, subtext; - content = this.content(); - caret_pos = this.$inputor.caret('pos', { + Controller.prototype._stopDelayedCall = function() { + if (this.delayedCallTimeout) { + clearTimeout(this.delayedCallTimeout); + return this.delayedCallTimeout = null; + } + }; + + Controller.prototype._generateQueryCBId = function() { + return {}; + }; + + Controller.prototype._lookUp = function(query) { + var _callback; + _callback = function(queryCBId, data) { + if (queryCBId !== this.expectedQueryCBId) { + return; + } + if (data && data.length > 0) { + return this.renderView(this.constructor.arrayToDefaultHash(data)); + } else { + return this.view.hide(); + } + }; + this.expectedQueryCBId = this._generateQueryCBId(); + return this.model.query(query.text, $.proxy(_callback, this, this.expectedQueryCBId)); + }; + + return Controller; + +})(); + +var TextareaController, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + +TextareaController = (function(superClass) { + extend(TextareaController, superClass); + + function TextareaController() { + return TextareaController.__super__.constructor.apply(this, arguments); + } + + TextareaController.prototype.catchQuery = function() { + var caretPos, content, end, isString, query, start, subtext; + content = this.$inputor.val(); + caretPos = this.$inputor.caret('pos', { iframe: this.app.iframe }); - subtext = content.slice(0, caret_pos); - query = this.callbacks("matcher").call(this, this.at, subtext, this.get_opt('start_with_space')); - if (typeof query === "string" && query.length <= this.get_opt('max_len', 20)) { - start = caret_pos - query.length; + subtext = content.slice(0, caretPos); + query = this.callbacks("matcher").call(this, this.at, subtext, this.getOpt('startWithSpace'), this.getOpt("acceptSpaceBar")); + isString = typeof query === 'string'; + if (isString && query.length < this.getOpt('minLen', 0)) { + return; + } + if (isString && query.length <= this.getOpt('maxLen', 20)) { + start = caretPos - query.length; end = start + query.length; this.pos = start; query = { 'text': query, - 'head_pos': start, - 'end_pos': end + 'headPos': start, + 'endPos': end }; this.trigger("matched", [this.at, query.text]); } else { @@ -341,126 +595,263 @@ Controller = (function() { return this.query = query; }; - Controller.prototype.rect = function() { - var c, iframe_offset, scale_bottom; + TextareaController.prototype.rect = function() { + var c, iframeOffset, scaleBottom; if (!(c = this.$inputor.caret('offset', this.pos - 1, { iframe: this.app.iframe }))) { return; } - if (this.app.iframe && !this.app.iframeStandalone) { - iframe_offset = $(this.app.iframe).offset(); - c.left += iframe_offset.left; - c.top += iframe_offset.top; + if (this.app.iframe && !this.app.iframeAsRoot) { + iframeOffset = $(this.app.iframe).offset(); + c.left += iframeOffset.left; + c.top += iframeOffset.top; } - if (this.$inputor.is('[contentEditable]')) { - c = this.cur_rect || (this.cur_rect = c); - } - scale_bottom = this.app.document.selection ? 0 : 2; + scaleBottom = this.app.document.selection ? 0 : 2; return { left: c.left, top: c.top, - bottom: c.top + c.height + scale_bottom + bottom: c.top + c.height + scaleBottom }; }; - Controller.prototype.reset_rect = function() { - if (this.$inputor.is('[contentEditable]')) { - return this.cur_rect = null; + TextareaController.prototype.insert = function(content, $li) { + var $inputor, source, startStr, suffix, text; + $inputor = this.$inputor; + source = $inputor.val(); + startStr = source.slice(0, Math.max(this.query.headPos - this.at.length, 0)); + suffix = (suffix = this.getOpt('suffix')) === "" ? suffix : suffix || " "; + content += suffix; + text = "" + startStr + content + (source.slice(this.query['endPos'] || 0)); + $inputor.val(text); + $inputor.caret('pos', startStr.length + content.length, { + iframe: this.app.iframe + }); + if (!$inputor.is(':focus')) { + $inputor.focus(); } + return $inputor.change(); }; - Controller.prototype.mark_range = function() { + return TextareaController; + +})(Controller); + +var EditableController, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + +EditableController = (function(superClass) { + extend(EditableController, superClass); + + function EditableController() { + return EditableController.__super__.constructor.apply(this, arguments); + } + + EditableController.prototype._getRange = function() { var sel; - if (!this.$inputor.is('[contentEditable]')) { + sel = this.app.window.getSelection(); + if (sel.rangeCount > 0) { + return sel.getRangeAt(0); + } + }; + + EditableController.prototype._setRange = function(position, node, range) { + if (range == null) { + range = this._getRange(); + } + if (!(range && node)) { return; } - if (this.app.window.getSelection && (sel = this.app.window.getSelection()).rangeCount > 0) { - return this.range = sel.getRangeAt(0); - } else if (this.app.document.selection) { - return this.ie8_range = this.app.document.selection.createRange(); + node = $(node)[0]; + if (position === 'after') { + range.setEndAfter(node); + range.setStartAfter(node); + } else { + range.setEndBefore(node); + range.setStartBefore(node); } + range.collapse(false); + return this._clearRange(range); }; - Controller.prototype.insert_content_for = function($li) { - var data, data_value, tpl; - data_value = $li.data('value'); - tpl = this.get_opt('insert_tpl'); - if (this.$inputor.is('textarea, input') || !tpl) { - return data_value; + EditableController.prototype._clearRange = function(range) { + var sel; + if (range == null) { + range = this._getRange(); + } + sel = this.app.window.getSelection(); + if (this.ctrl_a_pressed == null) { + sel.removeAllRanges(); + return sel.addRange(range); } - data = $.extend({}, $li.data('item-data'), { - 'atwho-data-value': data_value, - 'atwho-at': this.at - }); - return this.callbacks("tpl_eval").call(this, tpl, data); }; - Controller.prototype.insert = function(content, $li) { - var $inputor, node, pos, range, sel, source, start_str, text, wrapped_contents, _i, _len, _ref; - $inputor = this.$inputor; - wrapped_contents = this.callbacks('inserting_wrapper').call(this, $inputor, content, this.get_opt("suffix")); - if ($inputor.is('textarea, input')) { - source = $inputor.val(); - start_str = source.slice(0, Math.max(this.query.head_pos - this.at.length, 0)); - text = "" + start_str + wrapped_contents + (source.slice(this.query['end_pos'] || 0)); - $inputor.val(text); - $inputor.caret('pos', start_str.length + wrapped_contents.length, { - iframe: this.app.iframe - }); - } else if (range = this.range) { - pos = range.startOffset - (this.query.end_pos - this.query.head_pos) - this.at.length; - range.setStart(range.endContainer, Math.max(pos, 0)); - range.setEnd(range.endContainer, range.endOffset); - range.deleteContents(); - _ref = $(wrapped_contents, this.app.document); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - node = _ref[_i]; - range.insertNode(node); - range.setEndAfter(node); - range.collapse(false); + EditableController.prototype._movingEvent = function(e) { + var ref; + return e.type === 'click' || ((ref = e.which) === KEY_CODE.RIGHT || ref === KEY_CODE.LEFT || ref === KEY_CODE.UP || ref === KEY_CODE.DOWN); + }; + + EditableController.prototype._unwrap = function(node) { + var next; + node = $(node).unwrap().get(0); + if ((next = node.nextSibling) && next.nodeValue) { + node.nodeValue += next.nodeValue; + $(next).remove(); + } + return node; + }; + + EditableController.prototype.catchQuery = function(e) { + var $inserted, $query, _range, index, inserted, isString, lastNode, matched, offset, query, query_content, range; + if (!(range = this._getRange())) { + return; + } + if (!range.collapsed) { + return; + } + if (e.which === KEY_CODE.ENTER) { + ($query = $(range.startContainer).closest('.atwho-query')).contents().unwrap(); + if ($query.is(':empty')) { + $query.remove(); } - sel = this.app.window.getSelection(); - sel.removeAllRanges(); - sel.addRange(range); - } else if (range = this.ie8_range) { - range.moveStart('character', this.query.end_pos - this.query.head_pos - this.at.length); - range.pasteHTML(wrapped_contents); - range.collapse(false); - range.select(); + ($query = $(".atwho-query", this.app.document)).text($query.text()).contents().last().unwrap(); + this._clearRange(); + return; } - if (!$inputor.is(':focus')) { - $inputor.focus(); + if (/firefox/i.test(navigator.userAgent)) { + if ($(range.startContainer).is(this.$inputor)) { + this._clearRange(); + return; + } + if (e.which === KEY_CODE.BACKSPACE && range.startContainer.nodeType === document.ELEMENT_NODE && (offset = range.startOffset - 1) >= 0) { + _range = range.cloneRange(); + _range.setStart(range.startContainer, offset); + if ($(_range.cloneContents()).contents().last().is('.atwho-inserted')) { + inserted = $(range.startContainer).contents().get(offset); + this._setRange('after', $(inserted).contents().last()); + } + } else if (e.which === KEY_CODE.LEFT && range.startContainer.nodeType === document.TEXT_NODE) { + $inserted = $(range.startContainer.previousSibling); + if ($inserted.is('.atwho-inserted') && range.startOffset === 0) { + this._setRange('after', $inserted.contents().last()); + } + } + } + $(range.startContainer).closest('.atwho-inserted').addClass('atwho-query').siblings().removeClass('atwho-query'); + if (($query = $(".atwho-query", this.app.document)).length > 0 && $query.is(':empty') && $query.text().length === 0) { + $query.remove(); + } + if (!this._movingEvent(e)) { + $query.removeClass('atwho-inserted'); + } + if ($query.length > 0) { + switch (e.which) { + case KEY_CODE.LEFT: + this._setRange('before', $query.get(0), range); + $query.removeClass('atwho-query'); + return; + case KEY_CODE.RIGHT: + this._setRange('after', $query.get(0).nextSibling, range); + $query.removeClass('atwho-query'); + return; + } + } + if ($query.length > 0 && (query_content = $query.attr('data-atwho-at-query'))) { + $query.empty().html(query_content).attr('data-atwho-at-query', null); + this._setRange('after', $query.get(0), range); + } + _range = range.cloneRange(); + _range.setStart(range.startContainer, 0); + matched = this.callbacks("matcher").call(this, this.at, _range.toString(), this.getOpt('startWithSpace'), this.getOpt("acceptSpaceBar")); + isString = typeof matched === 'string'; + if ($query.length === 0 && isString && (index = range.startOffset - this.at.length - matched.length) >= 0) { + range.setStart(range.startContainer, index); + $query = $('<span/>', this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass('atwho-query'); + range.surroundContents($query.get(0)); + lastNode = $query.contents().last().get(0); + if (lastNode) { + if (/firefox/i.test(navigator.userAgent)) { + range.setStart(lastNode, lastNode.length); + range.setEnd(lastNode, lastNode.length); + this._clearRange(range); + } else { + this._setRange('after', lastNode, range); + } + } + } + if (isString && matched.length < this.getOpt('minLen', 0)) { + return; + } + if (isString && matched.length <= this.getOpt('maxLen', 20)) { + query = { + text: matched, + el: $query + }; + this.trigger("matched", [this.at, query.text]); + return this.query = query; + } else { + this.view.hide(); + this.query = { + el: $query + }; + if ($query.text().indexOf(this.at) >= 0) { + if (this._movingEvent(e) && $query.hasClass('atwho-inserted')) { + $query.removeClass('atwho-query'); + } else if (false !== this.callbacks('afterMatchFailed').call(this, this.at, $query)) { + this._setRange("after", this._unwrap($query.text($query.text()).contents().first())); + } + } + return null; } - return $inputor.change(); }; - Controller.prototype.render_view = function(data) { - var search_key; - search_key = this.get_opt("search_key"); - data = this.callbacks("sorter").call(this, this.query.text, data.slice(0, 1001), search_key); - return this.view.render(data.slice(0, this.get_opt('limit'))); + EditableController.prototype.rect = function() { + var $iframe, iframeOffset, rect; + rect = this.query.el.offset(); + if (!(rect && this.query.el[0].getClientRects().length)) { + return; + } + if (this.app.iframe && !this.app.iframeAsRoot) { + iframeOffset = ($iframe = $(this.app.iframe)).offset(); + rect.left += iframeOffset.left - this.$inputor.scrollLeft(); + rect.top += iframeOffset.top - this.$inputor.scrollTop(); + } + rect.bottom = rect.top + this.query.el.height(); + return rect; }; - Controller.prototype.look_up = function() { - var query, _callback; - if (!(query = this.catch_query())) { - return; + EditableController.prototype.insert = function(content, $li) { + var data, overrides, range, suffix, suffixNode; + if (!this.$inputor.is(':focus')) { + this.$inputor.focus(); } - _callback = function(data) { - if (data && data.length > 0) { - return this.render_view(data); - } else { - return this.view.hide(); + overrides = this.getOpt('functionOverrides'); + if (overrides.insert) { + return overrides.insert.call(this, content, $li); + } + suffix = (suffix = this.getOpt('suffix')) === "" ? suffix : suffix || "\u00A0"; + data = $li.data('item-data'); + this.query.el.removeClass('atwho-query').addClass('atwho-inserted').html(content).attr('data-atwho-at-query', "" + data['atwho-at'] + this.query.text).attr('contenteditable', "false"); + if (range = this._getRange()) { + if (this.query.el.length) { + range.setEndAfter(this.query.el[0]); } - }; - this.model.query(query.text, $.proxy(_callback, this)); - return query; + range.collapse(false); + range.insertNode(suffixNode = this.app.document.createTextNode("" + suffix)); + this._setRange('after', suffixNode, range); + } + if (!this.$inputor.is(':focus')) { + this.$inputor.focus(); + } + return this.$inputor.change(); }; - return Controller; + return EditableController; -})(); +})(Controller); + +var Model; Model = (function() { function Model(context) { @@ -478,15 +869,15 @@ Model = (function() { }; Model.prototype.query = function(query, callback) { - var data, search_key, _remote_filter; + var _remoteFilter, data, searchKey; data = this.fetch(); - search_key = this.context.get_opt("search_key"); - data = this.context.callbacks('filter').call(this.context, query, data, search_key) || []; - _remote_filter = this.context.callbacks('remote_filter'); - if (data.length > 0 || (!_remote_filter && data.length === 0)) { + searchKey = this.context.getOpt("searchKey"); + data = this.context.callbacks('filter').call(this.context, query, data, searchKey) || []; + _remoteFilter = this.context.callbacks('remoteFilter'); + if (data.length > 0 || (!_remoteFilter && data.length === 0)) { return callback(data); } else { - return _remote_filter.call(this.context, query, callback); + return _remoteFilter.call(this.context, query, callback); } }; @@ -495,7 +886,7 @@ Model = (function() { }; Model.prototype.save = function(data) { - return this.storage.data(this.at, this.context.callbacks("before_save").call(this.context, data || [])); + return this.storage.data(this.at, this.context.callbacks("beforeSave").call(this.context, data || [])); }; Model.prototype.load = function(data) { @@ -526,18 +917,25 @@ Model = (function() { })(); +var View; + View = (function() { function View(context) { this.context = context; this.$el = $("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"); - this.timeout_id = null; + this.$elUl = this.$el.children(); + this.timeoutID = null; this.context.$el.append(this.$el); - this.bind_event(); + this.bindEvent(); } View.prototype.init = function() { - var id; - id = this.context.get_opt("alias") || this.context.at.charCodeAt(0); + var header_tpl, id; + id = this.context.getOpt("alias") || this.context.at.charCodeAt(0); + header_tpl = this.context.getOpt("headerTpl"); + if (header_tpl && this.$el.children().length === 1) { + this.$el.prepend(header_tpl); + } return this.$el.attr({ 'id': "at-view-" + id }); @@ -547,13 +945,27 @@ View = (function() { return this.$el.remove(); }; - View.prototype.bind_event = function() { - var $menu; + View.prototype.bindEvent = function() { + var $menu, lastCoordX, lastCoordY; $menu = this.$el.find('ul'); - return $menu.on('mouseenter.atwho-view', 'li', function(e) { - $menu.find('.cur').removeClass('cur'); - return $(e.currentTarget).addClass('cur'); - }).on('click.atwho-view', 'li', (function(_this) { + lastCoordX = 0; + lastCoordY = 0; + return $menu.on('mousemove.atwho-view', 'li', (function(_this) { + return function(e) { + var $cur; + if (lastCoordX === e.clientX && lastCoordY === e.clientY) { + return; + } + lastCoordX = e.clientX; + lastCoordY = e.clientY; + $cur = $(e.currentTarget); + if ($cur.hasClass('cur')) { + return; + } + $menu.find('.cur').removeClass('cur'); + return $cur.addClass('cur'); + }; + })(this)).on('click.atwho-view', 'li', (function(_this) { return function(e) { $menu.find('.cur').removeClass('cur'); $(e.currentTarget).addClass('cur'); @@ -564,25 +976,30 @@ View = (function() { }; View.prototype.visible = function() { - return this.$el.is(":visible"); + return $.expr.filters.visible(this.$el[0]); + }; + + View.prototype.highlighted = function() { + return this.$el.find(".cur").length > 0; }; View.prototype.choose = function(e) { var $li, content; if (($li = this.$el.find(".cur")).length) { - content = this.context.insert_content_for($li); - this.context.insert(this.context.callbacks("before_insert").call(this.context, content, $li), $li); + content = this.context.insertContentFor($li); + this.context._stopDelayedCall(); + this.context.insert(this.context.callbacks("beforeInsert").call(this.context, content, $li, e), $li); this.context.trigger("inserted", [$li, e]); this.hide(e); } - if (this.context.get_opt("hide_without_suffix")) { - return this.stop_showing = true; + if (this.context.getOpt("hideWithoutSuffix")) { + return this.stopShowing = true; } }; View.prototype.reposition = function(rect) { - var offset, overflowOffset, _ref, _window; - _window = this.context.app.iframeStandalone ? this.context.app.window : window; + var _window, offset, overflowOffset, ref; + _window = this.context.app.iframeAsRoot ? this.context.app.window : window; if (rect.bottom + this.$el.height() - $(_window).scrollTop() > $(_window).height()) { rect.bottom = rect.top - this.$el.height(); } @@ -593,46 +1010,57 @@ View = (function() { left: rect.left, top: rect.bottom }; - if ((_ref = this.context.callbacks("before_reposition")) != null) { - _ref.call(this.context, offset); + if ((ref = this.context.callbacks("beforeReposition")) != null) { + ref.call(this.context, offset); } this.$el.offset(offset); return this.context.trigger("reposition", [offset]); }; View.prototype.next = function() { - var cur, next; + var cur, next, nextEl, offset; cur = this.$el.find('.cur').removeClass('cur'); next = cur.next(); if (!next.length) { next = this.$el.find('li:first'); } next.addClass('cur'); - return this.$el.animate({ - scrollTop: Math.max(0, cur.innerHeight() * (next.index() + 2) - this.$el.height()) - }, 150); + nextEl = next[0]; + offset = nextEl.offsetTop + nextEl.offsetHeight + (nextEl.nextSibling ? nextEl.nextSibling.offsetHeight : 0); + return this.scrollTop(Math.max(0, offset - this.$el.height())); }; View.prototype.prev = function() { - var cur, prev; + var cur, offset, prev, prevEl; cur = this.$el.find('.cur').removeClass('cur'); prev = cur.prev(); if (!prev.length) { prev = this.$el.find('li:last'); } prev.addClass('cur'); - return this.$el.animate({ - scrollTop: Math.max(0, cur.innerHeight() * (prev.index() + 2) - this.$el.height()) - }, 150); + prevEl = prev[0]; + offset = prevEl.offsetTop + prevEl.offsetHeight + (prevEl.nextSibling ? prevEl.nextSibling.offsetHeight : 0); + return this.scrollTop(Math.max(0, offset - this.$el.height())); + }; + + View.prototype.scrollTop = function(scrollTop) { + var scrollDuration; + scrollDuration = this.context.getOpt('scrollDuration'); + if (scrollDuration) { + return this.$elUl.animate({ + scrollTop: scrollTop + }, scrollDuration); + } else { + return this.$elUl.scrollTop(scrollTop); + } }; View.prototype.show = function() { var rect; - if (this.stop_showing) { - this.stop_showing = false; + if (this.stopShowing) { + this.stopShowing = false; return; } - this.context.mark_range(); if (!this.visible()) { this.$el.show(); this.$el.scrollTop(0); @@ -649,7 +1077,6 @@ View = (function() { return; } if (isNaN(time)) { - this.context.reset_rect(); this.$el.hide(); return this.context.trigger('hidden', [e]); } else { @@ -658,32 +1085,32 @@ View = (function() { return _this.hide(); }; })(this); - clearTimeout(this.timeout_id); - return this.timeout_id = setTimeout(callback, time); + clearTimeout(this.timeoutID); + return this.timeoutID = setTimeout(callback, time); } }; View.prototype.render = function(list) { - var $li, $ul, item, li, tpl, _i, _len; + var $li, $ul, i, item, len, li, tpl; if (!($.isArray(list) && list.length > 0)) { this.hide(); return; } this.$el.find('ul').empty(); $ul = this.$el.find('ul'); - tpl = this.context.get_opt('tpl'); - for (_i = 0, _len = list.length; _i < _len; _i++) { - item = list[_i]; + tpl = this.context.getOpt('displayTpl'); + for (i = 0, len = list.length; i < len; i++) { + item = list[i]; item = $.extend({}, item, { 'atwho-at': this.context.at }); - li = this.context.callbacks("tpl_eval").call(this.context, tpl, item); + li = this.context.callbacks("tplEval").call(this.context, tpl, item, "onDisplay"); $li = $(this.context.callbacks("highlighter").call(this.context, li, this.context.query.text)); $li.data("item-data", item); $ul.append($li); } this.show(); - if (this.context.get_opt('highlight_first')) { + if (this.context.getOpt('highlightFirst')) { return $ul.find("li:first").addClass("cur"); } }; @@ -692,125 +1119,7 @@ View = (function() { })(); -KEY_CODE = { - DOWN: 40, - UP: 38, - ESC: 27, - TAB: 9, - ENTER: 13, - CTRL: 17, - P: 80, - N: 78 -}; - -DEFAULT_CALLBACKS = { - before_save: function(data) { - var item, _i, _len, _results; - if (!$.isArray(data)) { - return data; - } - _results = []; - for (_i = 0, _len = data.length; _i < _len; _i++) { - item = data[_i]; - if ($.isPlainObject(item)) { - _results.push(item); - } else { - _results.push({ - name: item - }); - } - } - return _results; - }, - matcher: function(flag, subtext, should_start_with_space) { - var match, regexp, _a, _y; - flag = flag.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - if (should_start_with_space) { - flag = '(?:^|\\s)' + flag; - } - _a = decodeURI("%C3%80"); - _y = decodeURI("%C3%BF"); - regexp = new RegExp("" + flag + "([A-Za-z" + _a + "-" + _y + "0-9_\+\-]*)$|" + flag + "([^\\x00-\\xff]*)$", 'gi'); - match = regexp.exec(subtext); - if (match) { - return match[2] || match[1]; - } else { - return null; - } - }, - filter: function(query, data, search_key) { - var item, _i, _len, _results; - _results = []; - for (_i = 0, _len = data.length; _i < _len; _i++) { - item = data[_i]; - if (~new String(item[search_key]).toLowerCase().indexOf(query.toLowerCase())) { - _results.push(item); - } - } - return _results; - }, - remote_filter: null, - sorter: function(query, items, search_key) { - var item, _i, _len, _results; - if (!query) { - return items; - } - _results = []; - for (_i = 0, _len = items.length; _i < _len; _i++) { - item = items[_i]; - item.atwho_order = new String(item[search_key]).toLowerCase().indexOf(query.toLowerCase()); - if (item.atwho_order > -1) { - _results.push(item); - } - } - return _results.sort(function(a, b) { - return a.atwho_order - b.atwho_order; - }); - }, - tpl_eval: function(tpl, map) { - var error; - try { - return tpl.replace(/\$\{([^\}]*)\}/g, function(tag, key, pos) { - return map[key]; - }); - } catch (_error) { - error = _error; - return ""; - } - }, - highlighter: function(li, query) { - var regexp; - if (!query) { - return li; - } - regexp = new RegExp(">\\s*(\\w*?)(" + query.replace("+", "\\+") + ")(\\w*)\\s*<", 'ig'); - return li.replace(regexp, function(str, $1, $2, $3) { - return '> ' + $1 + '<strong>' + $2 + '</strong>' + $3 + ' <'; - }); - }, - before_insert: function(value, $li) { - return value; - }, - inserting_wrapper: function($inputor, content, suffix) { - var wrapped_content; - suffix = suffix === "" ? suffix : suffix || " "; - if ($inputor.is('textarea, input')) { - return '' + content + suffix; - } else if ($inputor.attr('contentEditable') === 'true') { - suffix = suffix === " " ? " " : suffix; - if (/firefox/i.test(navigator.userAgent)) { - wrapped_content = "<span>" + content + suffix + "</span>"; - } else { - suffix = "<span contenteditable='false'>" + suffix + "</span>"; - wrapped_content = "<span contenteditable='false'>" + content + suffix + "</span>"; - } - if (this.app.document.selection) { - wrapped_content = "<span contenteditable='true'>" + content + "</span>"; - } - return wrapped_content + "<span></span>"; - } - } -}; +var Api; Api = { load: function(at, data) { @@ -819,8 +1128,22 @@ Api = { return c.model.load(data); } }, - setIframe: function(iframe, standalone) { - this.setIframe(iframe, standalone); + isSelecting: function() { + var ref; + return !!((ref = this.controller()) != null ? ref.view.visible() : void 0); + }, + hide: function() { + var ref; + return (ref = this.controller()) != null ? ref.view.hide() : void 0; + }, + reposition: function() { + var c; + if (c = this.controller()) { + return c.view.reposition(c.rect()); + } + }, + setIframe: function(iframe, asRoot) { + this.setupRootElement(iframe, asRoot); return null; }, run: function() { @@ -833,7 +1156,7 @@ Api = { }; $.fn.atwho = function(method) { - var result, _args; + var _args, result; _args = arguments; result = null; this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function() { @@ -846,30 +1169,44 @@ $.fn.atwho = function(method) { } else if (Api[method] && app) { return result = Api[method].apply(app, Array.prototype.slice.call(_args, 1)); } else { - return $.error("Method " + method + " does not exist on jQuery.caret"); + return $.error("Method " + method + " does not exist on jQuery.atwho"); } }); - return result || this; + if (result != null) { + return result; + } else { + return this; + } }; $.fn.atwho["default"] = { at: void 0, alias: void 0, data: null, - tpl: "<li data-value='${atwho-at}${name}'>${name}</li>", - insert_tpl: "<span id='${id}'>${atwho-data-value}</span>", + displayTpl: "<li>${name}</li>", + insertTpl: "${atwho-at}${name}", + headerTpl: null, callbacks: DEFAULT_CALLBACKS, - search_key: "name", + functionOverrides: {}, + searchKey: "name", suffix: void 0, - hide_without_suffix: false, - start_with_space: true, - highlight_first: true, + hideWithoutSuffix: false, + startWithSpace: true, + acceptSpaceBar: false, + highlightFirst: true, limit: 5, - max_len: 20, - display_timeout: 300, - delay: null + maxLen: 20, + minLen: 0, + displayTimeout: 300, + delay: null, + spaceSelectsMatch: false, + tabSelectsMatch: true, + editableAtwhoQueryAttrs: {}, + scrollDuration: 150, + suspendOnComposing: true, + lookUpOnClick: true }; - +$.fn.atwho.debug = false; })); diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.min.js index 94a8c05cedee05a54461bc50fdff1a512074bd94..2e8363cf9e4b0c0e4653a23a71acaed5a00b6d5e 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.atwho.min.js @@ -1 +1 @@ -!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(i){return t.returnExportsGlobal=e(i)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){var e,i,n,r,o,s,a,h=[].slice;i=function(){function e(e){this.current_flag=null,this.controllers={},this.alias_maps={},this.$inputor=t(e),this.setIframe(),this.listen()}return e.prototype.createContainer=function(e){if(0===(this.$el=t("#atwho-container",e)).length)return t(e.body).append(this.$el=t("<div id='atwho-container'></div>"))},e.prototype.setIframe=function(t,e){var i;return null==e&&(e=!1),t?(this.window=t.contentWindow,this.document=t.contentDocument||this.window.document,this.iframe=t):(this.document=document,this.window=window,this.iframe=null),(this.iframeStandalone=e)?(null!=(i=this.$el)&&i.remove(),this.createContainer(this.document)):this.createContainer(document)},e.prototype.controller=function(t){var e,i,n,r;if(this.alias_maps[t])i=this.controllers[this.alias_maps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i||this.controllers[this.current_flag]},e.prototype.set_context_for=function(t){return this.current_flag=t,this},e.prototype.reg=function(t,e){var i,r;return i=(r=this.controllers)[t]||(r[t]=new n(this,t)),e.alias&&(this.alias_maps[e.alias]=t),i.init(e),this},e.prototype.listen=function(){return this.$inputor.on("keyup.atwhoInner",function(t){return function(e){return t.on_keyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.on_keydown(e)}}(this)).on("scroll.atwhoInner",function(t){return function(e){var i;return null!=(i=t.controller())?i.view.hide(e):void 0}}(this)).on("blur.atwhoInner",function(t){return function(e){var i;if(i=t.controller())return i.view.hide(e,i.get_opt("display_timeout"))}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch()}}(this))},e.prototype.shutdown=function(){var t,e;e=this.controllers;for(t in e)e[t].destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(){return t.map(this.controllers,function(t){return function(e){var i;return(i=e.get_opt("delay"))?(clearTimeout(t.delayedCallback),t.delayedCallback=setTimeout(function(){if(e.look_up())return t.set_context_for(e.at)},i)):e.look_up()?t.set_context_for(e.at):void 0}}(this))},e.prototype.on_keyup=function(e){var i;switch(e.keyCode){case o.ESC:e.preventDefault(),null!=(i=this.controller())&&i.view.hide();break;case o.DOWN:case o.UP:case o.CTRL:t.noop();break;case o.P:case o.N:e.ctrlKey||this.dispatch();break;default:this.dispatch()}},e.prototype.on_keydown=function(e){var i,n;if((i=null!=(n=this.controller())?n.view:void 0)&&i.visible())switch(e.keyCode){case o.ESC:e.preventDefault(),i.hide(e);break;case o.UP:e.preventDefault(),i.prev();break;case o.DOWN:e.preventDefault(),i.next();break;case o.P:if(!e.ctrlKey)return;e.preventDefault(),i.prev();break;case o.N:if(!e.ctrlKey)return;e.preventDefault(),i.next();break;case o.TAB:case o.ENTER:if(!i.visible())return;e.preventDefault(),i.choose(e);break;default:t.noop()}},e}(),n=function(){function e(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.setting=null,this.query=null,this.pos=0,this.cur_rect=null,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new s(this),this.view=new a(this)}return e.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},e.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho.default,e),this.view.init(),this.model.reload(this.setting.data)},e.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},e.prototype.call_default=function(){var e,i,n;n=arguments[0],e=2<=arguments.length?h.call(arguments,1):[];try{return r[n].apply(this,e)}catch(e){return i=e,t.error(i+" Or maybe At.js doesn't have function "+n)}},e.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.get_opt("alias"),n=i?t+"-"+i+".atwho":t+".atwho",this.$inputor.trigger(n,e)},e.prototype.callbacks=function(t){return this.get_opt("callbacks")[t]||r[t]},e.prototype.get_opt=function(t,e){try{return this.setting[t]}catch(t){return t,null}},e.prototype.content=function(){var t;if(this.$inputor.is("textarea, input"))return this.$inputor.val();if(t=this.mark_range())return(t.startContainer.textContent||"").slice(0,t.startOffset)},e.prototype.catch_query=function(){var t,e,i,n,r,o;return e=this.content(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),o=e.slice(0,t),"string"==typeof(n=this.callbacks("matcher").call(this,this.at,o,this.get_opt("start_with_space")))&&n.length<=this.get_opt("max_len",20)?(i=(r=t-n.length)+n.length,this.pos=r,n={text:n,head_pos:r,end_pos:i},this.trigger("matched",[this.at,n.text])):(n=null,this.view.hide()),this.query=n},e.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeStandalone&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),this.$inputor.is("[contentEditable]")&&(e=this.cur_rect||(this.cur_rect=e)),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},e.prototype.reset_rect=function(){if(this.$inputor.is("[contentEditable]"))return this.cur_rect=null},e.prototype.mark_range=function(){var t;if(this.$inputor.is("[contentEditable]"))return this.app.window.getSelection&&(t=this.app.window.getSelection()).rangeCount>0?this.range=t.getRangeAt(0):this.app.document.selection?this.ie8_range=this.app.document.selection.createRange():void 0},e.prototype.insert_content_for=function(e){var i,n,r;return n=e.data("value"),r=this.get_opt("insert_tpl"),this.$inputor.is("textarea, input")||!r?n:(i=t.extend({},e.data("item-data"),{"atwho-data-value":n,"atwho-at":this.at}),this.callbacks("tpl_eval").call(this,r,i))},e.prototype.insert=function(e,i){var n,r,o,s,a,h,l,u,c,p,f,d;if(n=this.$inputor,c=this.callbacks("inserting_wrapper").call(this,n,e,this.get_opt("suffix")),n.is("textarea, input"))u=""+(l=(h=n.val()).slice(0,Math.max(this.query.head_pos-this.at.length,0)))+c+h.slice(this.query.end_pos||0),n.val(u),n.caret("pos",l.length+c.length,{iframe:this.app.iframe});else if(s=this.range){for(o=s.startOffset-(this.query.end_pos-this.query.head_pos)-this.at.length,s.setStart(s.endContainer,Math.max(o,0)),s.setEnd(s.endContainer,s.endOffset),s.deleteContents(),p=0,f=(d=t(c,this.app.document)).length;p<f;p++)r=d[p],s.insertNode(r),s.setEndAfter(r),s.collapse(!1);(a=this.app.window.getSelection()).removeAllRanges(),a.addRange(s)}else(s=this.ie8_range)&&(s.moveStart("character",this.query.end_pos-this.query.head_pos-this.at.length),s.pasteHTML(c),s.collapse(!1),s.select());return n.is(":focus")||n.focus(),n.change()},e.prototype.render_view=function(t){var e;return e=this.get_opt("search_key"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.get_opt("limit")))},e.prototype.look_up=function(){var e,i;if(e=this.catch_query())return i=function(t){return t&&t.length>0?this.render_view(t):this.view.hide()},this.model.query(e.text,t.proxy(i,this)),e},e}(),s=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return i=this.fetch(),n=this.context.get_opt("search_key"),i=this.context.callbacks("filter").call(this.context,t,i,n)||[],r=this.context.callbacks("remote_filter"),i.length>0||!r&&0===i.length?e(i):r.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("before_save").call(this.context,t||[]))},e.prototype.load=function(t){if(!this.saved()&&t)return this._load(t)},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}(),a=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.timeout_id=null,this.context.$el.append(this.$el),this.bind_event()}return e.prototype.init=function(){var t;return t=this.context.get_opt("alias")||this.context.at.charCodeAt(0),this.$el.attr({id:"at-view-"+t})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bind_event=function(){var e;return(e=this.$el.find("ul")).on("mouseenter.atwho-view","li",function(i){return e.find(".cur").removeClass("cur"),t(i.currentTarget).addClass("cur")}).on("click.atwho-view","li",function(i){return function(n){return e.find(".cur").removeClass("cur"),t(n.currentTarget).addClass("cur"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return this.$el.is(":visible")},e.prototype.choose=function(t){var e,i;if((e=this.$el.find(".cur")).length&&(i=this.context.insert_content_for(e),this.context.insert(this.context.callbacks("before_insert").call(this.context,i,e),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.get_opt("hide_without_suffix"))return this.stop_showing=!0},e.prototype.reposition=function(e){var i,n,r,o;return o=this.context.app.iframeStandalone?this.context.app.window:window,e.bottom+this.$el.height()-t(o).scrollTop()>t(o).height()&&(e.bottom=e.top-this.$el.height()),e.left>(n=t(o).width()-this.$el.width()-5)&&(e.left=n),i={left:e.left,top:e.bottom},null!=(r=this.context.callbacks("before_reposition"))&&r.call(this.context,i),this.$el.offset(i),this.context.trigger("reposition",[i])},e.prototype.next=function(){var t,e;return t=this.$el.find(".cur").removeClass("cur"),(e=t.next()).length||(e=this.$el.find("li:first")),e.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,t.innerHeight()*(e.index()+2)-this.$el.height())},150)},e.prototype.prev=function(){var t,e;return t=this.$el.find(".cur").removeClass("cur"),(e=t.prev()).length||(e=this.$el.find("li:last")),e.addClass("cur"),this.$el.animate({scrollTop:Math.max(0,t.innerHeight()*(e.index()+2)-this.$el.height())},150)},e.prototype.show=function(){var t;{if(!this.stop_showing)return this.context.mark_range(),this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0;this.stop_showing=!1}},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.context.reset_rect(),this.$el.hide(),this.context.trigger("hidden",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeout_id),this.timeout_id=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,h;{if(t.isArray(e)&&e.length>0){for(this.$el.find("ul").empty(),n=this.$el.find("ul"),s=this.context.get_opt("tpl"),a=0,h=e.length;a<h;a++)r=e[a],r=t.extend({},r,{"atwho-at":this.context.at}),o=this.context.callbacks("tpl_eval").call(this.context,s,r),(i=t(this.context.callbacks("highlighter").call(this.context,o,this.context.query.text))).data("item-data",r),n.append(i);return this.show(),this.context.get_opt("highlight_first")?n.find("li:first").addClass("cur"):void 0}this.hide()}},e}(),o={DOWN:40,UP:38,ESC:27,TAB:9,ENTER:13,CTRL:17,P:80,N:78},r={before_save:function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],n=0,r=e.length;n<r;n++)i=e[n],t.isPlainObject(i)?o.push(i):o.push({name:i});return o},matcher:function(t,e,i){var n,r,o,s;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i&&(t="(?:^|\\s)"+t),o=decodeURI("%C3%80"),s=decodeURI("%C3%BF"),r=new RegExp(t+"([A-Za-z"+o+"-"+s+"0-9_+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi"),(n=r.exec(e))?n[2]||n[1]:null},filter:function(t,e,i){var n,r,o,s;for(s=[],r=0,o=e.length;r<o;r++)n=e[r],~new String(n[i]).toLowerCase().indexOf(t.toLowerCase())&&s.push(n);return s},remote_filter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(s=[],r=0,o=e.length;r<o;r++)(n=e[r]).atwho_order=new String(n[i]).toLowerCase().indexOf(t.toLowerCase()),n.atwho_order>-1&&s.push(n);return s.sort(function(t,e){return t.atwho_order-e.atwho_order})},tpl_eval:function(t,e){try{return t.replace(/\$\{([^\}]*)\}/g,function(t,i,n){return e[i]})}catch(t){return t,""}},highlighter:function(t,e){var i;return e?(i=new RegExp(">\\s*(\\w*?)("+e.replace("+","\\+")+")(\\w*)\\s*<","ig"),t.replace(i,function(t,e,i,n){return"> "+e+"<strong>"+i+"</strong>"+n+" <"})):t},before_insert:function(t,e){return t},inserting_wrapper:function(t,e,i){var n;return i=""===i?i:i||" ",t.is("textarea, input")?""+e+i:"true"===t.attr("contentEditable")?(i=" "===i?" ":i,n=/firefox/i.test(navigator.userAgent)?"<span>"+e+i+"</span>":"<span contenteditable='false'>"+e+(i="<span contenteditable='false'>"+i+"</span>")+"</span>",this.app.document.selection&&(n="<span contenteditable='true'>"+e+"</span>"),n+"<span></span>"):void 0}},e={load:function(t,e){var i;if(i=this.controller(t))return i.model.load(e)},setIframe:function(t,e){return this.setIframe(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(n){var r,o;return o=arguments,r=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var s,a;return(a=(s=t(this)).data("atwho"))||s.data("atwho",a=new i(this)),"object"!=typeof n&&n?e[n]&&a?r=e[n].apply(a,Array.prototype.slice.call(o,1)):t.error("Method "+n+" does not exist on jQuery.caret"):a.reg(n.at,n)}),r||this},t.fn.atwho.default={at:void 0,alias:void 0,data:null,tpl:"<li data-value='${atwho-at}${name}'>${name}</li>",insert_tpl:"<span id='${id}'>${atwho-data-value}</span>",callbacks:r,search_key:"name",suffix:void 0,hide_without_suffix:!1,start_with_space:!0,highlight_first:!0,limit:5,max_len:20,display_timeout:300,delay:null}}); \ No newline at end of file +!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(t){return e(t)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(0,function(t){var e,i;i={ESC:27,TAB:9,ENTER:13,CTRL:17,A:65,P:80,N:78,LEFT:37,UP:38,RIGHT:39,DOWN:40,BACKSPACE:8,SPACE:32},e={beforeSave:function(t){return r.arrayToDefaultHash(t)},matcher:function(t,e,i,n){var r,o,s,a,l;return t=t.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),i&&(t="(?:^|\\s)"+t),r=decodeURI("%C3%80"),o=decodeURI("%C3%BF"),l=n?" ":"",a=new RegExp(t+"([A-Za-z"+r+"-"+o+"0-9_"+l+"'.+-]*)$|"+t+"([^\\x00-\\xff]*)$","gi"),s=a.exec(e),s?s[2]||s[1]:null},filter:function(t,e,i){var n,r,o,s;for(n=[],r=0,s=e.length;r<s;r++)o=e[r],~new String(o[i]).toLowerCase().indexOf(t.toLowerCase())&&n.push(o);return n},remoteFilter:null,sorter:function(t,e,i){var n,r,o,s;if(!t)return e;for(n=[],r=0,s=e.length;r<s;r++)(o=e[r]).atwho_order=new String(o[i]).toLowerCase().indexOf(t.toLowerCase()),o.atwho_order>-1&&n.push(o);return n.sort(function(t,e){return t.atwho_order-e.atwho_order})},tplEval:function(t,e){var i;i=t;try{return"string"!=typeof t&&(i=t(e)),i.replace(/\$\{([^\}]*)\}/g,function(t,i,n){return e[i]})}catch(t){return t,""}},highlighter:function(t,e){var i;return e?(i=new RegExp(">\\s*([^<]*?)("+e.replace("+","\\+")+")([^<]*)\\s*<","ig"),t.replace(i,function(t,e,i,n){return"> "+e+"<strong>"+i+"</strong>"+n+" <"})):t},beforeInsert:function(t,e,i){return t},beforeReposition:function(t){return t},afterMatchFailed:function(t,e){}};var n;n=function(){function e(e){this.currentFlag=null,this.controllers={},this.aliasMaps={},this.$inputor=t(e),this.setupRootElement(),this.listen()}return e.prototype.createContainer=function(e){var i;return null!=(i=this.$el)&&i.remove(),t(e.body).append(this.$el=t("<div class='atwho-container'></div>"))},e.prototype.setupRootElement=function(e,i){var n;if(null==i&&(i=!1),e)this.window=e.contentWindow,this.document=e.contentDocument||this.window.document,this.iframe=e;else{this.document=this.$inputor[0].ownerDocument,this.window=this.document.defaultView||this.document.parentWindow;try{this.iframe=this.window.frameElement}catch(e){if(n=e,this.iframe=null,t.fn.atwho.debug)throw new Error("iframe auto-discovery is failed.\nPlease use `setIframe` to set the target iframe manually.\n"+n)}}return this.createContainer((this.iframeAsRoot=i)?this.document:document)},e.prototype.controller=function(t){var e,i,n,r;if(this.aliasMaps[t])i=this.controllers[this.aliasMaps[t]];else{r=this.controllers;for(n in r)if(e=r[n],n===t){i=e;break}}return i||this.controllers[this.currentFlag]},e.prototype.setContextFor=function(t){return this.currentFlag=t,this},e.prototype.reg=function(t,e){var i,n;return n=(i=this.controllers)[t]||(i[t]=this.$inputor.is("[contentEditable]")?new h(this,t):new s(this,t)),e.alias&&(this.aliasMaps[e.alias]=t),n.init(e),this},e.prototype.listen=function(){return this.$inputor.on("compositionstart",function(t){return function(e){var i;return null!=(i=t.controller())&&i.view.hide(),t.isComposing=!0,null}}(this)).on("compositionend",function(t){return function(e){return t.isComposing=!1,setTimeout(function(e){return t.dispatch(e)}),null}}(this)).on("keyup.atwhoInner",function(t){return function(e){return t.onKeyup(e)}}(this)).on("keydown.atwhoInner",function(t){return function(e){return t.onKeydown(e)}}(this)).on("blur.atwhoInner",function(t){return function(e){var i;if(i=t.controller())return i.expectedQueryCBId=null,i.view.hide(e,i.getOpt("displayTimeout"))}}(this)).on("click.atwhoInner",function(t){return function(e){return t.dispatch(e)}}(this)).on("scroll.atwhoInner",function(t){return function(){var e;return e=t.$inputor.scrollTop(),function(i){var n,r;return n=i.target.scrollTop,e!==n&&null!=(r=t.controller())&&r.view.hide(i),e=n,!0}}}(this)())},e.prototype.shutdown=function(){var t,e;e=this.controllers;for(t in e)e[t].destroy(),delete this.controllers[t];return this.$inputor.off(".atwhoInner"),this.$el.remove()},e.prototype.dispatch=function(t){var e,i,n,r;n=this.controllers,r=[];for(e in n)i=n[e],r.push(i.lookUp(t));return r},e.prototype.onKeyup=function(e){var n;switch(e.keyCode){case i.ESC:e.preventDefault(),null!=(n=this.controller())&&n.view.hide();break;case i.DOWN:case i.UP:case i.CTRL:case i.ENTER:t.noop();break;case i.P:case i.N:e.ctrlKey||this.dispatch(e);break;default:this.dispatch(e)}},e.prototype.onKeydown=function(e){var n,r;if((r=null!=(n=this.controller())?n.view:void 0)&&r.visible())switch(e.keyCode){case i.ESC:e.preventDefault(),r.hide(e);break;case i.UP:e.preventDefault(),r.prev();break;case i.DOWN:e.preventDefault(),r.next();break;case i.P:if(!e.ctrlKey)return;e.preventDefault(),r.prev();break;case i.N:if(!e.ctrlKey)return;e.preventDefault(),r.next();break;case i.TAB:case i.ENTER:case i.SPACE:if(!r.visible())return;if(!this.controller().getOpt("spaceSelectsMatch")&&e.keyCode===i.SPACE)return;if(!this.controller().getOpt("tabSelectsMatch")&&e.keyCode===i.TAB)return;r.highlighted()?(e.preventDefault(),r.choose(e)):r.hide(e);break;default:t.noop()}},e}();var r,o=[].slice;r=function(){function i(e,i){this.app=e,this.at=i,this.$inputor=this.app.$inputor,this.id=this.$inputor[0].id||this.uid(),this.expectedQueryCBId=null,this.setting=null,this.query=null,this.pos=0,this.range=null,0===(this.$el=t("#atwho-ground-"+this.id,this.app.$el)).length&&this.app.$el.append(this.$el=t("<div id='atwho-ground-"+this.id+"'></div>")),this.model=new u(this),this.view=new c(this)}return i.prototype.uid=function(){return(Math.random().toString(16)+"000000000").substr(2,8)+(new Date).getTime()},i.prototype.init=function(e){return this.setting=t.extend({},this.setting||t.fn.atwho.default,e),this.view.init(),this.model.reload(this.setting.data)},i.prototype.destroy=function(){return this.trigger("beforeDestroy"),this.model.destroy(),this.view.destroy(),this.$el.remove()},i.prototype.callDefault=function(){var i,n,r;r=arguments[0],i=2<=arguments.length?o.call(arguments,1):[];try{return e[r].apply(this,i)}catch(e){return n=e,t.error(n+" Or maybe At.js doesn't have function "+r)}},i.prototype.trigger=function(t,e){var i,n;return null==e&&(e=[]),e.push(this),i=this.getOpt("alias"),n=i?t+"-"+i+".atwho":t+".atwho",this.$inputor.trigger(n,e)},i.prototype.callbacks=function(t){return this.getOpt("callbacks")[t]||e[t]},i.prototype.getOpt=function(t,e){try{return this.setting[t]}catch(t){return t,null}},i.prototype.insertContentFor=function(e){var i,n;return n=this.getOpt("insertTpl"),i=t.extend({},e.data("item-data"),{"atwho-at":this.at}),this.callbacks("tplEval").call(this,n,i,"onInsert")},i.prototype.renderView=function(t){var e;return e=this.getOpt("searchKey"),t=this.callbacks("sorter").call(this,this.query.text,t.slice(0,1001),e),this.view.render(t.slice(0,this.getOpt("limit")))},i.arrayToDefaultHash=function(e){var i,n,r,o;if(!t.isArray(e))return e;for(o=[],i=0,r=e.length;i<r;i++)n=e[i],t.isPlainObject(n)?o.push(n):o.push({name:n});return o},i.prototype.lookUp=function(t){var e,i;if((!t||"click"!==t.type||this.getOpt("lookUpOnClick"))&&(!this.getOpt("suspendOnComposing")||!this.app.isComposing))return(e=this.catchQuery(t))?(this.app.setContextFor(this.at),(i=this.getOpt("delay"))?this._delayLookUp(e,i):this._lookUp(e),e):(this.expectedQueryCBId=null,e)},i.prototype._delayLookUp=function(t,e){var i,n;return i=Date.now?Date.now():(new Date).getTime(),this.previousCallTime||(this.previousCallTime=i),n=e-(i-this.previousCallTime),0<n&&n<e?(this.previousCallTime=i,this._stopDelayedCall(),this.delayedCallTimeout=setTimeout(function(e){return function(){return e.previousCallTime=0,e.delayedCallTimeout=null,e._lookUp(t)}}(this),e)):(this._stopDelayedCall(),this.previousCallTime!==i&&(this.previousCallTime=0),this._lookUp(t))},i.prototype._stopDelayedCall=function(){if(this.delayedCallTimeout)return clearTimeout(this.delayedCallTimeout),this.delayedCallTimeout=null},i.prototype._generateQueryCBId=function(){return{}},i.prototype._lookUp=function(e){var i;return i=function(t,e){if(t===this.expectedQueryCBId)return e&&e.length>0?this.renderView(this.constructor.arrayToDefaultHash(e)):this.view.hide()},this.expectedQueryCBId=this._generateQueryCBId(),this.model.query(e.text,t.proxy(i,this,this.expectedQueryCBId))},i}();var s,a=function(t,e){function i(){this.constructor=t}for(var n in e)l.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},l={}.hasOwnProperty;s=function(e){function i(){return i.__super__.constructor.apply(this,arguments)}return a(i,e),i.prototype.catchQuery=function(){var t,e,i,n,r,o,s;if(e=this.$inputor.val(),t=this.$inputor.caret("pos",{iframe:this.app.iframe}),s=e.slice(0,t),r=this.callbacks("matcher").call(this,this.at,s,this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),!((n="string"==typeof r)&&r.length<this.getOpt("minLen",0)))return n&&r.length<=this.getOpt("maxLen",20)?(i=(o=t-r.length)+r.length,this.pos=o,r={text:r,headPos:o,endPos:i},this.trigger("matched",[this.at,r.text])):(r=null,this.view.hide()),this.query=r},i.prototype.rect=function(){var e,i,n;if(e=this.$inputor.caret("offset",this.pos-1,{iframe:this.app.iframe}))return this.app.iframe&&!this.app.iframeAsRoot&&(i=t(this.app.iframe).offset(),e.left+=i.left,e.top+=i.top),n=this.app.document.selection?0:2,{left:e.left,top:e.top,bottom:e.top+e.height+n}},i.prototype.insert=function(t,e){var i,n,r,o,s;return i=this.$inputor,n=i.val(),r=n.slice(0,Math.max(this.query.headPos-this.at.length,0)),o=""===(o=this.getOpt("suffix"))?o:o||" ",t+=o,s=""+r+t+n.slice(this.query.endPos||0),i.val(s),i.caret("pos",r.length+t.length,{iframe:this.app.iframe}),i.is(":focus")||i.focus(),i.change()},i}(r);var h,a=function(t,e){function i(){this.constructor=t}for(var n in e)l.call(e,n)&&(t[n]=e[n]);return i.prototype=e.prototype,t.prototype=new i,t.__super__=e.prototype,t},l={}.hasOwnProperty;h=function(e){function n(){return n.__super__.constructor.apply(this,arguments)}return a(n,e),n.prototype._getRange=function(){var t;if((t=this.app.window.getSelection()).rangeCount>0)return t.getRangeAt(0)},n.prototype._setRange=function(e,i,n){if(null==n&&(n=this._getRange()),n&&i)return i=t(i)[0],"after"===e?(n.setEndAfter(i),n.setStartAfter(i)):(n.setEndBefore(i),n.setStartBefore(i)),n.collapse(!1),this._clearRange(n)},n.prototype._clearRange=function(t){var e;if(null==t&&(t=this._getRange()),e=this.app.window.getSelection(),null==this.ctrl_a_pressed)return e.removeAllRanges(),e.addRange(t)},n.prototype._movingEvent=function(t){var e;return"click"===t.type||(e=t.which)===i.RIGHT||e===i.LEFT||e===i.UP||e===i.DOWN},n.prototype._unwrap=function(e){var i;return e=t(e).unwrap().get(0),(i=e.nextSibling)&&i.nodeValue&&(e.nodeValue+=i.nodeValue,t(i).remove()),e},n.prototype.catchQuery=function(e){var n,r,o,s,a,l,h,u,c,p,f,d;if((d=this._getRange())&&d.collapsed){if(e.which===i.ENTER)return(r=t(d.startContainer).closest(".atwho-query")).contents().unwrap(),r.is(":empty")&&r.remove(),(r=t(".atwho-query",this.app.document)).text(r.text()).contents().last().unwrap(),void this._clearRange();if(/firefox/i.test(navigator.userAgent)){if(t(d.startContainer).is(this.$inputor))return void this._clearRange();e.which===i.BACKSPACE&&d.startContainer.nodeType===document.ELEMENT_NODE&&(c=d.startOffset-1)>=0?((o=d.cloneRange()).setStart(d.startContainer,c),t(o.cloneContents()).contents().last().is(".atwho-inserted")&&(a=t(d.startContainer).contents().get(c),this._setRange("after",t(a).contents().last()))):e.which===i.LEFT&&d.startContainer.nodeType===document.TEXT_NODE&&(n=t(d.startContainer.previousSibling)).is(".atwho-inserted")&&0===d.startOffset&&this._setRange("after",n.contents().last())}if(t(d.startContainer).closest(".atwho-inserted").addClass("atwho-query").siblings().removeClass("atwho-query"),(r=t(".atwho-query",this.app.document)).length>0&&r.is(":empty")&&0===r.text().length&&r.remove(),this._movingEvent(e)||r.removeClass("atwho-inserted"),r.length>0)switch(e.which){case i.LEFT:return this._setRange("before",r.get(0),d),void r.removeClass("atwho-query");case i.RIGHT:return this._setRange("after",r.get(0).nextSibling,d),void r.removeClass("atwho-query")}if(r.length>0&&(f=r.attr("data-atwho-at-query"))&&(r.empty().html(f).attr("data-atwho-at-query",null),this._setRange("after",r.get(0),d)),(o=d.cloneRange()).setStart(d.startContainer,0),u=this.callbacks("matcher").call(this,this.at,o.toString(),this.getOpt("startWithSpace"),this.getOpt("acceptSpaceBar")),l="string"==typeof u,0===r.length&&l&&(s=d.startOffset-this.at.length-u.length)>=0&&(d.setStart(d.startContainer,s),r=t("<span/>",this.app.document).attr(this.getOpt("editableAtwhoQueryAttrs")).addClass("atwho-query"),d.surroundContents(r.get(0)),(h=r.contents().last().get(0))&&(/firefox/i.test(navigator.userAgent)?(d.setStart(h,h.length),d.setEnd(h,h.length),this._clearRange(d)):this._setRange("after",h,d))),!(l&&u.length<this.getOpt("minLen",0)))return l&&u.length<=this.getOpt("maxLen",20)?(p={text:u,el:r},this.trigger("matched",[this.at,p.text]),this.query=p):(this.view.hide(),this.query={el:r},r.text().indexOf(this.at)>=0&&(this._movingEvent(e)&&r.hasClass("atwho-inserted")?r.removeClass("atwho-query"):!1!==this.callbacks("afterMatchFailed").call(this,this.at,r)&&this._setRange("after",this._unwrap(r.text(r.text()).contents().first()))),null)}},n.prototype.rect=function(){var e,i;if((i=this.query.el.offset())&&this.query.el[0].getClientRects().length)return this.app.iframe&&!this.app.iframeAsRoot&&(e=t(this.app.iframe).offset(),i.left+=e.left-this.$inputor.scrollLeft(),i.top+=e.top-this.$inputor.scrollTop()),i.bottom=i.top+this.query.el.height(),i},n.prototype.insert=function(t,e){var i,n,r,o,s;return this.$inputor.is(":focus")||this.$inputor.focus(),(n=this.getOpt("functionOverrides")).insert?n.insert.call(this,t,e):(o=""===(o=this.getOpt("suffix"))?o:o||" ",i=e.data("item-data"),this.query.el.removeClass("atwho-query").addClass("atwho-inserted").html(t).attr("data-atwho-at-query",""+i["atwho-at"]+this.query.text).attr("contenteditable","false"),(r=this._getRange())&&(this.query.el.length&&r.setEndAfter(this.query.el[0]),r.collapse(!1),r.insertNode(s=this.app.document.createTextNode(""+o)),this._setRange("after",s,r)),this.$inputor.is(":focus")||this.$inputor.focus(),this.$inputor.change())},n}(r);var u;u=function(){function e(t){this.context=t,this.at=this.context.at,this.storage=this.context.$inputor}return e.prototype.destroy=function(){return this.storage.data(this.at,null)},e.prototype.saved=function(){return this.fetch()>0},e.prototype.query=function(t,e){var i,n,r;return n=this.fetch(),r=this.context.getOpt("searchKey"),n=this.context.callbacks("filter").call(this.context,t,n,r)||[],i=this.context.callbacks("remoteFilter"),n.length>0||!i&&0===n.length?e(n):i.call(this.context,t,e)},e.prototype.fetch=function(){return this.storage.data(this.at)||[]},e.prototype.save=function(t){return this.storage.data(this.at,this.context.callbacks("beforeSave").call(this.context,t||[]))},e.prototype.load=function(t){if(!this.saved()&&t)return this._load(t)},e.prototype.reload=function(t){return this._load(t)},e.prototype._load=function(e){return"string"==typeof e?t.ajax(e,{dataType:"json"}).done(function(t){return function(e){return t.save(e)}}(this)):this.save(e)},e}();var c;c=function(){function e(e){this.context=e,this.$el=t("<div class='atwho-view'><ul class='atwho-view-ul'></ul></div>"),this.$elUl=this.$el.children(),this.timeoutID=null,this.context.$el.append(this.$el),this.bindEvent()}return e.prototype.init=function(){var t,e;return e=this.context.getOpt("alias")||this.context.at.charCodeAt(0),(t=this.context.getOpt("headerTpl"))&&1===this.$el.children().length&&this.$el.prepend(t),this.$el.attr({id:"at-view-"+e})},e.prototype.destroy=function(){return this.$el.remove()},e.prototype.bindEvent=function(){var e,i,n;return e=this.$el.find("ul"),i=0,n=0,e.on("mousemove.atwho-view","li",function(r){return function(r){var o;if((i!==r.clientX||n!==r.clientY)&&(i=r.clientX,n=r.clientY,!(o=t(r.currentTarget)).hasClass("cur")))return e.find(".cur").removeClass("cur"),o.addClass("cur")}}()).on("click.atwho-view","li",function(i){return function(n){return e.find(".cur").removeClass("cur"),t(n.currentTarget).addClass("cur"),i.choose(n),n.preventDefault()}}(this))},e.prototype.visible=function(){return t.expr.filters.visible(this.$el[0])},e.prototype.highlighted=function(){return this.$el.find(".cur").length>0},e.prototype.choose=function(t){var e,i;if((e=this.$el.find(".cur")).length&&(i=this.context.insertContentFor(e),this.context._stopDelayedCall(),this.context.insert(this.context.callbacks("beforeInsert").call(this.context,i,e,t),e),this.context.trigger("inserted",[e,t]),this.hide(t)),this.context.getOpt("hideWithoutSuffix"))return this.stopShowing=!0},e.prototype.reposition=function(e){var i,n,r,o;return i=this.context.app.iframeAsRoot?this.context.app.window:window,e.bottom+this.$el.height()-t(i).scrollTop()>t(i).height()&&(e.bottom=e.top-this.$el.height()),e.left>(r=t(i).width()-this.$el.width()-5)&&(e.left=r),n={left:e.left,top:e.bottom},null!=(o=this.context.callbacks("beforeReposition"))&&o.call(this.context,n),this.$el.offset(n),this.context.trigger("reposition",[n])},e.prototype.next=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),(e=t.next()).length||(e=this.$el.find("li:first")),e.addClass("cur"),i=e[0],n=i.offsetTop+i.offsetHeight+(i.nextSibling?i.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,n-this.$el.height()))},e.prototype.prev=function(){var t,e,i,n;return t=this.$el.find(".cur").removeClass("cur"),(i=t.prev()).length||(i=this.$el.find("li:last")),i.addClass("cur"),n=i[0],e=n.offsetTop+n.offsetHeight+(n.nextSibling?n.nextSibling.offsetHeight:0),this.scrollTop(Math.max(0,e-this.$el.height()))},e.prototype.scrollTop=function(t){var e;return e=this.context.getOpt("scrollDuration"),e?this.$elUl.animate({scrollTop:t},e):this.$elUl.scrollTop(t)},e.prototype.show=function(){var t;{if(!this.stopShowing)return this.visible()||(this.$el.show(),this.$el.scrollTop(0),this.context.trigger("shown")),(t=this.context.rect())?this.reposition(t):void 0;this.stopShowing=!1}},e.prototype.hide=function(t,e){var i;if(this.visible())return isNaN(e)?(this.$el.hide(),this.context.trigger("hidden",[t])):(i=function(t){return function(){return t.hide()}}(this),clearTimeout(this.timeoutID),this.timeoutID=setTimeout(i,e))},e.prototype.render=function(e){var i,n,r,o,s,a,l;{if(t.isArray(e)&&e.length>0){for(this.$el.find("ul").empty(),n=this.$el.find("ul"),l=this.context.getOpt("displayTpl"),r=0,s=e.length;r<s;r++)o=e[r],o=t.extend({},o,{"atwho-at":this.context.at}),a=this.context.callbacks("tplEval").call(this.context,l,o,"onDisplay"),(i=t(this.context.callbacks("highlighter").call(this.context,a,this.context.query.text))).data("item-data",o),n.append(i);return this.show(),this.context.getOpt("highlightFirst")?n.find("li:first").addClass("cur"):void 0}this.hide()}},e}();var p;p={load:function(t,e){var i;if(i=this.controller(t))return i.model.load(e)},isSelecting:function(){var t;return!!(null!=(t=this.controller())?t.view.visible():void 0)},hide:function(){var t;return null!=(t=this.controller())?t.view.hide():void 0},reposition:function(){var t;if(t=this.controller())return t.view.reposition(t.rect())},setIframe:function(t,e){return this.setupRootElement(t,e),null},run:function(){return this.dispatch()},destroy:function(){return this.shutdown(),this.$inputor.data("atwho",null)}},t.fn.atwho=function(e){var i,r;return i=arguments,r=null,this.filter('textarea, input, [contenteditable=""], [contenteditable=true]').each(function(){var o,s;return(s=(o=t(this)).data("atwho"))||o.data("atwho",s=new n(this)),"object"!=typeof e&&e?p[e]&&s?r=p[e].apply(s,Array.prototype.slice.call(i,1)):t.error("Method "+e+" does not exist on jQuery.atwho"):s.reg(e.at,e)}),null!=r?r:this},t.fn.atwho.default={at:void 0,alias:void 0,data:null,displayTpl:"<li>${name}</li>",insertTpl:"${atwho-at}${name}",headerTpl:null,callbacks:e,functionOverrides:{},searchKey:"name",suffix:void 0,hideWithoutSuffix:!1,startWithSpace:!0,acceptSpaceBar:!1,highlightFirst:!0,limit:5,maxLen:20,minLen:0,displayTimeout:300,delay:null,spaceSelectsMatch:!1,tabSelectsMatch:!0,editableAtwhoQueryAttrs:{},scrollDuration:150,suspendOnComposing:!0,lookUpOnClick:!0},t.fn.atwho.debug=!1}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.js b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.js index e0de4bc82450d6e115c16330d520c1929e6bde87..811ec63ee47bb5c71b244c8491820df47015371b 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.js @@ -40,6 +40,37 @@ EditableCaret = (function() { } EditableCaret.prototype.setPos = function(pos) { + var fn, found, offset, sel; + if (sel = oWindow.getSelection()) { + offset = 0; + found = false; + (fn = function(pos, parent) { + var node, range, _i, _len, _ref, _results; + _ref = parent.childNodes; + _results = []; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + node = _ref[_i]; + if (found) { + break; + } + if (node.nodeType === 3) { + if (offset + node.length >= pos) { + found = true; + range = oDocument.createRange(); + range.setStart(node, pos - offset); + sel.removeAllRanges(); + sel.addRange(range); + break; + } else { + _results.push(offset += node.length); + } + } else { + _results.push(fn(pos, node)); + } + } + return _results; + })(pos, this.domInputor); + } return this.domInputor; }; @@ -94,7 +125,7 @@ EditableCaret = (function() { EditableCaret.prototype.getOffset = function(pos) { var clonedRange, offset, range, rect, shadowCaret; if (oWindow.getSelection && (range = this.range())) { - if (range.endOffset - 1 > 0 && range.endContainer === !this.domInputor) { + if (range.endOffset - 1 > 0 && range.endContainer !== this.domInputor) { clonedRange = range.cloneRange(); clonedRange.setStart(range.endContainer, range.endOffset - 1); clonedRange.setEnd(range.endContainer, range.endOffset); diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.min.js index 90eab909bc6bd385a8e510562ca3e3d5f964dcc9..b121c93372e2d66e07e86a0635da69dada0609a6 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/jquery.caret.min.js @@ -1 +1 @@ -!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(o){return t.returnExportsGlobal=e(o)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){"use strict";var e,o,n,r,i,s,a,p,l;e=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.setPos=function(t){return this.domInputor},e.prototype.getIEPosition=function(){return this.getPosition()},e.prototype.getPosition=function(){var t,e;return e=this.getOffset(),t=this.$inputor.offset(),e.left-=t.left,e.top-=t.top,e},e.prototype.getOldIEPos=function(){var t,e;return e=s.selection.createRange(),(t=s.body.createTextRange()).moveToElementText(this.domInputor),t.setEndPoint("EndToEnd",e),t.text.length},e.prototype.getPos=function(){var t,e,o;return(o=this.range())?((t=o.cloneRange()).selectNodeContents(this.domInputor),t.setEnd(o.endContainer,o.endOffset),e=t.toString().length,t.detach(),e):s.selection?this.getOldIEPos():void 0},e.prototype.getOldIEOffset=function(){var t,e;return(t=s.selection.createRange().duplicate()).moveStart("character",-1),e=t.getBoundingClientRect(),{height:e.bottom-e.top,left:e.left,top:e.top}},e.prototype.getOffset=function(e){var o,n,r,i,a;return p.getSelection&&(r=this.range())?(r.endOffset-1>0&&r.endContainer===!this.domInputor&&((o=r.cloneRange()).setStart(r.endContainer,r.endOffset-1),o.setEnd(r.endContainer,r.endOffset),n={height:(i=o.getBoundingClientRect()).height,left:i.left+i.width,top:i.top},o.detach()),n&&0!==(null!=n?n.height:void 0)||(o=r.cloneRange(),a=t(s.createTextNode("|")),o.insertNode(a[0]),o.selectNode(a[0]),n={height:(i=o.getBoundingClientRect()).height,left:i.left,top:i.top},a.remove(),o.detach())):s.selection&&(n=this.getOldIEOffset()),n&&(n.top+=t(p).scrollTop(),n.left+=t(p).scrollLeft()),n},e.prototype.range=function(){var t;if(p.getSelection)return(t=p.getSelection()).rangeCount>0?t.getRangeAt(0):null},e}(),o=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.getIEPos=function(){var t,e,o,n,r,i;return e=this.domInputor,r=s.selection.createRange(),n=0,r&&r.parentElement()===e&&(o=e.value.replace(/\r\n/g,"\n").length,(i=e.createTextRange()).moveToBookmark(r.getBookmark()),(t=e.createTextRange()).collapse(!1),n=i.compareEndPoints("StartToEnd",t)>-1?o:-i.moveStart("character",-o)),n},e.prototype.getPos=function(){return s.selection?this.getIEPos():this.domInputor.selectionStart},e.prototype.setPos=function(t){var e,o;return e=this.domInputor,s.selection?((o=e.createTextRange()).move("character",t),o.select()):e.setSelectionRange&&e.setSelectionRange(t,t),e},e.prototype.getIEOffset=function(t){var e,o,n,r;return o=this.domInputor.createTextRange(),t||(t=this.getPos()),o.move("character",t),n=o.boundingLeft,r=o.boundingTop,e=o.boundingHeight,{left:n,top:r,height:e}},e.prototype.getOffset=function(e){var o,n,r;return o=this.$inputor,s.selection?(n=this.getIEOffset(e),n.top+=t(p).scrollTop()+o.scrollTop(),n.left+=t(p).scrollLeft()+o.scrollLeft(),n):(n=o.offset(),r=this.getPosition(e),n={left:n.left+r.left-o.scrollLeft(),top:n.top+r.top-o.scrollTop(),height:r.height})},e.prototype.getPosition=function(t){var e,o,r,i,s,a;return e=this.$inputor,r=function(t){return t=t.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(t=t.replace(/\s/g," ")),t},void 0===t&&(t=this.getPos()),a=e.val().slice(0,t),o=e.val().slice(t),i="<span style='position: relative; display: inline;'>"+r(a)+"</span>",i+="<span id='caret' style='position: relative; display: inline;'>|</span>",i+="<span style='position: relative; display: inline;'>"+r(o)+"</span>",s=new n(e),s.create(i).rect()},e.prototype.getIEPosition=function(t){var e,o,n,r,i;return n=this.getIEOffset(t),o=this.$inputor.offset(),r=n.left-o.left,i=n.top-o.top,e=n.height,{left:r,top:i,height:e}},e}(),n=function(){function e(t){this.$inputor=t}return e.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],e.prototype.mirrorCss=function(){var e,o=this;return e={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),t.each(this.css_attr,function(t,n){return e[n]=o.$inputor.css(n)}),e},e.prototype.create=function(e){return this.$mirror=t("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(e),this.$inputor.after(this.$mirror),this},e.prototype.rect=function(){var t,e,o;return t=this.$mirror.find("#caret"),e=t.position(),o={left:e.left,top:e.top,height:t.height()},this.$mirror.remove(),o},e}(),r={contentEditable:function(t){return!(!t[0].contentEditable||"true"!==t[0].contentEditable)}},i={pos:function(t){return t||0===t?this.setPos(t):this.getPos()},position:function(t){return s.selection?this.getIEPosition(t):this.getPosition(t)},offset:function(t){return this.getOffset(t)}},s=null,p=null,a=null,l=function(t){var e;return(e=null!=t?t.iframe:void 0)?(a=e,p=e.contentWindow,s=e.contentDocument||p.document):(a=void 0,p=window,s=document)},t.fn.caret=function(n,s,a){var p;return i[n]?(t.isPlainObject(s)?(l(s),s=void 0):l(a),p=r.contentEditable(this)?new e(this):new o(this),i[n].apply(p,[s])):t.error("Method "+n+" does not exist on jQuery.caret")},t.fn.caret.EditableCaret=e,t.fn.caret.InputCaret=o,t.fn.caret.Utils=r,t.fn.caret.apis=i}); \ No newline at end of file +!function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(o){return t.returnExportsGlobal=e(o)}):"object"==typeof exports?module.exports=e(require("jquery")):e(jQuery)}(this,function(t){"use strict";var e,o,n,r,i,s,a,l,p;e=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.setPos=function(t){var e,o,n,r;return(r=l.getSelection())&&(n=0,o=!1,(e=function(t,i){var a,l,p,c,f,u;for(u=[],p=0,c=(f=i.childNodes).length;p<c&&(a=f[p],!o);p++)if(3===a.nodeType){if(n+a.length>=t){o=!0,(l=s.createRange()).setStart(a,t-n),r.removeAllRanges(),r.addRange(l);break}u.push(n+=a.length)}else u.push(e(t,a));return u})(t,this.domInputor)),this.domInputor},e.prototype.getIEPosition=function(){return this.getPosition()},e.prototype.getPosition=function(){var t,e;return e=this.getOffset(),t=this.$inputor.offset(),e.left-=t.left,e.top-=t.top,e},e.prototype.getOldIEPos=function(){var t,e;return e=s.selection.createRange(),(t=s.body.createTextRange()).moveToElementText(this.domInputor),t.setEndPoint("EndToEnd",e),t.text.length},e.prototype.getPos=function(){var t,e,o;return(o=this.range())?((t=o.cloneRange()).selectNodeContents(this.domInputor),t.setEnd(o.endContainer,o.endOffset),e=t.toString().length,t.detach(),e):s.selection?this.getOldIEPos():void 0},e.prototype.getOldIEOffset=function(){var t,e;return(t=s.selection.createRange().duplicate()).moveStart("character",-1),e=t.getBoundingClientRect(),{height:e.bottom-e.top,left:e.left,top:e.top}},e.prototype.getOffset=function(e){var o,n,r,i,a;return l.getSelection&&(r=this.range())?(r.endOffset-1>0&&r.endContainer!==this.domInputor&&((o=r.cloneRange()).setStart(r.endContainer,r.endOffset-1),o.setEnd(r.endContainer,r.endOffset),n={height:(i=o.getBoundingClientRect()).height,left:i.left+i.width,top:i.top},o.detach()),n&&0!==(null!=n?n.height:void 0)||(o=r.cloneRange(),a=t(s.createTextNode("|")),o.insertNode(a[0]),o.selectNode(a[0]),n={height:(i=o.getBoundingClientRect()).height,left:i.left,top:i.top},a.remove(),o.detach())):s.selection&&(n=this.getOldIEOffset()),n&&(n.top+=t(l).scrollTop(),n.left+=t(l).scrollLeft()),n},e.prototype.range=function(){var t;if(l.getSelection)return t=l.getSelection(),t.rangeCount>0?t.getRangeAt(0):null},e}(),o=function(){function e(t){this.$inputor=t,this.domInputor=this.$inputor[0]}return e.prototype.getIEPos=function(){var t,e,o,n,r,i;return e=this.domInputor,r=s.selection.createRange(),n=0,r&&r.parentElement()===e&&(o=e.value.replace(/\r\n/g,"\n").length,(i=e.createTextRange()).moveToBookmark(r.getBookmark()),(t=e.createTextRange()).collapse(!1),n=i.compareEndPoints("StartToEnd",t)>-1?o:-i.moveStart("character",-o)),n},e.prototype.getPos=function(){return s.selection?this.getIEPos():this.domInputor.selectionStart},e.prototype.setPos=function(t){var e,o;return e=this.domInputor,s.selection?((o=e.createTextRange()).move("character",t),o.select()):e.setSelectionRange&&e.setSelectionRange(t,t),e},e.prototype.getIEOffset=function(t){var e,o,n,r;return o=this.domInputor.createTextRange(),t||(t=this.getPos()),o.move("character",t),n=o.boundingLeft,r=o.boundingTop,e=o.boundingHeight,{left:n,top:r,height:e}},e.prototype.getOffset=function(e){var o,n,r;return o=this.$inputor,s.selection?(n=this.getIEOffset(e),n.top+=t(l).scrollTop()+o.scrollTop(),n.left+=t(l).scrollLeft()+o.scrollLeft(),n):(n=o.offset(),r=this.getPosition(e),n={left:n.left+r.left-o.scrollLeft(),top:n.top+r.top-o.scrollTop(),height:r.height})},e.prototype.getPosition=function(t){var e,o,r,i,s,a;return e=this.$inputor,r=function(t){return t=t.replace(/<|>|`|"|&/g,"?").replace(/\r\n|\r|\n/g,"<br/>"),/firefox/i.test(navigator.userAgent)&&(t=t.replace(/\s/g," ")),t},void 0===t&&(t=this.getPos()),a=e.val().slice(0,t),o=e.val().slice(t),i="<span style='position: relative; display: inline;'>"+r(a)+"</span>",i+="<span id='caret' style='position: relative; display: inline;'>|</span>",i+="<span style='position: relative; display: inline;'>"+r(o)+"</span>",s=new n(e),s.create(i).rect()},e.prototype.getIEPosition=function(t){var e,o,n,r,i;return n=this.getIEOffset(t),o=this.$inputor.offset(),r=n.left-o.left,i=n.top-o.top,e=n.height,{left:r,top:i,height:e}},e}(),n=function(){function e(t){this.$inputor=t}return e.prototype.css_attr=["borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderTopWidth","boxSizing","fontFamily","fontSize","fontWeight","height","letterSpacing","lineHeight","marginBottom","marginLeft","marginRight","marginTop","outlineWidth","overflow","overflowX","overflowY","paddingBottom","paddingLeft","paddingRight","paddingTop","textAlign","textOverflow","textTransform","whiteSpace","wordBreak","wordWrap"],e.prototype.mirrorCss=function(){var e,o=this;return e={position:"absolute",left:-9999,top:0,zIndex:-2e4},"TEXTAREA"===this.$inputor.prop("tagName")&&this.css_attr.push("width"),t.each(this.css_attr,function(t,n){return e[n]=o.$inputor.css(n)}),e},e.prototype.create=function(e){return this.$mirror=t("<div></div>"),this.$mirror.css(this.mirrorCss()),this.$mirror.html(e),this.$inputor.after(this.$mirror),this},e.prototype.rect=function(){var t,e,o;return t=this.$mirror.find("#caret"),e=t.position(),o={left:e.left,top:e.top,height:t.height()},this.$mirror.remove(),o},e}(),r={contentEditable:function(t){return!(!t[0].contentEditable||"true"!==t[0].contentEditable)}},i={pos:function(t){return t||0===t?this.setPos(t):this.getPos()},position:function(t){return s.selection?this.getIEPosition(t):this.getPosition(t)},offset:function(t){return this.getOffset(t)}},s=null,l=null,a=null,p=function(t){var e;return(e=null!=t?t.iframe:void 0)?(a=e,l=e.contentWindow,s=e.contentDocument||l.document):(a=void 0,l=window,s=document)},t.fn.caret=function(n,s,a){var l;return i[n]?(t.isPlainObject(s)?(p(s),s=void 0):p(a),l=r.contentEditable(this)?new e(this):new o(this),i[n].apply(l,[s])):t.error("Method "+n+" does not exist on jQuery.caret")},t.fn.caret.EditableCaret=e,t.fn.caret.InputCaret=o,t.fn.caret.Utils=r,t.fn.caret.apis=i}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/livestamp.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/livestamp.min.js index 666f65ae8c331030a1695f5527359d465bc84e29..8ce3b5bec81680f69fc73d87d745a8483cf4dd59 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/livestamp.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/livestamp.min.js @@ -1 +1 @@ -!function(t,a){var e=1e3,i=!1,n=t([]),o=function(e,i){var o=e.data("livestampdata");if("number"==typeof i&&(i*=1e3),e.removeAttr("data-livestamp").removeData("livestamp"),i=a(i),a.isMoment(i)&&!isNaN(+i)){var r=t.extend({},{original:e.contents()},o);r.moment=a(i),e.data("livestampdata",r).empty(),n.push(e[0])}},r=function(){i||(m.update(),setTimeout(r,e))},m={update:function(){t("[data-livestamp]").each(function(){var a=t(this);o(a,a.data("livestamp"))});var e=[];n.each(function(){var i=t(this),n=i.data("livestampdata");if(void 0===n)e.push(this);else if(a.isMoment(n.moment)){var o=i.html(),r=n.moment.fromNow();if(o!=r){var m=t.Event("change.livestamp");i.trigger(m,[o,r]),m.isDefaultPrevented()||i.html(r)}}}),n=n.not(e)},pause:function(){i=!0},resume:function(){i=!1,r()},interval:function(t){if(void 0===t)return e;e=t}},s={add:function(e,i){return"number"==typeof i&&(i*=1e3),i=a(i),a.isMoment(i)&&!isNaN(+i)&&(e.each(function(){o(t(this),i)}),m.update()),e},destroy:function(a){return n=n.not(a),a.each(function(){var e=t(this),i=e.data("livestampdata");if(void 0===i)return a;e.html(i.original?i.original:"").removeData("livestampdata")}),a},isLivestamp:function(t){return void 0!==t.data("livestampdata")}};t.livestamp=m,t(function(){m.resume()}),t.fn.livestamp=function(t,a){return s[t]||(a=t,t="add"),s[t](this,a)}}(jQuery,moment); \ No newline at end of file +!function(t,a){var e=1e3,i=!1,n=t([]),o=function(){s.resume()},r=function(e,i){var o=e.data("livestampdata");if("number"==typeof i&&(i*=1e3),e.removeAttr("data-livestamp").removeData("livestamp"),i=a(i),a.isMoment(i)&&!isNaN(+i)){var r=t.extend({},{original:e.contents()},o);r.moment=a(i),e.data("livestampdata",r).empty(),n.push(e[0])}},m=function(){i||(s.update(),setTimeout(m,e))},s={update:function(){t("[data-livestamp]").each(function(){var a=t(this);r(a,a.data("livestamp"))});var e=[];n.each(function(){var i=t(this),n=i.data("livestampdata");if(void 0===n)e.push(this);else if(a.isMoment(n.moment)){var o=i.html(),r=n.moment.fromNow();if(o!=r){var m=t.Event("change.livestamp");i.trigger(m,[o,r]),m.isDefaultPrevented()||i.html(r)}}}),n=n.not(e)},pause:function(){i=!0},resume:function(){i=!1,m()},interval:function(t){if(void 0===t)return e;e=t}},u={add:function(e,i){return"number"==typeof i&&(i*=1e3),i=a(i),a.isMoment(i)&&!isNaN(+i)&&(e.each(function(){r(t(this),i)}),s.update()),e},destroy:function(a){return n=n.not(a),a.each(function(){var e=t(this),i=e.data("livestampdata");if(void 0===i)return a;e.html(i.original?i.original:"").removeData("livestampdata")}),a},isLivestamp:function(t){return void 0!==t.data("livestampdata")}};t.livestamp=s,t(o),t.fn.livestamp=function(t,a){return u[t]||(a=t,t="add"),u[t](this,a)}}(jQuery,moment); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/br.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/br.min.js index a4653faaca3990d7c4df5ba29907029417f3561f..4c651c30e053e5c68a36adea817dd416bdf667f1 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/br.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/br.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,r){return e+" "+t({mm:"munutenn",MM:"miz",dd:"devezh"}[r],e)}function r(e){return e>9?r(e%10):e}function t(e,n){return 2===n?a(e):e}function a(e){var n={m:"v",b:"v",d:"z"};return void 0===n[e.charAt(0)]?e:n[e.charAt(0)]+e.substring(1)}return e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:n,h:"un eur",hh:"%d eur",d:"un devezh",dd:n,M:"ur miz",MM:n,y:"ur bloaz",yy:function(e){switch(r(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,r){return e+" "+a({mm:"munutenn",MM:"miz",dd:"devezh"}[r],e)}function r(e){switch(t(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}function t(e){return e>9?t(e%10):e}function a(e,n){return 2===n?u(e):e}function u(e){var n={m:"v",b:"v",d:"z"};return void 0===n[e.charAt(0)]?e:n[e.charAt(0)]+e.substring(1)}return e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",m:"ur vunutenn",mm:n,h:"un eur",hh:"%d eur",d:"un devezh",dd:n,M:"ur miz",MM:n,y:"ur bloaz",yy:r},ordinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lb.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lb.min.js index 5b54c885ff097035f2b0ff246696e69091780903..7a819ffa0b530701ef532b515bff70b769a2ef54 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lb.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lb.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,t,r){var u={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return n?u[t][0]:u[t][1]}function t(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,r=e/10;return t(0===n?r:n)}if(e<1e4){for(;e>=10;)e/=10;return t(e)}return e/=1e3,t(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return t(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return t(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",m:n,mm:"%d Minutten",h:n,hh:"%d Stonnen",d:n,dd:"%d Deeg",M:n,MM:"%d Méint",y:n,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,t,r){var u={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return n?u[t][0]:u[t][1]}function t(e){return u(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e}function r(e){return u(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e}function u(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var n=e%10,t=e/10;return u(0===n?t:n)}if(e<1e4){for(;e>=10;)e/=10;return u(e)}return e/=1e3,u(e)}return e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:t,past:r,s:"e puer Sekonnen",m:n,mm:"%d Minutten",h:n,hh:"%d Stonnen",d:n,dd:"%d Deeg",M:n,MM:"%d Méint",y:n,yy:"%d Joer"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lt.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lt.min.js index 2b032c3b498174cd11febff6cb1441e108d4796c..c421312a2e532c5ebf4b6bdd71e151bb5fb7996f 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lt.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lt.min.js @@ -1 +1 @@ -!function(e,i){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?i(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],i):i(e.moment)}(this,function(e){"use strict";function i(e,i,n,s){return i?a(n)[0]:s?a(n)[1]:a(n)[2]}function n(e){return e%10==0||e>10&&e<20}function a(e){return d[e].split("_")}function s(e,s,d,t){var _=e+" ";return 1===e?_+i(e,s,d[0],t):s?_+(n(e)?a(d)[1]:a(d)[0]):t?_+a(d)[1]:_+(n(e)?a(d)[1]:a(d)[2])}var d={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,i,n,a){return i?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"},m:i,mm:s,h:i,hh:s,d:i,dd:s,M:i,MM:s,y:i,yy:s},ordinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}); \ No newline at end of file +!function(e,i){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?i(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],i):i(e.moment)}(this,function(e){"use strict";function i(e,i,n,a){return i?"kelios sekundės":a?"kelių sekundžių":"kelias sekundes"}function n(e,i,n,a){return i?s(n)[0]:a?s(n)[1]:s(n)[2]}function a(e){return e%10==0||e>10&&e<20}function s(e){return t[e].split("_")}function d(e,i,d,t){var _=e+" ";return 1===e?_+n(e,i,d[0],t):i?_+(a(e)?s(d)[1]:s(d)[0]):t?_+s(d)[1]:_+(a(e)?s(d)[1]:s(d)[2])}var t={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};return e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?|MMMM?(\[[^\[\]]*\]|\s+)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:i,m:n,mm:d,h:n,hh:d,d:n,dd:d,M:n,MM:d,y:n,yy:d},ordinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lv.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lv.min.js index 2e8009ac6a6da4c17d0362412c52f43debb31937..9ce8cdc0cd7f667245ff5300bacb54791f466767 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lv.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/lv.min.js @@ -1 +1 @@ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,s){return s?n%10==1&&n%100!=11?e[2]:e[3]:n%10==1&&n%100!=11?e[0]:e[1]}function s(e,s,t){return e+" "+n(i[t],e,s)}function t(e,s,t){return n(i[t],e,s)}var i={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,n){return n?"dažas sekundes":"dažām sekundēm"},m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?n(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],n):n(e.moment)}(this,function(e){"use strict";function n(e,n,s){return s?n%10==1&&n%100!=11?e[2]:e[3]:n%10==1&&n%100!=11?e[0]:e[1]}function s(e,s,t){return e+" "+n(_[t],e,s)}function t(e,s,t){return n(_[t],e,s)}function i(e,n){return n?"dažas sekundes":"dažām sekundēm"}var _={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};return e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:i,m:t,mm:s,h:t,hh:s,d:t,dd:s,M:t,MM:s,y:t,yy:s},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/tlh.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/tlh.min.js index f99b44315914ea9a39da50b60cf911995c2f9967..5933e9472f0d143c8d67215d29721a9014555333 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/tlh.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/tlh.min.js @@ -1 +1 @@ -!function(a,e){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?e(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],e):e(a.moment)}(this,function(a){"use strict";function e(a,e,r,t){var n=j(a);switch(r){case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}function j(a){var e=Math.floor(a%1e3/100),j=Math.floor(a%100/10),t=a%10,n="";return e>0&&(n+=r[e]+"vatlh"),j>0&&(n+=(""!==n?" ":"")+r[j]+"maH"),t>0&&(n+=(""!==n?" ":"")+r[t]),""===n?"pagh":n}var r="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");return a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(a){var e=a;return e=-1!==a.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==a.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==a.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(a){var e=a;return e=-1!==a.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==a.indexOf("jar")?e.slice(0,-3)+"wen":-1!==a.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",m:"wa’ tup",mm:e,h:"wa’ rep",hh:e,d:"wa’ jaj",dd:e,M:"wa’ jar",MM:e,y:"wa’ DIS",yy:e},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file +!function(a,e){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?e(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],e):e(a.moment)}(this,function(a){"use strict";function e(a){var e=a;return e=-1!==a.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==a.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==a.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"}function j(a){var e=a;return e=-1!==a.indexOf("jaj")?e.slice(0,-3)+"Hu’":-1!==a.indexOf("jar")?e.slice(0,-3)+"wen":-1!==a.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"}function r(a,e,j,r){var n=t(a);switch(j){case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}function t(a){var e=Math.floor(a%1e3/100),j=Math.floor(a%100/10),r=a%10,t="";return e>0&&(t+=n[e]+"vatlh"),j>0&&(t+=(""!==t?" ":"")+n[j]+"maH"),r>0&&(t+=(""!==t?" ":"")+n[r]),""===t?"pagh":t}var n="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");return a.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:e,past:j,s:"puS lup",m:"wa’ tup",mm:r,h:"wa’ rep",hh:r,d:"wa’ jaj",dd:r,M:"wa’ jar",MM:r,y:"wa’ DIS",yy:r},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/uk.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/uk.min.js index e4ca8ce9ea5882e269dbbac0cfc9ada81b927dac..cd6f144b61706bf9d0a5f7bfb7ef4bc1d5c3a059 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/uk.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/locale/uk.min.js @@ -1 +1 @@ -!function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";function _(e,_){var t=e.split("_");return _%10==1&&_%100!=11?t[0]:_%10>=2&&_%10<=4&&(_%100<10||_%100>=20)?t[1]:t[2]}function t(e,t,n){var s={mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+_(s[n],+e)}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,_){return{nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")}[/(\[[ВвУу]\]) ?dddd/.test(_)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(_)?"genitive":"nominative"][e.day()]},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,_,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,_){switch(_){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}); \ No newline at end of file +!function(e,_){"object"==typeof exports&&"undefined"!=typeof module&&"function"==typeof require?_(require("../moment")):"function"==typeof define&&define.amd?define(["../moment"],_):_(e.moment)}(this,function(e){"use strict";function _(e,_){var t=e.split("_");return _%10==1&&_%100!=11?t[0]:_%10>=2&&_%10<=4&&(_%100<10||_%100>=20)?t[1]:t[2]}function t(e,t,n){var s={mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+_(s[n],+e)}function n(e,_){return{nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")}[/(\[[ВвУу]\]) ?dddd/.test(_)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(_)?"genitive":"nominative"][e.day()]}function s(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}return e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:n,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:s("[Сьогодні "),nextDay:s("[Завтра "),lastDay:s("[Вчора "),nextWeek:s("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return s("[Минулої] dddd [").call(this);case 1:case 2:case 4:return s("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,_,t){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,_){switch(_){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/moment.min.js b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/moment.min.js index ac161c0792c19b7a7a9d2231eca580a9bd158e5a..ea2af27661ccaf0df95f882c4d386b86dff1d126 100644 --- a/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/moment.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/vendor/moment-js/moment.min.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";function e(){return _t.apply(null,arguments)}function t(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function n(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){var t;for(t in e)return!1;return!0}function i(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function r(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function o(e,t){for(var n in t)a(t,n)&&(e[n]=t[n]);return a(t,"toString")&&(e.toString=t.toString),a(t,"valueOf")&&(e.valueOf=t.valueOf),e}function u(e,t,n,s){return Ue(e,t,n,s,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(e){return null==e._pf&&(e._pf=d()),e._pf}function h(e){if(null==e._isValid){var t=l(e),n=yt.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function c(e){var t=u(NaN);return null!=e?o(l(t),e):l(t).userInvalidated=!0,t}function f(e){return void 0===e}function m(e,t){var n,s,i;if(f(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),f(t._i)||(e._i=t._i),f(t._f)||(e._f=t._f),f(t._l)||(e._l=t._l),f(t._strict)||(e._strict=t._strict),f(t._tzm)||(e._tzm=t._tzm),f(t._isUTC)||(e._isUTC=t._isUTC),f(t._offset)||(e._offset=t._offset),f(t._pf)||(e._pf=l(t)),f(t._locale)||(e._locale=t._locale),gt.length>0)for(n in gt)f(i=t[s=gt[n]])||(e[s]=i);return e}function _(t){m(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),!1===pt&&(pt=!0,e.updateOffset(this),pt=!1)}function y(e){return e instanceof _||null!=e&&null!=e._isAMomentObject}function g(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function p(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=g(t)),n}function w(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&p(e[s])!==p(t[s]))&&a++;return a+r}function v(t){!1===e.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function S(t,n){var s=!0;return o(function(){if(null!=e.deprecationHandler&&e.deprecationHandler(null,t),s){for(var i,r=[],a=0;a<arguments.length;a++){if(i="","object"==typeof arguments[a]){i+="\n["+a+"] ";for(var o in arguments[0])i+=o+": "+arguments[0][o]+", ";i=i.slice(0,-2)}else i=arguments[a];r.push(i)}v(t+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),s=!1}return n.apply(this,arguments)},n)}function M(t,n){null!=e.deprecationHandler&&e.deprecationHandler(t,n),wt[t]||(v(n),wt[t]=!0)}function k(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function D(e,t){var s,i=o({},e);for(s in t)a(t,s)&&(n(e[s])&&n(t[s])?(i[s]={},o(i[s],e[s]),o(i[s],t[s])):null!=t[s]?i[s]=t[s]:delete i[s]);for(s in e)a(e,s)&&!a(t,s)&&n(e[s])&&(i[s]=o({},i[s]));return i}function Y(e){null!=e&&this.set(e)}function x(e,t){var n=e.toLowerCase();xt[n]=xt[n+"s"]=xt[t]=e}function O(e){return"string"==typeof e?xt[e]||xt[e.toLowerCase()]:void 0}function b(e){var t,n,s={};for(n in e)a(e,n)&&(t=O(n))&&(s[t]=e[n]);return s}function T(e,t){Ot[e]=t}function P(e){var t=[];for(var n in e)t.push({unit:n,priority:Ot[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}function W(t,n){return function(s){return null!=s?(U(this,t,s),e.updateOffset(this,n),this):R(this,t)}}function R(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function U(e,t,n){e.isValid()&&e._d["set"+(e._isUTC?"UTC":"")+t](n)}function C(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}function F(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(Wt[e]=i),t&&(Wt[t[0]]=function(){return C(i.apply(this,arguments),t[1],t[2])}),n&&(Wt[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function H(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function L(e){var t,n,s=e.match(bt);for(t=0,n=s.length;t<n;t++)Wt[s[t]]?s[t]=Wt[s[t]]:s[t]=H(s[t]);return function(t){var i,r="";for(i=0;i<n;i++)r+=s[i]instanceof Function?s[i].call(t,e):s[i];return r}}function G(e,t){return e.isValid()?(t=V(t,e.localeData()),Pt[t]=Pt[t]||L(t),Pt[t](e)):e.localeData().invalidDate()}function V(e,t){var n=5;for(Tt.lastIndex=0;n>=0&&Tt.test(e);)e=e.replace(Tt,function(e){return t.longDateFormat(e)||e}),Tt.lastIndex=0,n-=1;return e}function j(e,t,n){Bt[e]=k(t)?t:function(e,s){return e&&n?n:t}}function A(e,t){return a(Bt,e)?Bt[e](t._strict,t._locale):new RegExp(E(e))}function E(e){return I(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i}))}function I(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function N(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(s=function(e,n){n[t]=p(e)}),n=0;n<e.length;n++)Jt[e[n]]=s}function z(e,t){N(e,function(e,n,s,i){s._w=s._w||{},t(e,s._w,s,i)})}function Z(e,t,n){null!=t&&a(Jt,e)&&Jt[e](t,n._a,n,e)}function q(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function $(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=u([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=St.call(this._shortMonthsParse,a))?i:null:-1!==(i=St.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=St.call(this._shortMonthsParse,a))?i:-1!==(i=St.call(this._longMonthsParse,a))?i:null:-1!==(i=St.call(this._longMonthsParse,a))?i:-1!==(i=St.call(this._shortMonthsParse,a))?i:null}function B(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=p(t);else if("number"!=typeof(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),q(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function J(t){return null!=t?(B(this,t),e.updateOffset(this,!0),this):R(this,"Month")}function Q(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=u([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=I(s[t]),i[t]=I(i[t]);for(t=0;t<24;t++)r[t]=I(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function X(e){return K(e)?366:365}function K(e){return e%4==0&&e%100!=0||e%400==0}function ee(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&e>=0&&isFinite(o.getFullYear())&&o.setFullYear(e),o}function te(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function ne(e,t,n){var s=7+t-n;return-((7+te(e,0,s).getUTCDay()-t)%7)+s-1}function se(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+ne(e,s,i);return o<=0?a=X(r=e-1)+o:o>X(e)?(r=e+1,a=o-X(e)):(r=e,a=o),{year:r,dayOfYear:a}}function ie(e,t,n){var s,i,r=ne(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+re(i=e.year()-1,t,n):a>re(e.year(),t,n)?(s=a-re(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function re(e,t,n){var s=ne(e,t,n),i=ne(e+1,t,n);return(X(e)-s+i)/7}function ae(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function oe(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function ue(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=u([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=St.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=St.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=St.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=St.call(this._weekdaysParse,a))?i:-1!==(i=St.call(this._shortWeekdaysParse,a))?i:-1!==(i=St.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=St.call(this._shortWeekdaysParse,a))?i:-1!==(i=St.call(this._weekdaysParse,a))?i:-1!==(i=St.call(this._minWeekdaysParse,a))?i:null:-1!==(i=St.call(this._minWeekdaysParse,a))?i:-1!==(i=St.call(this._weekdaysParse,a))?i:-1!==(i=St.call(this._shortWeekdaysParse,a))?i:null}function de(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],d=[],l=[];for(t=0;t<7;t++)n=u([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),d.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),d.sort(e),l.sort(e),t=0;t<7;t++)o[t]=I(o[t]),d[t]=I(d[t]),l[t]=I(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function le(){return this.hours()%12||12}function he(e,t){F(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function ce(e,t){return t._meridiemParse}function fe(e){return e?e.toLowerCase().replace("_","-"):e}function me(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=fe(e[r]).split("-")).length,n=(n=fe(e[r+1]))?n.split("-"):null;t>0;){if(s=_e(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&w(i,n,!0)>=t-1)break;t--}r++}return null}function _e(e){var t=null;if(!Dn[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=vn._abbr,require("./locale/"+e),ye(t)}catch(e){}return Dn[e]}function ye(e,t){var n;return e&&(n=f(t)?pe(e):ge(e,t))&&(vn=n),vn._abbr}function ge(e,t){if(null!==t){var n=kn;return t.abbr=e,null!=Dn[e]?(M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=Dn[e]._config):null!=t.parentLocale&&(null!=Dn[t.parentLocale]?n=Dn[t.parentLocale]._config:M("parentLocaleUndefined","specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")),Dn[e]=new Y(D(n,t)),ye(e),Dn[e]}return delete Dn[e],null}function pe(e){var n;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return vn;if(!t(e)){if(n=_e(e))return n;e=[e]}return me(e)}function we(e){var t,n=e._a;return n&&-2===l(e).overflow&&(t=n[Xt]<0||n[Xt]>11?Xt:n[Kt]<1||n[Kt]>q(n[Qt],n[Xt])?Kt:n[en]<0||n[en]>24||24===n[en]&&(0!==n[tn]||0!==n[nn]||0!==n[sn])?en:n[tn]<0||n[tn]>59?tn:n[nn]<0||n[nn]>59?nn:n[sn]<0||n[sn]>999?sn:-1,l(e)._overflowDayOfYear&&(t<Qt||t>Kt)&&(t=Kt),l(e)._overflowWeeks&&-1===t&&(t=rn),l(e)._overflowWeekday&&-1===t&&(t=an),l(e).overflow=t),e}function ve(e){var t,n,s,i,r,a,o=e._i,u=Yn.exec(o)||xn.exec(o);if(u){for(l(e).iso=!0,t=0,n=bn.length;t<n;t++)if(bn[t][1].exec(u[1])){i=bn[t][0],s=!1!==bn[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=Tn.length;t<n;t++)if(Tn[t][1].exec(u[3])){r=(u[2]||" ")+Tn[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!On.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),xe(e)}else e._isValid=!1}function Se(t){var n=Pn.exec(t._i);null===n?(ve(t),!1===t._isValid&&(delete t._isValid,e.createFromInputFallback(t))):t._d=new Date(+n[1])}function Me(e,t,n){return null!=e?e:null!=t?t:n}function ke(t){var n=new Date(e.now());return t._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()]}function De(e){var t,n,s,i,r=[];if(!e._d){for(s=ke(e),e._w&&null==e._a[Kt]&&null==e._a[Xt]&&Ye(e),e._dayOfYear&&(i=Me(e._a[Qt],s[Qt]),e._dayOfYear>X(i)&&(l(e)._overflowDayOfYear=!0),n=te(i,0,e._dayOfYear),e._a[Xt]=n.getUTCMonth(),e._a[Kt]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=r[t]=s[t];for(;t<7;t++)e._a[t]=r[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[en]&&0===e._a[tn]&&0===e._a[nn]&&0===e._a[sn]&&(e._nextDay=!0,e._a[en]=0),e._d=(e._useUTC?te:ee).apply(null,r),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[en]=24)}}function Ye(e){var t,n,s,i,r,a,o,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,a=4,n=Me(t.GG,e._a[Qt],ie(Ce(),1,4).year),s=Me(t.W,1),((i=Me(t.E,1))<1||i>7)&&(u=!0)):(r=e._locale._week.dow,a=e._locale._week.doy,n=Me(t.gg,e._a[Qt],ie(Ce(),r,a).year),s=Me(t.w,1),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r),s<1||s>re(n,r,a)?l(e)._overflowWeeks=!0:null!=u?l(e)._overflowWeekday=!0:(o=se(n,s,i,r,a),e._a[Qt]=o.year,e._dayOfYear=o.dayOfYear)}function xe(t){if(t._f!==e.ISO_8601){t._a=[],l(t).empty=!0;var n,s,i,r,a,o=""+t._i,u=o.length,d=0;for(i=V(t._f,t._locale).match(bt)||[],n=0;n<i.length;n++)r=i[n],(s=(o.match(A(r,t))||[])[0])&&((a=o.substr(0,o.indexOf(s))).length>0&&l(t).unusedInput.push(a),o=o.slice(o.indexOf(s)+s.length),d+=s.length),Wt[r]?(s?l(t).empty=!1:l(t).unusedTokens.push(r),Z(r,s,t)):t._strict&&!s&&l(t).unusedTokens.push(r);l(t).charsLeftOver=u-d,o.length>0&&l(t).unusedInput.push(o),t._a[en]<=12&&!0===l(t).bigHour&&t._a[en]>0&&(l(t).bigHour=void 0),l(t).parsedDateParts=t._a.slice(0),l(t).meridiem=t._meridiem,t._a[en]=Oe(t._locale,t._a[en],t._meridiem),De(t),we(t)}else ve(t)}function Oe(e,t,n){var s;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}function be(e){var t,n,s,i,r;if(0===e._f.length)return l(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<e._f.length;i++)r=0,t=m({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],xe(t),h(t)&&(r+=l(t).charsLeftOver,r+=10*l(t).unusedTokens.length,l(t).score=r,(null==s||r<s)&&(s=r,n=t));o(e,n||t)}function Te(e){if(!e._d){var t=b(e._i);e._a=r([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),De(e)}}function Pe(e){var t=new _(we(We(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function We(e){var n=e._i,s=e._f;return e._locale=e._locale||pe(e._l),null===n||void 0===s&&""===n?c({nullInput:!0}):("string"==typeof n&&(e._i=n=e._locale.preparse(n)),y(n)?new _(we(n)):(t(s)?be(e):i(n)?e._d=n:s?xe(e):Re(e),h(e)||(e._d=null),e))}function Re(n){var s=n._i;void 0===s?n._d=new Date(e.now()):i(s)?n._d=new Date(s.valueOf()):"string"==typeof s?Se(n):t(s)?(n._a=r(s.slice(0),function(e){return parseInt(e,10)}),De(n)):"object"==typeof s?Te(n):"number"==typeof s?n._d=new Date(s):e.createFromInputFallback(n)}function Ue(e,i,r,a,o){var u={};return"boolean"==typeof r&&(a=r,r=void 0),(n(e)&&s(e)||t(e)&&0===e.length)&&(e=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=o,u._l=r,u._i=e,u._f=i,u._strict=a,Pe(u)}function Ce(e,t,n,s){return Ue(e,t,n,s,!1)}function Fe(e,n){var s,i;if(1===n.length&&t(n[0])&&(n=n[0]),!n.length)return Ce();for(s=n[0],i=1;i<n.length;++i)n[i].isValid()&&!n[i][e](s)||(s=n[i]);return s}function He(e){var t=b(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,d=t.second||0,l=t.millisecond||0;this._milliseconds=+l+1e3*d+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=pe(),this._bubble()}function Le(e){return e instanceof He}function Ge(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ve(e,t){F(e,0,0,function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+C(~~(e/60),2)+t+C(~~e%60,2)})}function je(e,t){var n=(t||"").match(e)||[],s=((n[n.length-1]||[])+"").match(Un)||["-",0,0],i=60*s[1]+p(s[2]);return"+"===s[0]?i:-i}function Ae(t,n){var s,r;return n._isUTC?(s=n.clone(),r=(y(t)||i(t)?t.valueOf():Ce(t).valueOf())-s.valueOf(),s._d.setTime(s._d.valueOf()+r),e.updateOffset(s,!1),s):Ce(t).local()}function Ee(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ie(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Ne(e,t){var n,s,i,r=e,o=null;return Le(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(r={},t?r[t]=e:r.milliseconds=e):(o=Cn.exec(e))?(n="-"===o[1]?-1:1,r={y:0,d:p(o[Kt])*n,h:p(o[en])*n,m:p(o[tn])*n,s:p(o[nn])*n,ms:p(Ge(1e3*o[sn]))*n}):(o=Fn.exec(e))?(n="-"===o[1]?-1:1,r={y:ze(o[2],n),M:ze(o[3],n),w:ze(o[4],n),d:ze(o[5],n),h:ze(o[6],n),m:ze(o[7],n),s:ze(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=qe(Ce(r.from),Ce(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new He(r),Le(e)&&a(e,"_locale")&&(s._locale=e._locale),s}function ze(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Ze(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function qe(e,t){var n;return e.isValid()&&t.isValid()?(t=Ae(t,e),e.isBefore(t)?n=Ze(e,t):((n=Ze(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function $e(e,t){return function(n,s){var i,r;return null===s||isNaN(+s)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=s,s=r),n="string"==typeof n?+n:n,i=Ne(n,s),Be(this,i,e),this}}function Be(t,n,s,i){var r=n._milliseconds,a=Ge(n._days),o=Ge(n._months);t.isValid()&&(i=null==i||i,r&&t._d.setTime(t._d.valueOf()+r*s),a&&U(t,"Date",R(t,"Date")+a*s),o&&B(t,R(t,"Month")+o*s),i&&e.updateOffset(t,a||o))}function Je(e,t){var n,s=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(s,"months");return n=t-i<0?(t-i)/(i-e.clone().add(s-1,"months")):(t-i)/(e.clone().add(s+1,"months")-i),-(s+n)||0}function Qe(e){var t;return void 0===e?this._locale._abbr:(null!=(t=pe(e))&&(this._locale=t),this)}function Xe(){return this._locale}function Ke(e,t){F(0,[e,e.length],0,t)}function et(e,t,n,s,i){var r;return null==e?ie(this,s,i).year:(r=re(e,s,i),t>r&&(t=r),tt.call(this,e,t,n,s,i))}function tt(e,t,n,s,i){var r=se(e,t,n,s,i),a=te(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}function nt(e){return e}function st(e,t,n,s){var i=pe(),r=u().set(s,t);return i[n](r,e)}function it(e,t,n){if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return st(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=st(e,s,n,"month");return i}function rt(e,t,n,s){"boolean"==typeof e?("number"==typeof t&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,"number"==typeof t&&(n=t,t=void 0),t=t||"");var i=pe(),r=e?i._week.dow:0;if(null!=n)return st(t,(n+r)%7,s,"day");var a,o=[];for(a=0;a<7;a++)o[a]=st(t,(a+r)%7,s,"day");return o}function at(e,t,n,s){var i=Ne(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function ot(e){return e<0?Math.floor(e):Math.ceil(e)}function ut(e){return 4800*e/146097}function dt(e){return 146097*e/4800}function lt(e){return function(){return this.as(e)}}function ht(e){return function(){return this._data[e]}}function ct(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}function ft(e,t,n){var s=Ne(e).abs(),i=ds(s.as("s")),r=ds(s.as("m")),a=ds(s.as("h")),o=ds(s.as("d")),u=ds(s.as("M")),d=ds(s.as("y")),l=i<ls.s&&["s",i]||r<=1&&["m"]||r<ls.m&&["mm",r]||a<=1&&["h"]||a<ls.h&&["hh",a]||o<=1&&["d"]||o<ls.d&&["dd",o]||u<=1&&["M"]||u<ls.M&&["MM",u]||d<=1&&["y"]||["yy",d];return l[2]=t,l[3]=+e>0,l[4]=n,ct.apply(null,l)}function mt(){var e,t,n,s=hs(this._milliseconds)/1e3,i=hs(this._days),r=hs(this._months);t=g((e=g(s/60))/60),s%=60,e%=60;var a=n=g(r/12),o=r%=12,u=i,d=t,l=e,h=s,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(a?a+"Y":"")+(o?o+"M":"")+(u?u+"D":"")+(d||l||h?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(h?h+"S":""):"P0D"}var _t,yt;yt=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var gt=e.momentProperties=[],pt=!1,wt={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var vt;vt=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)a(e,t)&&n.push(t);return n};var St,Mt={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},kt={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Dt=/\d{1,2}/,Yt={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},xt={},Ot={},bt=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Tt=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Pt={},Wt={},Rt=/\d/,Ut=/\d\d/,Ct=/\d{3}/,Ft=/\d{4}/,Ht=/[+-]?\d{6}/,Lt=/\d\d?/,Gt=/\d\d\d\d?/,Vt=/\d\d\d\d\d\d?/,jt=/\d{1,3}/,At=/\d{1,4}/,Et=/[+-]?\d{1,6}/,It=/\d+/,Nt=/[+-]?\d+/,zt=/Z|[+-]\d\d:?\d\d/gi,Zt=/Z|[+-]\d\d(?::?\d\d)?/gi,qt=/[+-]?\d+(\.\d{1,3})?/,$t=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Bt={},Jt={},Qt=0,Xt=1,Kt=2,en=3,tn=4,nn=5,sn=6,rn=7,an=8;St=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},F("M",["MM",2],"Mo",function(){return this.month()+1}),F("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),F("MMMM",0,0,function(e){return this.localeData().months(this,e)}),x("month","M"),T("month",8),j("M",Lt),j("MM",Lt,Ut),j("MMM",function(e,t){return t.monthsShortRegex(e)}),j("MMMM",function(e,t){return t.monthsRegex(e)}),N(["M","MM"],function(e,t){t[Xt]=p(e)-1}),N(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[Xt]=i:l(n).invalidMonth=e});var on=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,un="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),dn="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ln=$t,hn=$t;F("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),F(0,["YY",2],0,function(){return this.year()%100}),F(0,["YYYY",4],0,"year"),F(0,["YYYYY",5],0,"year"),F(0,["YYYYYY",6,!0],0,"year"),x("year","y"),T("year",1),j("Y",Nt),j("YY",Lt,Ut),j("YYYY",At,Ft),j("YYYYY",Et,Ht),j("YYYYYY",Et,Ht),N(["YYYYY","YYYYYY"],Qt),N("YYYY",function(t,n){n[Qt]=2===t.length?e.parseTwoDigitYear(t):p(t)}),N("YY",function(t,n){n[Qt]=e.parseTwoDigitYear(t)}),N("Y",function(e,t){t[Qt]=parseInt(e,10)}),e.parseTwoDigitYear=function(e){return p(e)+(p(e)>68?1900:2e3)};var cn=W("FullYear",!0);F("w",["ww",2],"wo","week"),F("W",["WW",2],"Wo","isoWeek"),x("week","w"),x("isoWeek","W"),T("week",5),T("isoWeek",5),j("w",Lt),j("ww",Lt,Ut),j("W",Lt),j("WW",Lt,Ut),z(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=p(e)});var fn={dow:0,doy:6};F("d",0,"do","day"),F("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),F("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),F("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),F("e",0,0,"weekday"),F("E",0,0,"isoWeekday"),x("day","d"),x("weekday","e"),x("isoWeekday","E"),T("day",11),T("weekday",11),T("isoWeekday",11),j("d",Lt),j("e",Lt),j("E",Lt),j("dd",function(e,t){return t.weekdaysMinRegex(e)}),j("ddd",function(e,t){return t.weekdaysShortRegex(e)}),j("dddd",function(e,t){return t.weekdaysRegex(e)}),z(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:l(n).invalidWeekday=e}),z(["d","e","E"],function(e,t,n,s){t[s]=p(e)});var mn="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),_n="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),yn="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),gn=$t,pn=$t,wn=$t;F("H",["HH",2],0,"hour"),F("h",["hh",2],0,le),F("k",["kk",2],0,function(){return this.hours()||24}),F("hmm",0,0,function(){return""+le.apply(this)+C(this.minutes(),2)}),F("hmmss",0,0,function(){return""+le.apply(this)+C(this.minutes(),2)+C(this.seconds(),2)}),F("Hmm",0,0,function(){return""+this.hours()+C(this.minutes(),2)}),F("Hmmss",0,0,function(){return""+this.hours()+C(this.minutes(),2)+C(this.seconds(),2)}),he("a",!0),he("A",!1),x("hour","h"),T("hour",13),j("a",ce),j("A",ce),j("H",Lt),j("h",Lt),j("HH",Lt,Ut),j("hh",Lt,Ut),j("hmm",Gt),j("hmmss",Vt),j("Hmm",Gt),j("Hmmss",Vt),N(["H","HH"],en),N(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),N(["h","hh"],function(e,t,n){t[en]=p(e),l(n).bigHour=!0}),N("hmm",function(e,t,n){var s=e.length-2;t[en]=p(e.substr(0,s)),t[tn]=p(e.substr(s)),l(n).bigHour=!0}),N("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[en]=p(e.substr(0,s)),t[tn]=p(e.substr(s,2)),t[nn]=p(e.substr(i)),l(n).bigHour=!0}),N("Hmm",function(e,t,n){var s=e.length-2;t[en]=p(e.substr(0,s)),t[tn]=p(e.substr(s))}),N("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[en]=p(e.substr(0,s)),t[tn]=p(e.substr(s,2)),t[nn]=p(e.substr(i))});var vn,Sn=/[ap]\.?m?\.?/i,Mn=W("Hours",!0),kn={calendar:Mt,longDateFormat:kt,invalidDate:"Invalid date",ordinal:"%d",ordinalParse:Dt,relativeTime:Yt,months:un,monthsShort:dn,week:fn,weekdays:mn,weekdaysMin:yn,weekdaysShort:_n,meridiemParse:Sn},Dn={},Yn=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,xn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,On=/Z|[+-]\d\d(?::?\d\d)?/,bn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Tn=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Pn=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=S("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Wn=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ce.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:c()}),Rn=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ce.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:c()});Ve("Z",":"),Ve("ZZ",""),j("Z",Zt),j("ZZ",Zt),N(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=je(Zt,e)});var Un=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Cn=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Fn=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Ne.fn=He.prototype;var Hn=$e(1,"add"),Ln=$e(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Gn=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});F(0,["gg",2],0,function(){return this.weekYear()%100}),F(0,["GG",2],0,function(){return this.isoWeekYear()%100}),Ke("gggg","weekYear"),Ke("ggggg","weekYear"),Ke("GGGG","isoWeekYear"),Ke("GGGGG","isoWeekYear"),x("weekYear","gg"),x("isoWeekYear","GG"),T("weekYear",1),T("isoWeekYear",1),j("G",Nt),j("g",Nt),j("GG",Lt,Ut),j("gg",Lt,Ut),j("GGGG",At,Ft),j("gggg",At,Ft),j("GGGGG",Et,Ht),j("ggggg",Et,Ht),z(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=p(e)}),z(["gg","GG"],function(t,n,s,i){n[i]=e.parseTwoDigitYear(t)}),F("Q",0,"Qo","quarter"),x("quarter","Q"),T("quarter",7),j("Q",Rt),N("Q",function(e,t){t[Xt]=3*(p(e)-1)}),F("D",["DD",2],"Do","date"),x("date","D"),T("date",9),j("D",Lt),j("DD",Lt,Ut),j("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),N(["D","DD"],Kt),N("Do",function(e,t){t[Kt]=p(e.match(Lt)[0],10)});var Vn=W("Date",!0);F("DDD",["DDDD",3],"DDDo","dayOfYear"),x("dayOfYear","DDD"),T("dayOfYear",4),j("DDD",jt),j("DDDD",Ct),N(["DDD","DDDD"],function(e,t,n){n._dayOfYear=p(e)}),F("m",["mm",2],0,"minute"),x("minute","m"),T("minute",14),j("m",Lt),j("mm",Lt,Ut),N(["m","mm"],tn);var jn=W("Minutes",!1);F("s",["ss",2],0,"second"),x("second","s"),T("second",15),j("s",Lt),j("ss",Lt,Ut),N(["s","ss"],nn);var An=W("Seconds",!1);F("S",0,0,function(){return~~(this.millisecond()/100)}),F(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),F(0,["SSS",3],0,"millisecond"),F(0,["SSSS",4],0,function(){return 10*this.millisecond()}),F(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),F(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),F(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),F(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),F(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),x("millisecond","ms"),T("millisecond",16),j("S",jt,Rt),j("SS",jt,Ut),j("SSS",jt,Ct);var En;for(En="SSSS";En.length<=9;En+="S")j(En,It);for(En="S";En.length<=9;En+="S")N(En,function(e,t){t[sn]=p(1e3*("0."+e))});var In=W("Milliseconds",!1);F("z",0,0,"zoneAbbr"),F("zz",0,0,"zoneName");var Nn=_.prototype;Nn.add=Hn,Nn.calendar=function(t,n){var s=t||Ce(),i=Ae(s,this).startOf("day"),r=e.calendarFormat(this,i)||"sameElse",a=n&&(k(n[r])?n[r].call(this,s):n[r]);return this.format(a||this.localeData().calendar(r,this,Ce(s)))},Nn.clone=function(){return new _(this)},Nn.diff=function(e,t,n){var s,i,r,a;return this.isValid()&&(s=Ae(e,this)).isValid()?(i=6e4*(s.utcOffset()-this.utcOffset()),"year"===(t=O(t))||"month"===t||"quarter"===t?(a=Je(this,s),"quarter"===t?a/=3:"year"===t&&(a/=12)):(r=this-s,a="second"===t?r/1e3:"minute"===t?r/6e4:"hour"===t?r/36e5:"day"===t?(r-i)/864e5:"week"===t?(r-i)/6048e5:r),n?a:g(a)):NaN},Nn.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},Nn.format=function(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var n=G(this,t);return this.localeData().postformat(n)},Nn.from=function(e,t){return this.isValid()&&(y(e)&&e.isValid()||Ce(e).isValid())?Ne({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Nn.fromNow=function(e){return this.from(Ce(),e)},Nn.to=function(e,t){return this.isValid()&&(y(e)&&e.isValid()||Ce(e).isValid())?Ne({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Nn.toNow=function(e){return this.to(Ce(),e)},Nn.get=function(e){return e=O(e),k(this[e])?this[e]():this},Nn.invalidAt=function(){return l(this).overflow},Nn.isAfter=function(e,t){var n=y(e)?e:Ce(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=O(f(t)?"millisecond":t))?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},Nn.isBefore=function(e,t){var n=y(e)?e:Ce(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=O(f(t)?"millisecond":t))?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},Nn.isBetween=function(e,t,n,s){return("("===(s=s||"()")[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))},Nn.isSame=function(e,t){var n,s=y(e)?e:Ce(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=O(t||"millisecond"))?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},Nn.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},Nn.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},Nn.isValid=function(){return h(this)},Nn.lang=Gn,Nn.locale=Qe,Nn.localeData=Xe,Nn.max=Rn,Nn.min=Wn,Nn.parsingFlags=function(){return o({},l(this))},Nn.set=function(e,t){if("object"==typeof e)for(var n=P(e=b(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(e=O(e),k(this[e]))return this[e](t);return this},Nn.startOf=function(e){switch(e=O(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},Nn.subtract=Ln,Nn.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},Nn.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},Nn.toDate=function(){return new Date(this.valueOf())},Nn.toISOString=function(){var e=this.clone().utc();return 0<e.year()&&e.year()<=9999?k(Date.prototype.toISOString)?this.toDate().toISOString():G(e,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):G(e,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")},Nn.toJSON=function(){return this.isValid()?this.toISOString():null},Nn.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Nn.unix=function(){return Math.floor(this.valueOf()/1e3)},Nn.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Nn.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Nn.year=cn,Nn.isLeapYear=function(){return K(this.year())},Nn.weekYear=function(e){return et.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Nn.isoWeekYear=function(e){return et.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Nn.quarter=Nn.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Nn.month=J,Nn.daysInMonth=function(){return q(this.year(),this.month())},Nn.week=Nn.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Nn.isoWeek=Nn.isoWeeks=function(e){var t=ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Nn.weeksInYear=function(){var e=this.localeData()._week;return re(this.year(),e.dow,e.doy)},Nn.isoWeeksInYear=function(){return re(this.year(),1,4)},Nn.date=Vn,Nn.day=Nn.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=ae(e,this.localeData()),this.add(e-t,"d")):t},Nn.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Nn.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=oe(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Nn.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Nn.hour=Nn.hours=Mn,Nn.minute=Nn.minutes=jn,Nn.second=Nn.seconds=An,Nn.millisecond=Nn.milliseconds=In,Nn.utcOffset=function(t,n){var s,i=this._offset||0;return this.isValid()?null!=t?("string"==typeof t?t=je(Zt,t):Math.abs(t)<16&&(t*=60),!this._isUTC&&n&&(s=Ee(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==t&&(!n||this._changeInProgress?Be(this,Ne(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:Ee(this):null!=t?this:NaN},Nn.utc=function(e){return this.utcOffset(0,e)},Nn.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ee(this),"m")),this},Nn.parseZone=function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&(0===je(zt,this._i)?this.utcOffset(0,!0):this.utcOffset(je(zt,this._i))),this},Nn.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ce(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Nn.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Nn.isLocal=function(){return!!this.isValid()&&!this._isUTC},Nn.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Nn.isUtc=Ie,Nn.isUTC=Ie,Nn.zoneAbbr=function(){return this._isUTC?"UTC":""},Nn.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Nn.dates=S("dates accessor is deprecated. Use date instead.",Vn),Nn.months=S("months accessor is deprecated. Use month instead",J),Nn.years=S("years accessor is deprecated. Use year instead",cn),Nn.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),Nn.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!f(this._isDSTShifted))return this._isDSTShifted;var e={};if(m(e,this),(e=We(e))._a){var t=e._isUTC?u(e._a):Ce(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var zn=Nn,Zn=Y.prototype;Zn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return k(s)?s.call(t,n):s},Zn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},Zn.invalidDate=function(){return this._invalidDate},Zn.ordinal=function(e){return this._ordinal.replace("%d",e)},Zn.preparse=nt,Zn.postformat=nt,Zn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return k(i)?i(e,t,n,s):i.replace(/%d/i,e)},Zn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return k(n)?n(t):n.replace(/%s/i,t)},Zn.set=function(e){var t,n;for(n in e)k(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},Zn.months=function(e,n){return e?t(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||on).test(n)?"format":"standalone"][e.month()]:this._months},Zn.monthsShort=function(e,n){return e?t(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[on.test(n)?"format":"standalone"][e.month()]:this._monthsShort},Zn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return $.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=u([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},Zn.monthsRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Q.call(this),e?this._monthsStrictRegex:this._monthsRegex):(a(this,"_monthsRegex")||(this._monthsRegex=hn),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Zn.monthsShortRegex=function(e){return this._monthsParseExact?(a(this,"_monthsRegex")||Q.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(a(this,"_monthsShortRegex")||(this._monthsShortRegex=ln),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Zn.week=function(e){return ie(e,this._week.dow,this._week.doy).week},Zn.firstDayOfYear=function(){return this._week.doy},Zn.firstDayOfWeek=function(){return this._week.dow},Zn.weekdays=function(e,n){return e?t(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(n)?"format":"standalone"][e.day()]:this._weekdays},Zn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},Zn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},Zn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return ue.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=u([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},Zn.weekdaysRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||de.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=gn),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Zn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||de.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=pn),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Zn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||de.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=wn),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Zn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Zn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ye("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===p(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),e.lang=S("moment.lang is deprecated. Use moment.locale instead.",ye),e.langData=S("moment.langData is deprecated. Use moment.localeData instead.",pe);var qn=Math.abs,$n=lt("ms"),Bn=lt("s"),Jn=lt("m"),Qn=lt("h"),Xn=lt("d"),Kn=lt("w"),es=lt("M"),ts=lt("y"),ns=ht("milliseconds"),ss=ht("seconds"),is=ht("minutes"),rs=ht("hours"),as=ht("days"),os=ht("months"),us=ht("years"),ds=Math.round,ls={s:45,m:45,h:22,d:26,M:11},hs=Math.abs,cs=He.prototype;return cs.abs=function(){var e=this._data;return this._milliseconds=qn(this._milliseconds),this._days=qn(this._days),this._months=qn(this._months),e.milliseconds=qn(e.milliseconds),e.seconds=qn(e.seconds),e.minutes=qn(e.minutes),e.hours=qn(e.hours),e.months=qn(e.months),e.years=qn(e.years),this},cs.add=function(e,t){return at(this,e,t,1)},cs.subtract=function(e,t){return at(this,e,t,-1)},cs.as=function(e){var t,n,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return t=this._days+s/864e5,n=this._months+ut(t),"month"===e?n:n/12;switch(t=this._days+Math.round(dt(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},cs.asMilliseconds=$n,cs.asSeconds=Bn,cs.asMinutes=Jn,cs.asHours=Qn,cs.asDays=Xn,cs.asWeeks=Kn,cs.asMonths=es,cs.asYears=ts,cs.valueOf=function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*p(this._months/12)},cs._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*ot(dt(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=g(r/1e3),u.seconds=e%60,t=g(e/60),u.minutes=t%60,n=g(t/60),u.hours=n%24,a+=g(n/24),i=g(ut(a)),o+=i,a-=ot(dt(i)),s=g(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},cs.get=function(e){return e=O(e),this[e+"s"]()},cs.milliseconds=ns,cs.seconds=ss,cs.minutes=is,cs.hours=rs,cs.days=as,cs.weeks=function(){return g(this.days()/7)},cs.months=os,cs.years=us,cs.humanize=function(e){var t=this.localeData(),n=ft(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},cs.toISOString=mt,cs.toString=mt,cs.toJSON=mt,cs.locale=Qe,cs.localeData=Xe,cs.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",mt),cs.lang=Gn,F("X",0,0,"unix"),F("x",0,0,"valueOf"),j("x",Nt),j("X",qt),N("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),N("x",function(e,t,n){n._d=new Date(p(e))}),e.version="2.15.1",function(e){_t=e}(Ce),e.fn=zn,e.min=function(){return Fe("isBefore",[].slice.call(arguments,0))},e.max=function(){return Fe("isAfter",[].slice.call(arguments,0))},e.now=function(){return Date.now?Date.now():+new Date},e.utc=u,e.unix=function(e){return Ce(1e3*e)},e.months=function(e,t){return it(e,t,"months")},e.isDate=i,e.locale=ye,e.invalid=c,e.duration=Ne,e.isMoment=y,e.weekdays=function(e,t,n){return rt(e,t,n,"weekdays")},e.parseZone=function(){return Ce.apply(null,arguments).parseZone()},e.localeData=pe,e.isDuration=Le,e.monthsShort=function(e,t){return it(e,t,"monthsShort")},e.weekdaysMin=function(e,t,n){return rt(e,t,n,"weekdaysMin")},e.defineLocale=ge,e.updateLocale=function(e,t){if(null!=t){var n,s=kn;null!=Dn[e]&&(s=Dn[e]._config),(n=new Y(t=D(s,t))).parentLocale=Dn[e],Dn[e]=n,ye(e)}else null!=Dn[e]&&(null!=Dn[e].parentLocale?Dn[e]=Dn[e].parentLocale:null!=Dn[e]&&delete Dn[e]);return Dn[e]},e.locales=function(){return vt(Dn)},e.weekdaysShort=function(e,t,n){return rt(e,t,n,"weekdaysShort")},e.normalizeUnits=O,e.relativeTimeRounding=function(e){return void 0===e?ds:"function"==typeof e&&(ds=e,!0)},e.relativeTimeThreshold=function(e,t){return void 0!==ls[e]&&(void 0===t?ls[e]:(ls[e]=t,!0))},e.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},e.prototype=zn,e}); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";function e(){return cs.apply(null,arguments)}function t(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function n(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){var t;for(t in e)return!1;return!0}function i(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function r(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function o(e,t){for(var n in t)a(t,n)&&(e[n]=t[n]);return a(t,"toString")&&(e.toString=t.toString),a(t,"valueOf")&&(e.valueOf=t.valueOf),e}function u(e,t,n,s){return _t(e,t,n,s,!0).utc()}function d(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(e){return null==e._pf&&(e._pf=d()),e._pf}function h(e){if(null==e._isValid){var t=l(e),n=fs.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function c(e){var t=u(NaN);return null!=e?o(l(t),e):l(t).userInvalidated=!0,t}function f(e){return void 0===e}function m(e,t){var n,s,i;if(f(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),f(t._i)||(e._i=t._i),f(t._f)||(e._f=t._f),f(t._l)||(e._l=t._l),f(t._strict)||(e._strict=t._strict),f(t._tzm)||(e._tzm=t._tzm),f(t._isUTC)||(e._isUTC=t._isUTC),f(t._offset)||(e._offset=t._offset),f(t._pf)||(e._pf=l(t)),f(t._locale)||(e._locale=t._locale),ms.length>0)for(n in ms)f(i=t[s=ms[n]])||(e[s]=i);return e}function _(t){m(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),!1===_s&&(_s=!0,e.updateOffset(this),_s=!1)}function y(e){return e instanceof _||null!=e&&null!=e._isAMomentObject}function g(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function p(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=g(t)),n}function w(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&p(e[s])!==p(t[s]))&&a++;return a+r}function v(t){!1===e.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function S(t,n){var s=!0;return o(function(){if(null!=e.deprecationHandler&&e.deprecationHandler(null,t),s){for(var i,r=[],a=0;a<arguments.length;a++){if(i="","object"==typeof arguments[a]){i+="\n["+a+"] ";for(var o in arguments[0])i+=o+": "+arguments[0][o]+", ";i=i.slice(0,-2)}else i=arguments[a];r.push(i)}v(t+"\nArguments: "+Array.prototype.slice.call(r).join("")+"\n"+(new Error).stack),s=!1}return n.apply(this,arguments)},n)}function M(t,n){null!=e.deprecationHandler&&e.deprecationHandler(t,n),ys[t]||(v(n),ys[t]=!0)}function k(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function D(e){var t,n;for(n in e)k(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function Y(e,t){var s,i=o({},e);for(s in t)a(t,s)&&(n(e[s])&&n(t[s])?(i[s]={},o(i[s],e[s]),o(i[s],t[s])):null!=t[s]?i[s]=t[s]:delete i[s]);for(s in e)a(e,s)&&!a(t,s)&&n(e[s])&&(i[s]=o({},i[s]));return i}function x(e){null!=e&&this.set(e)}function O(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return k(s)?s.call(t,n):s}function b(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])}function T(){return this._invalidDate}function P(e){return this._ordinal.replace("%d",e)}function W(e,t,n,s){var i=this._relativeTime[n];return k(i)?i(e,t,n,s):i.replace(/%d/i,e)}function R(e,t){var n=this._relativeTime[e>0?"future":"past"];return k(n)?n(t):n.replace(/%s/i,t)}function U(e,t){var n=e.toLowerCase();ks[n]=ks[n+"s"]=ks[t]=e}function C(e){return"string"==typeof e?ks[e]||ks[e.toLowerCase()]:void 0}function F(e){var t,n,s={};for(n in e)a(e,n)&&(t=C(n))&&(s[t]=e[n]);return s}function H(e,t){Ds[e]=t}function L(e){var t=[];for(var n in e)t.push({unit:n,priority:Ds[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}function G(t,n){return function(s){return null!=s?(j(this,t,s),e.updateOffset(this,n),this):V(this,t)}}function V(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function j(e,t,n){e.isValid()&&e._d["set"+(e._isUTC?"UTC":"")+t](n)}function A(e){return e=C(e),k(this[e])?this[e]():this}function E(e,t){if("object"==typeof e)for(var n=L(e=F(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(e=C(e),k(this[e]))return this[e](t);return this}function I(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(e>=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}function N(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(bs[e]=i),t&&(bs[t[0]]=function(){return I(i.apply(this,arguments),t[1],t[2])}),n&&(bs[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function z(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Z(e){var t,n,s=e.match(Ys);for(t=0,n=s.length;t<n;t++)bs[s[t]]?s[t]=bs[s[t]]:s[t]=z(s[t]);return function(t){var i,r="";for(i=0;i<n;i++)r+=s[i]instanceof Function?s[i].call(t,e):s[i];return r}}function q(e,t){return e.isValid()?(t=$(t,e.localeData()),Os[t]=Os[t]||Z(t),Os[t](e)):e.localeData().invalidDate()}function $(e,t){function n(e){return t.longDateFormat(e)||e}var s=5;for(xs.lastIndex=0;s>=0&&xs.test(e);)e=e.replace(xs,n),xs.lastIndex=0,s-=1;return e}function B(e,t,n){Zs[e]=k(t)?t:function(e,s){return e&&n?n:t}}function J(e,t){return a(Zs,e)?Zs[e](t._strict,t._locale):new RegExp(Q(e))}function Q(e){return X(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i}))}function X(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function K(e,t){var n,s=t;for("string"==typeof e&&(e=[e]),"number"==typeof t&&(s=function(e,n){n[t]=p(e)}),n=0;n<e.length;n++)qs[e[n]]=s}function ee(e,t){K(e,function(e,n,s,i){s._w=s._w||{},t(e,s._w,s,i)})}function te(e,t,n){null!=t&&a(qs,e)&&qs[e](t,n._a,n,e)}function ne(e,t){return new Date(Date.UTC(e,t+1,0)).getUTCDate()}function se(e,n){return e?t(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||si).test(n)?"format":"standalone"][e.month()]:this._months}function ie(e,n){return e?t(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[si.test(n)?"format":"standalone"][e.month()]:this._monthsShort}function re(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=u([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?(i=ps.call(this._shortMonthsParse,a),-1!==i?i:null):(i=ps.call(this._longMonthsParse,a),-1!==i?i:null):"MMM"===t?-1!==(i=ps.call(this._shortMonthsParse,a))?i:(i=ps.call(this._longMonthsParse,a),-1!==i?i:null):-1!==(i=ps.call(this._longMonthsParse,a))?i:(i=ps.call(this._shortMonthsParse,a),-1!==i?i:null)}function ae(e,t,n){var s,i,r;if(this._monthsParseExact)return re.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=u([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}}function oe(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=p(t);else if("number"!=typeof(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),ne(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function ue(t){return null!=t?(oe(this,t),e.updateOffset(this,!0),this):V(this,"Month")}function de(){return ne(this.year(),this.month())}function le(e){return this._monthsParseExact?(a(this,"_monthsRegex")||ce.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(a(this,"_monthsShortRegex")||(this._monthsShortRegex=ai),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)}function he(e){return this._monthsParseExact?(a(this,"_monthsRegex")||ce.call(this),e?this._monthsStrictRegex:this._monthsRegex):(a(this,"_monthsRegex")||(this._monthsRegex=oi),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)}function ce(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=u([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=X(s[t]),i[t]=X(i[t]);for(t=0;t<24;t++)r[t]=X(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function fe(e){return me(e)?366:365}function me(e){return e%4==0&&e%100!=0||e%400==0}function _e(){return me(this.year())}function ye(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&e>=0&&isFinite(o.getFullYear())&&o.setFullYear(e),o}function ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&e>=0&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function pe(e,t,n){var s=7+t-n;return-((7+ge(e,0,s).getUTCDay()-t)%7)+s-1}function we(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+pe(e,s,i);return o<=0?a=fe(r=e-1)+o:o>fe(e)?(r=e+1,a=o-fe(e)):(r=e,a=o),{year:r,dayOfYear:a}}function ve(e,t,n){var s,i,r=pe(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Se(i=e.year()-1,t,n):a>Se(e.year(),t,n)?(s=a-Se(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Se(e,t,n){var s=pe(e,t,n),i=pe(e+1,t,n);return(fe(e)-s+i)/7}function Me(e){return ve(e,this._week.dow,this._week.doy).week}function ke(){return this._week.dow}function De(){return this._week.doy}function Ye(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function xe(e){var t=ve(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Oe(e,t){return"string"!=typeof e?e:isNaN(e)?(e=t.weekdaysParse(e),"number"==typeof e?e:null):parseInt(e,10)}function be(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Te(e,n){return e?t(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(n)?"format":"standalone"][e.day()]:this._weekdays}function Pe(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort}function We(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Re(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=u([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?(i=ps.call(this._weekdaysParse,a),-1!==i?i:null):"ddd"===t?(i=ps.call(this._shortWeekdaysParse,a),-1!==i?i:null):(i=ps.call(this._minWeekdaysParse,a),-1!==i?i:null):"dddd"===t?-1!==(i=ps.call(this._weekdaysParse,a))?i:-1!==(i=ps.call(this._shortWeekdaysParse,a))?i:(i=ps.call(this._minWeekdaysParse,a),-1!==i?i:null):"ddd"===t?-1!==(i=ps.call(this._shortWeekdaysParse,a))?i:-1!==(i=ps.call(this._weekdaysParse,a))?i:(i=ps.call(this._minWeekdaysParse,a),-1!==i?i:null):-1!==(i=ps.call(this._minWeekdaysParse,a))?i:-1!==(i=ps.call(this._weekdaysParse,a))?i:(i=ps.call(this._shortWeekdaysParse,a),-1!==i?i:null)}function Ue(e,t,n){var s,i,r;if(this._weekdaysParseExact)return Re.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=u([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".",".?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}}function Ce(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Oe(e,this.localeData()),this.add(e-t,"d")):t}function Fe(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function He(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=be(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Le(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||je.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(a(this,"_weekdaysRegex")||(this._weekdaysRegex=fi),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Ge(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||je.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(a(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=mi),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Ve(e){return this._weekdaysParseExact?(a(this,"_weekdaysRegex")||je.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(a(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=_i),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function je(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],d=[],l=[];for(t=0;t<7;t++)n=u([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),d.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),d.sort(e),l.sort(e),t=0;t<7;t++)o[t]=X(o[t]),d[t]=X(d[t]),l[t]=X(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+d.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Ae(){return this.hours()%12||12}function Ee(){return this.hours()||24}function Ie(e,t){N(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ne(e,t){return t._meridiemParse}function ze(e){return"p"===(e+"").toLowerCase().charAt(0)}function Ze(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}function qe(e){return e?e.toLowerCase().replace("_","-"):e}function $e(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=qe(e[r]).split("-")).length,n=(n=qe(e[r+1]))?n.split("-"):null;t>0;){if(s=Be(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&w(i,n,!0)>=t-1)break;t--}r++}return null}function Be(e){var t=null;if(!vi[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=yi._abbr,require("./locale/"+e),Je(t)}catch(e){}return vi[e]}function Je(e,t){var n;return e&&(n=f(t)?Ke(e):Qe(e,t))&&(yi=n),yi._abbr}function Qe(e,t){if(null!==t){var n=wi;return t.abbr=e,null!=vi[e]?(M("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=vi[e]._config):null!=t.parentLocale&&(null!=vi[t.parentLocale]?n=vi[t.parentLocale]._config:M("parentLocaleUndefined","specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")),vi[e]=new x(Y(n,t)),Je(e),vi[e]}return delete vi[e],null}function Xe(e,t){if(null!=t){var n,s=wi;null!=vi[e]&&(s=vi[e]._config),(n=new x(t=Y(s,t))).parentLocale=vi[e],vi[e]=n,Je(e)}else null!=vi[e]&&(null!=vi[e].parentLocale?vi[e]=vi[e].parentLocale:null!=vi[e]&&delete vi[e]);return vi[e]}function Ke(e){var n;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return yi;if(!t(e)){if(n=Be(e))return n;e=[e]}return $e(e)}function et(){return gs(vi)}function tt(e){var t,n=e._a;return n&&-2===l(e).overflow&&(t=n[Bs]<0||n[Bs]>11?Bs:n[Js]<1||n[Js]>ne(n[$s],n[Bs])?Js:n[Qs]<0||n[Qs]>24||24===n[Qs]&&(0!==n[Xs]||0!==n[Ks]||0!==n[ei])?Qs:n[Xs]<0||n[Xs]>59?Xs:n[Ks]<0||n[Ks]>59?Ks:n[ei]<0||n[ei]>999?ei:-1,l(e)._overflowDayOfYear&&(t<$s||t>Js)&&(t=Js),l(e)._overflowWeeks&&-1===t&&(t=ti),l(e)._overflowWeekday&&-1===t&&(t=ni),l(e).overflow=t),e}function nt(e){var t,n,s,i,r,a,o=e._i,u=Si.exec(o)||Mi.exec(o);if(u){for(l(e).iso=!0,t=0,n=Di.length;t<n;t++)if(Di[t][1].exec(u[1])){i=Di[t][0],s=!1!==Di[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=Yi.length;t<n;t++)if(Yi[t][1].exec(u[3])){r=(u[2]||" ")+Yi[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!ki.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),ut(e)}else e._isValid=!1}function st(t){var n=xi.exec(t._i);null===n?(nt(t),!1===t._isValid&&(delete t._isValid,e.createFromInputFallback(t))):t._d=new Date(+n[1])}function it(e,t,n){return null!=e?e:null!=t?t:n}function rt(t){var n=new Date(e.now());return t._useUTC?[n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate()]:[n.getFullYear(),n.getMonth(),n.getDate()]}function at(e){var t,n,s,i,r=[];if(!e._d){for(s=rt(e),e._w&&null==e._a[Js]&&null==e._a[Bs]&&ot(e),e._dayOfYear&&(i=it(e._a[$s],s[$s]),e._dayOfYear>fe(i)&&(l(e)._overflowDayOfYear=!0),n=ge(i,0,e._dayOfYear),e._a[Bs]=n.getUTCMonth(),e._a[Js]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=r[t]=s[t];for(;t<7;t++)e._a[t]=r[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[Qs]&&0===e._a[Xs]&&0===e._a[Ks]&&0===e._a[ei]&&(e._nextDay=!0,e._a[Qs]=0),e._d=(e._useUTC?ge:ye).apply(null,r),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Qs]=24)}}function ot(e){var t,n,s,i,r,a,o,u;null!=(t=e._w).GG||null!=t.W||null!=t.E?(r=1,a=4,n=it(t.GG,e._a[$s],ve(yt(),1,4).year),s=it(t.W,1),((i=it(t.E,1))<1||i>7)&&(u=!0)):(r=e._locale._week.dow,a=e._locale._week.doy,n=it(t.gg,e._a[$s],ve(yt(),r,a).year),s=it(t.w,1),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||t.e>6)&&(u=!0)):i=r),s<1||s>Se(n,r,a)?l(e)._overflowWeeks=!0:null!=u?l(e)._overflowWeekday=!0:(o=we(n,s,i,r,a),e._a[$s]=o.year,e._dayOfYear=o.dayOfYear)}function ut(t){if(t._f!==e.ISO_8601){t._a=[],l(t).empty=!0;var n,s,i,r,a,o=""+t._i,u=o.length,d=0;for(i=$(t._f,t._locale).match(Ys)||[],n=0;n<i.length;n++)r=i[n],(s=(o.match(J(r,t))||[])[0])&&((a=o.substr(0,o.indexOf(s))).length>0&&l(t).unusedInput.push(a),o=o.slice(o.indexOf(s)+s.length),d+=s.length),bs[r]?(s?l(t).empty=!1:l(t).unusedTokens.push(r),te(r,s,t)):t._strict&&!s&&l(t).unusedTokens.push(r);l(t).charsLeftOver=u-d,o.length>0&&l(t).unusedInput.push(o),t._a[Qs]<=12&&!0===l(t).bigHour&&t._a[Qs]>0&&(l(t).bigHour=void 0),l(t).parsedDateParts=t._a.slice(0),l(t).meridiem=t._meridiem,t._a[Qs]=dt(t._locale,t._a[Qs],t._meridiem),at(t),tt(t)}else nt(t)}function dt(e,t,n){var s;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0),t):t}function lt(e){var t,n,s,i,r;if(0===e._f.length)return l(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;i<e._f.length;i++)r=0,t=m({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],ut(t),h(t)&&(r+=l(t).charsLeftOver,r+=10*l(t).unusedTokens.length,l(t).score=r,(null==s||r<s)&&(s=r,n=t));o(e,n||t)}function ht(e){if(!e._d){var t=F(e._i);e._a=r([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),at(e)}}function ct(e){var t=new _(tt(ft(e)));return t._nextDay&&(t.add(1,"d"),t._nextDay=void 0),t}function ft(e){var n=e._i,s=e._f;return e._locale=e._locale||Ke(e._l),null===n||void 0===s&&""===n?c({nullInput:!0}):("string"==typeof n&&(e._i=n=e._locale.preparse(n)),y(n)?new _(tt(n)):(t(s)?lt(e):i(n)?e._d=n:s?ut(e):mt(e),h(e)||(e._d=null),e))}function mt(n){var s=n._i;void 0===s?n._d=new Date(e.now()):i(s)?n._d=new Date(s.valueOf()):"string"==typeof s?st(n):t(s)?(n._a=r(s.slice(0),function(e){return parseInt(e,10)}),at(n)):"object"==typeof s?ht(n):"number"==typeof s?n._d=new Date(s):e.createFromInputFallback(n)}function _t(e,i,r,a,o){var u={};return"boolean"==typeof r&&(a=r,r=void 0),(n(e)&&s(e)||t(e)&&0===e.length)&&(e=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=o,u._l=r,u._i=e,u._f=i,u._strict=a,ct(u)}function yt(e,t,n,s){return _t(e,t,n,s,!1)}function gt(e,n){var s,i;if(1===n.length&&t(n[0])&&(n=n[0]),!n.length)return yt();for(s=n[0],i=1;i<n.length;++i)n[i].isValid()&&!n[i][e](s)||(s=n[i]);return s}function pt(){return gt("isBefore",[].slice.call(arguments,0))}function wt(){return gt("isAfter",[].slice.call(arguments,0))}function vt(e){var t=F(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||0,a=t.day||0,o=t.hour||0,u=t.minute||0,d=t.second||0,l=t.millisecond||0;this._milliseconds=+l+1e3*d+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=Ke(),this._bubble()}function St(e){return e instanceof vt}function Mt(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function kt(e,t){N(e,0,0,function(){var e=this.utcOffset(),n="+";return e<0&&(e=-e,n="-"),n+I(~~(e/60),2)+t+I(~~e%60,2)})}function Dt(e,t){var n=(t||"").match(e)||[],s=((n[n.length-1]||[])+"").match(Pi)||["-",0,0],i=60*s[1]+p(s[2]);return"+"===s[0]?i:-i}function Yt(t,n){var s,r;return n._isUTC?(s=n.clone(),r=(y(t)||i(t)?t.valueOf():yt(t).valueOf())-s.valueOf(),s._d.setTime(s._d.valueOf()+r),e.updateOffset(s,!1),s):yt(t).local()}function xt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Ot(t,n){var s,i=this._offset||0;return this.isValid()?null!=t?("string"==typeof t?t=Dt(Is,t):Math.abs(t)<16&&(t*=60),!this._isUTC&&n&&(s=xt(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==t&&(!n||this._changeInProgress?It(this,Gt(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:xt(this):null!=t?this:NaN}function bt(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}function Tt(e){return this.utcOffset(0,e)}function Pt(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(xt(this),"m")),this}function Wt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&(0===Dt(Es,this._i)?this.utcOffset(0,!0):this.utcOffset(Dt(Es,this._i))),this}function Rt(e){return!!this.isValid()&&(e=e?yt(e).utcOffset():0,(this.utcOffset()-e)%60==0)}function Ut(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ct(){if(!f(this._isDSTShifted))return this._isDSTShifted;var e={};if(m(e,this),(e=ft(e))._a){var t=e._isUTC?u(e._a):yt(e._a);this._isDSTShifted=this.isValid()&&w(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Ft(){return!!this.isValid()&&!this._isUTC}function Ht(){return!!this.isValid()&&this._isUTC}function Lt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Gt(e,t){var n,s,i,r=e,o=null;return St(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:"number"==typeof e?(r={},t?r[t]=e:r.milliseconds=e):(o=Wi.exec(e))?(n="-"===o[1]?-1:1,r={y:0,d:p(o[Js])*n,h:p(o[Qs])*n,m:p(o[Xs])*n,s:p(o[Ks])*n,ms:p(Mt(1e3*o[ei]))*n}):(o=Ri.exec(e))?(n="-"===o[1]?-1:1,r={y:Vt(o[2],n),M:Vt(o[3],n),w:Vt(o[4],n),d:Vt(o[5],n),h:Vt(o[6],n),m:Vt(o[7],n),s:Vt(o[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=At(yt(r.from),yt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new vt(r),St(e)&&a(e,"_locale")&&(s._locale=e._locale),s}function Vt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function jt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function At(e,t){var n;return e.isValid()&&t.isValid()?(t=Yt(t,e),e.isBefore(t)?n=jt(e,t):((n=jt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Et(e,t){return function(n,s){var i,r;return null===s||isNaN(+s)||(M(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),r=n,n=s,s=r),n="string"==typeof n?+n:n,i=Gt(n,s),It(this,i,e),this}}function It(t,n,s,i){var r=n._milliseconds,a=Mt(n._days),o=Mt(n._months);t.isValid()&&(i=null==i||i,r&&t._d.setTime(t._d.valueOf()+r*s),a&&j(t,"Date",V(t,"Date")+a*s),o&&oe(t,V(t,"Month")+o*s),i&&e.updateOffset(t,a||o))}function Nt(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"}function zt(t,n){var s=t||yt(),i=Yt(s,this).startOf("day"),r=e.calendarFormat(this,i)||"sameElse",a=n&&(k(n[r])?n[r].call(this,s):n[r]);return this.format(a||this.localeData().calendar(r,this,yt(s)))}function Zt(){return new _(this)}function qt(e,t){var n=y(e)?e:yt(e);return!(!this.isValid()||!n.isValid())&&(t=C(f(t)?"millisecond":t),"millisecond"===t?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())}function $t(e,t){var n=y(e)?e:yt(e);return!(!this.isValid()||!n.isValid())&&(t=C(f(t)?"millisecond":t),"millisecond"===t?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())}function Bt(e,t,n,s){return s=s||"()",("("===s[0]?this.isAfter(e,n):!this.isBefore(e,n))&&(")"===s[1]?this.isBefore(t,n):!this.isAfter(t,n))}function Jt(e,t){var n,s=y(e)?e:yt(e);return!(!this.isValid()||!s.isValid())&&(t=C(t||"millisecond"),"millisecond"===t?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))}function Qt(e,t){return this.isSame(e,t)||this.isAfter(e,t)}function Xt(e,t){return this.isSame(e,t)||this.isBefore(e,t)}function Kt(e,t,n){var s,i,r,a;return this.isValid()&&(s=Yt(e,this)).isValid()?(i=6e4*(s.utcOffset()-this.utcOffset()),t=C(t),"year"===t||"month"===t||"quarter"===t?(a=en(this,s),"quarter"===t?a/=3:"year"===t&&(a/=12)):(r=this-s,a="second"===t?r/1e3:"minute"===t?r/6e4:"hour"===t?r/36e5:"day"===t?(r-i)/864e5:"week"===t?(r-i)/6048e5:r),n?a:g(a)):NaN}function en(e,t){var n,s=12*(t.year()-e.year())+(t.month()-e.month()),i=e.clone().add(s,"months");return n=t-i<0?(t-i)/(i-e.clone().add(s-1,"months")):(t-i)/(e.clone().add(s+1,"months")-i),-(s+n)||0}function tn(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function nn(){var e=this.clone().utc();return 0<e.year()&&e.year()<=9999?k(Date.prototype.toISOString)?this.toDate().toISOString():q(e,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):q(e,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function sn(t){t||(t=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var n=q(this,t);return this.localeData().postformat(n)}function rn(e,t){return this.isValid()&&(y(e)&&e.isValid()||yt(e).isValid())?Gt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function an(e){return this.from(yt(),e)}function on(e,t){return this.isValid()&&(y(e)&&e.isValid()||yt(e).isValid())?Gt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function un(e){return this.to(yt(),e)}function dn(e){var t;return void 0===e?this._locale._abbr:(null!=(t=Ke(e))&&(this._locale=t),this)}function ln(){return this._locale}function hn(e){switch(e=C(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this}function cn(e){return void 0===(e=C(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))}function fn(){return this._d.valueOf()-6e4*(this._offset||0)}function mn(){return Math.floor(this.valueOf()/1e3)}function _n(){return new Date(this.valueOf())}function yn(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function gn(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function pn(){return this.isValid()?this.toISOString():null}function wn(){return h(this)}function vn(){return o({},l(this))}function Sn(){return l(this).overflow}function Mn(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function kn(e,t){N(0,[e,e.length],0,t)}function Dn(e){return bn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Yn(e){return bn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)}function xn(){return Se(this.year(),1,4)}function On(){var e=this.localeData()._week;return Se(this.year(),e.dow,e.doy)}function bn(e,t,n,s,i){var r;return null==e?ve(this,s,i).year:(r=Se(e,s,i),t>r&&(t=r),Tn.call(this,e,t,n,s,i))}function Tn(e,t,n,s,i){var r=we(e,t,n,s,i),a=ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}function Pn(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}function Wn(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}function Rn(e,t){t[ei]=p(1e3*("0."+e))}function Un(){return this._isUTC?"UTC":""}function Cn(){return this._isUTC?"Coordinated Universal Time":""}function Fn(e){return yt(1e3*e)}function Hn(){return yt.apply(null,arguments).parseZone()}function Ln(e){return e}function Gn(e,t,n,s){var i=Ke(),r=u().set(s,t);return i[n](r,e)}function Vn(e,t,n){if("number"==typeof e&&(t=e,e=void 0),e=e||"",null!=t)return Gn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=Gn(e,s,n,"month");return i}function jn(e,t,n,s){"boolean"==typeof e?("number"==typeof t&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,"number"==typeof t&&(n=t,t=void 0),t=t||"");var i=Ke(),r=e?i._week.dow:0;if(null!=n)return Gn(t,(n+r)%7,s,"day");var a,o=[];for(a=0;a<7;a++)o[a]=Gn(t,(a+r)%7,s,"day");return o}function An(e,t){return Vn(e,t,"months")}function En(e,t){return Vn(e,t,"monthsShort")}function In(e,t,n){return jn(e,t,n,"weekdays")}function Nn(e,t,n){return jn(e,t,n,"weekdaysShort")}function zn(e,t,n){return jn(e,t,n,"weekdaysMin")}function Zn(){var e=this._data;return this._milliseconds=Ni(this._milliseconds),this._days=Ni(this._days),this._months=Ni(this._months),e.milliseconds=Ni(e.milliseconds),e.seconds=Ni(e.seconds),e.minutes=Ni(e.minutes),e.hours=Ni(e.hours),e.months=Ni(e.months),e.years=Ni(e.years),this}function qn(e,t,n,s){var i=Gt(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function $n(e,t){return qn(this,e,t,1)}function Bn(e,t){return qn(this,e,t,-1)}function Jn(e){return e<0?Math.floor(e):Math.ceil(e)}function Qn(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return r>=0&&a>=0&&o>=0||r<=0&&a<=0&&o<=0||(r+=864e5*Jn(Kn(o)+a),a=0,o=0),u.milliseconds=r%1e3,e=g(r/1e3),u.seconds=e%60,t=g(e/60),u.minutes=t%60,n=g(t/60),u.hours=n%24,a+=g(n/24),i=g(Xn(a)),o+=i,a-=Jn(Kn(i)),s=g(o/12),o%=12,u.days=a,u.months=o,u.years=s,this}function Xn(e){return 4800*e/146097}function Kn(e){return 146097*e/4800}function es(e){var t,n,s=this._milliseconds;if("month"===(e=C(e))||"year"===e)return t=this._days+s/864e5,n=this._months+Xn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(Kn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}}function ts(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*p(this._months/12)}function ns(e){return function(){return this.as(e)}}function ss(e){return e=C(e),this[e+"s"]()}function is(e){return function(){return this._data[e]}}function rs(){return g(this.days()/7)}function as(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}function os(e,t,n){var s=Gt(e).abs(),i=ar(s.as("s")),r=ar(s.as("m")),a=ar(s.as("h")),o=ar(s.as("d")),u=ar(s.as("M")),d=ar(s.as("y")),l=i<or.s&&["s",i]||r<=1&&["m"]||r<or.m&&["mm",r]||a<=1&&["h"]||a<or.h&&["hh",a]||o<=1&&["d"]||o<or.d&&["dd",o]||u<=1&&["M"]||u<or.M&&["MM",u]||d<=1&&["y"]||["yy",d];return l[2]=t,l[3]=+e>0,l[4]=n,as.apply(null,l)}function us(e){return void 0===e?ar:"function"==typeof e&&(ar=e,!0)}function ds(e,t){return void 0!==or[e]&&(void 0===t?or[e]:(or[e]=t,!0))}function ls(e){var t=this.localeData(),n=os(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)}function hs(){var e,t,n,s=ur(this._milliseconds)/1e3,i=ur(this._days),r=ur(this._months);t=g((e=g(s/60))/60),s%=60,e%=60;var a=n=g(r/12),o=r%=12,u=i,d=t,l=e,h=s,c=this.asSeconds();return c?(c<0?"-":"")+"P"+(a?a+"Y":"")+(o?o+"M":"")+(u?u+"D":"")+(d||l||h?"T":"")+(d?d+"H":"")+(l?l+"M":"")+(h?h+"S":""):"P0D"}var cs,fs;fs=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var ms=e.momentProperties=[],_s=!1,ys={};e.suppressDeprecationWarnings=!1,e.deprecationHandler=null;var gs;gs=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)a(e,t)&&n.push(t);return n};var ps,ws={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},vs={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Ss=/\d{1,2}/,Ms={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ks={},Ds={},Ys=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,xs=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Os={},bs={},Ts=/\d/,Ps=/\d\d/,Ws=/\d{3}/,Rs=/\d{4}/,Us=/[+-]?\d{6}/,Cs=/\d\d?/,Fs=/\d\d\d\d?/,Hs=/\d\d\d\d\d\d?/,Ls=/\d{1,3}/,Gs=/\d{1,4}/,Vs=/[+-]?\d{1,6}/,js=/\d+/,As=/[+-]?\d+/,Es=/Z|[+-]\d\d:?\d\d/gi,Is=/Z|[+-]\d\d(?::?\d\d)?/gi,Ns=/[+-]?\d+(\.\d{1,3})?/,zs=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Zs={},qs={},$s=0,Bs=1,Js=2,Qs=3,Xs=4,Ks=5,ei=6,ti=7,ni=8;ps=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},N("M",["MM",2],"Mo",function(){return this.month()+1}),N("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),N("MMMM",0,0,function(e){return this.localeData().months(this,e)}),U("month","M"),H("month",8),B("M",Cs),B("MM",Cs,Ps),B("MMM",function(e,t){return t.monthsShortRegex(e)}),B("MMMM",function(e,t){return t.monthsRegex(e)}),K(["M","MM"],function(e,t){t[Bs]=p(e)-1}),K(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[Bs]=i:l(n).invalidMonth=e});var si=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,ii="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ri="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ai=zs,oi=zs;N("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),N(0,["YY",2],0,function(){return this.year()%100}),N(0,["YYYY",4],0,"year"),N(0,["YYYYY",5],0,"year"),N(0,["YYYYYY",6,!0],0,"year"),U("year","y"),H("year",1),B("Y",As),B("YY",Cs,Ps),B("YYYY",Gs,Rs),B("YYYYY",Vs,Us),B("YYYYYY",Vs,Us),K(["YYYYY","YYYYYY"],$s),K("YYYY",function(t,n){n[$s]=2===t.length?e.parseTwoDigitYear(t):p(t)}),K("YY",function(t,n){n[$s]=e.parseTwoDigitYear(t)}),K("Y",function(e,t){t[$s]=parseInt(e,10)}),e.parseTwoDigitYear=function(e){return p(e)+(p(e)>68?1900:2e3)};var ui=G("FullYear",!0);N("w",["ww",2],"wo","week"),N("W",["WW",2],"Wo","isoWeek"),U("week","w"),U("isoWeek","W"),H("week",5),H("isoWeek",5),B("w",Cs),B("ww",Cs,Ps),B("W",Cs),B("WW",Cs,Ps),ee(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=p(e)});var di={dow:0,doy:6};N("d",0,"do","day"),N("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),N("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),N("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),N("e",0,0,"weekday"),N("E",0,0,"isoWeekday"),U("day","d"),U("weekday","e"),U("isoWeekday","E"),H("day",11),H("weekday",11),H("isoWeekday",11),B("d",Cs),B("e",Cs),B("E",Cs),B("dd",function(e,t){return t.weekdaysMinRegex(e)}),B("ddd",function(e,t){return t.weekdaysShortRegex(e)}),B("dddd",function(e,t){return t.weekdaysRegex(e)}),ee(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:l(n).invalidWeekday=e}),ee(["d","e","E"],function(e,t,n,s){t[s]=p(e)});var li="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),hi="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),ci="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),fi=zs,mi=zs,_i=zs;N("H",["HH",2],0,"hour"),N("h",["hh",2],0,Ae),N("k",["kk",2],0,Ee),N("hmm",0,0,function(){return""+Ae.apply(this)+I(this.minutes(),2)}),N("hmmss",0,0,function(){return""+Ae.apply(this)+I(this.minutes(),2)+I(this.seconds(),2)}),N("Hmm",0,0,function(){return""+this.hours()+I(this.minutes(),2)}),N("Hmmss",0,0,function(){return""+this.hours()+I(this.minutes(),2)+I(this.seconds(),2)}),Ie("a",!0),Ie("A",!1),U("hour","h"),H("hour",13),B("a",Ne),B("A",Ne),B("H",Cs),B("h",Cs),B("HH",Cs,Ps),B("hh",Cs,Ps),B("hmm",Fs),B("hmmss",Hs),B("Hmm",Fs),B("Hmmss",Hs),K(["H","HH"],Qs),K(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),K(["h","hh"],function(e,t,n){t[Qs]=p(e),l(n).bigHour=!0}),K("hmm",function(e,t,n){var s=e.length-2;t[Qs]=p(e.substr(0,s)),t[Xs]=p(e.substr(s)),l(n).bigHour=!0}),K("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Qs]=p(e.substr(0,s)),t[Xs]=p(e.substr(s,2)),t[Ks]=p(e.substr(i)),l(n).bigHour=!0}),K("Hmm",function(e,t,n){var s=e.length-2;t[Qs]=p(e.substr(0,s)),t[Xs]=p(e.substr(s))}),K("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[Qs]=p(e.substr(0,s)),t[Xs]=p(e.substr(s,2)),t[Ks]=p(e.substr(i))});var yi,gi=/[ap]\.?m?\.?/i,pi=G("Hours",!0),wi={calendar:ws,longDateFormat:vs,invalidDate:"Invalid date",ordinal:"%d",ordinalParse:Ss,relativeTime:Ms,months:ii,monthsShort:ri,week:di,weekdays:li,weekdaysMin:ci,weekdaysShort:hi,meridiemParse:gi},vi={},Si=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,Mi=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ki=/Z|[+-]\d\d(?::?\d\d)?/,Di=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Yi=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xi=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=S("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),e.ISO_8601=function(){};var Oi=S("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=yt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:c()}),bi=S("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=yt.apply(null,arguments);return this.isValid()&&e.isValid()?e>this?this:e:c()}),Ti=function(){return Date.now?Date.now():+new Date};kt("Z",":"),kt("ZZ",""),B("Z",Is),B("ZZ",Is),K(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Dt(Is,e)});var Pi=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var Wi=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ri=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Gt.fn=vt.prototype;var Ui=Et(1,"add"),Ci=Et(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",e.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Fi=S("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});N(0,["gg",2],0,function(){return this.weekYear()%100}),N(0,["GG",2],0,function(){return this.isoWeekYear()%100}),kn("gggg","weekYear"),kn("ggggg","weekYear"),kn("GGGG","isoWeekYear"),kn("GGGGG","isoWeekYear"),U("weekYear","gg"),U("isoWeekYear","GG"),H("weekYear",1),H("isoWeekYear",1),B("G",As),B("g",As),B("GG",Cs,Ps),B("gg",Cs,Ps),B("GGGG",Gs,Rs),B("gggg",Gs,Rs),B("GGGGG",Vs,Us),B("ggggg",Vs,Us),ee(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=p(e)}),ee(["gg","GG"],function(t,n,s,i){n[i]=e.parseTwoDigitYear(t)}),N("Q",0,"Qo","quarter"),U("quarter","Q"),H("quarter",7),B("Q",Ts),K("Q",function(e,t){t[Bs]=3*(p(e)-1)}),N("D",["DD",2],"Do","date"),U("date","D"),H("date",9),B("D",Cs),B("DD",Cs,Ps),B("Do",function(e,t){return e?t._ordinalParse:t._ordinalParseLenient}),K(["D","DD"],Js),K("Do",function(e,t){t[Js]=p(e.match(Cs)[0],10)});var Hi=G("Date",!0);N("DDD",["DDDD",3],"DDDo","dayOfYear"),U("dayOfYear","DDD"),H("dayOfYear",4),B("DDD",Ls),B("DDDD",Ws),K(["DDD","DDDD"],function(e,t,n){n._dayOfYear=p(e)}),N("m",["mm",2],0,"minute"),U("minute","m"),H("minute",14),B("m",Cs),B("mm",Cs,Ps),K(["m","mm"],Xs);var Li=G("Minutes",!1);N("s",["ss",2],0,"second"),U("second","s"),H("second",15),B("s",Cs),B("ss",Cs,Ps),K(["s","ss"],Ks);var Gi=G("Seconds",!1);N("S",0,0,function(){return~~(this.millisecond()/100)}),N(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),N(0,["SSS",3],0,"millisecond"),N(0,["SSSS",4],0,function(){return 10*this.millisecond()}),N(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),N(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),N(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),N(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),N(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),U("millisecond","ms"),H("millisecond",16),B("S",Ls,Ts),B("SS",Ls,Ps),B("SSS",Ls,Ws);var Vi;for(Vi="SSSS";Vi.length<=9;Vi+="S")B(Vi,js);for(Vi="S";Vi.length<=9;Vi+="S")K(Vi,Rn);var ji=G("Milliseconds",!1);N("z",0,0,"zoneAbbr"),N("zz",0,0,"zoneName");var Ai=_.prototype;Ai.add=Ui,Ai.calendar=zt,Ai.clone=Zt,Ai.diff=Kt,Ai.endOf=cn,Ai.format=sn,Ai.from=rn,Ai.fromNow=an,Ai.to=on,Ai.toNow=un,Ai.get=A,Ai.invalidAt=Sn,Ai.isAfter=qt,Ai.isBefore=$t,Ai.isBetween=Bt,Ai.isSame=Jt,Ai.isSameOrAfter=Qt,Ai.isSameOrBefore=Xt,Ai.isValid=wn,Ai.lang=Fi,Ai.locale=dn,Ai.localeData=ln,Ai.max=bi,Ai.min=Oi,Ai.parsingFlags=vn,Ai.set=E,Ai.startOf=hn,Ai.subtract=Ci,Ai.toArray=yn,Ai.toObject=gn,Ai.toDate=_n,Ai.toISOString=nn,Ai.toJSON=pn,Ai.toString=tn,Ai.unix=mn,Ai.valueOf=fn,Ai.creationData=Mn,Ai.year=ui,Ai.isLeapYear=_e,Ai.weekYear=Dn,Ai.isoWeekYear=Yn,Ai.quarter=Ai.quarters=Pn,Ai.month=ue,Ai.daysInMonth=de,Ai.week=Ai.weeks=Ye,Ai.isoWeek=Ai.isoWeeks=xe,Ai.weeksInYear=On,Ai.isoWeeksInYear=xn,Ai.date=Hi,Ai.day=Ai.days=Ce,Ai.weekday=Fe,Ai.isoWeekday=He,Ai.dayOfYear=Wn,Ai.hour=Ai.hours=pi,Ai.minute=Ai.minutes=Li,Ai.second=Ai.seconds=Gi,Ai.millisecond=Ai.milliseconds=ji,Ai.utcOffset=Ot,Ai.utc=Tt,Ai.local=Pt,Ai.parseZone=Wt,Ai.hasAlignedHourOffset=Rt,Ai.isDST=Ut,Ai.isLocal=Ft,Ai.isUtcOffset=Ht,Ai.isUtc=Lt,Ai.isUTC=Lt,Ai.zoneAbbr=Un,Ai.zoneName=Cn,Ai.dates=S("dates accessor is deprecated. Use date instead.",Hi),Ai.months=S("months accessor is deprecated. Use month instead",ue),Ai.years=S("years accessor is deprecated. Use year instead",ui),Ai.zone=S("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",bt),Ai.isDSTShifted=S("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Ct);var Ei=Ai,Ii=x.prototype;Ii.calendar=O,Ii.longDateFormat=b,Ii.invalidDate=T,Ii.ordinal=P,Ii.preparse=Ln,Ii.postformat=Ln,Ii.relativeTime=W,Ii.pastFuture=R,Ii.set=D,Ii.months=se,Ii.monthsShort=ie,Ii.monthsParse=ae,Ii.monthsRegex=he,Ii.monthsShortRegex=le,Ii.week=Me,Ii.firstDayOfYear=De,Ii.firstDayOfWeek=ke,Ii.weekdays=Te,Ii.weekdaysMin=We,Ii.weekdaysShort=Pe,Ii.weekdaysParse=Ue,Ii.weekdaysRegex=Le,Ii.weekdaysShortRegex=Ge,Ii.weekdaysMinRegex=Ve,Ii.isPM=ze,Ii.meridiem=Ze,Je("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===p(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),e.lang=S("moment.lang is deprecated. Use moment.locale instead.",Je),e.langData=S("moment.langData is deprecated. Use moment.localeData instead.",Ke);var Ni=Math.abs,zi=ns("ms"),Zi=ns("s"),qi=ns("m"),$i=ns("h"),Bi=ns("d"),Ji=ns("w"),Qi=ns("M"),Xi=ns("y"),Ki=is("milliseconds"),er=is("seconds"),tr=is("minutes"),nr=is("hours"),sr=is("days"),ir=is("months"),rr=is("years"),ar=Math.round,or={s:45,m:45,h:22,d:26,M:11},ur=Math.abs,dr=vt.prototype;return dr.abs=Zn,dr.add=$n,dr.subtract=Bn,dr.as=es,dr.asMilliseconds=zi,dr.asSeconds=Zi,dr.asMinutes=qi,dr.asHours=$i,dr.asDays=Bi,dr.asWeeks=Ji,dr.asMonths=Qi,dr.asYears=Xi,dr.valueOf=ts,dr._bubble=Qn,dr.get=ss,dr.milliseconds=Ki,dr.seconds=er,dr.minutes=tr,dr.hours=nr,dr.days=sr,dr.weeks=rs,dr.months=ir,dr.years=rr,dr.humanize=ls,dr.toISOString=hs,dr.toString=hs,dr.toJSON=hs,dr.locale=dn,dr.localeData=ln,dr.toIsoString=S("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",hs),dr.lang=Fi,N("X",0,0,"unix"),N("x",0,0,"valueOf"),B("x",As),B("X",Ns),K("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),K("x",function(e,t,n){n._d=new Date(p(e))}),e.version="2.15.1",function(e){cs=e}(yt),e.fn=Ei,e.min=pt,e.max=wt,e.now=Ti,e.utc=u,e.unix=Fn,e.months=An,e.isDate=i,e.locale=Je,e.invalid=c,e.duration=Gt,e.isMoment=y,e.weekdays=In,e.parseZone=Hn,e.localeData=Ke,e.isDuration=St,e.monthsShort=En,e.weekdaysMin=zn,e.defineLocale=Qe,e.updateLocale=Xe,e.locales=et,e.weekdaysShort=Nn,e.normalizeUnits=C,e.relativeTimeRounding=us,e.relativeTimeThreshold=ds,e.calendarFormat=Nt,e.prototype=Ei,e}); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-core/js/webcam.js b/wp-content/plugins/buddypress/bp-core/js/webcam.js index 16ff039c270c78175dfd3139ea9c981338510438..5f68e709539c94bc9d58fd3aeee72addc751c29a 100644 --- a/wp-content/plugins/buddypress/bp-core/js/webcam.js +++ b/wp-content/plugins/buddypress/bp-core/js/webcam.js @@ -83,20 +83,18 @@ window.bp = window.bp || {}; stream.onended = bp.WebCam.noStream(); - if ( video.mozSrcObject !== undefined ) { - video.mozSrcObject = stream; - video.play(); - } else if ( navigator.mozGetUserMedia ) { - video.src = stream; - video.play(); - } else if ( video.srcObject !== undefined ) { + // Older browsers may not have srcObject + if ( 'srcObject' in video ) { video.srcObject = stream; - } else if ( window.URL ) { - video.src = window.URL.createObjectURL( stream ); } else { - video.src = stream; + // Avoid using this in new browsers, as it is going away. + video.src = window.URL.createObjectURL( stream ); } + video.onloadedmetadata = function() { + video.play(); + }; + bp.WebCam.params.capture_enable = true; }, @@ -172,8 +170,16 @@ window.bp = window.bp || {}; initialize: function() { var params; - if ( navigator.getUserMedia || navigator.oGetUserMedia || navigator.mozGetUserMedia || navigator.webkitGetUserMedia || navigator.msGetUserMedia ) { + // Standardize getUserMedia browser call. + navigator.getUserMedia = ( + navigator.getUserMedia || + navigator.webkitGetUserMedia || + navigator.mozGetUserMedia || + navigator.msGetUserMedia || + navigator.oGetUserMedia + ); + if ( typeof navigator.getUserMedia !== 'undefined' ) { // We need to add some cropping stuff to use bp.Avatar.setAvatar() params = _.extend( _.pick( BP_Uploader.settings.defaults.multipart_params.bp_params, 'object', @@ -213,19 +219,24 @@ window.bp = window.bp || {}; // User Feedback bp.WebCam.displayWarning( 'requesting' ); - if ( navigator.getUserMedia ) { - navigator.getUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream ); - } else if ( navigator.oGetUserMedia ) { - navigator.oGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream ); - } else if ( navigator.mozGetUserMedia ) { - navigator.mozGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream ); - } else if ( navigator.webkitGetUserMedia ) { - navigator.webkitGetUserMedia( { video:true }, bp.WebCam.gotStream, bp.WebCam.noStream ); - } else if (navigator.msGetUserMedia) { - navigator.msGetUserMedia( { video:true, audio:false }, bp.WebCams.gotStream, bp.WebCam.noStream ); + // Use deprecated getUserMedia call for browsers that require it. + if ( typeof navigator.mediaDevices.getUserMedia === 'undefined' ) { + navigator.getUserMedia({ + audio: false, + video: true + }, bp.WebCam.gotStream, bp.WebCam.noStream); + + // Teh new hotness! } else { - // User Feedback - bp.WebCam.displayWarning( 'errormsg' ); + navigator.mediaDevices.getUserMedia({ + audio: false, + video: true + }).then(bp.WebCam.gotStream, bp.WebCam.noStream) + // ES3 compatibility. + ['catch'](function() { + // User Feedback + bp.WebCam.displayWarning( 'errormsg' ); + }); } }, diff --git a/wp-content/plugins/buddypress/bp-core/js/webcam.min.js b/wp-content/plugins/buddypress/bp-core/js/webcam.min.js index 3b20a86288c08f985e60ae328b1609f499f0a7b0..449efa59ac2c86bd36851768a8d3584c16ed3852 100644 --- a/wp-content/plugins/buddypress/bp-core/js/webcam.min.js +++ b/wp-content/plugins/buddypress/bp-core/js/webcam.min.js @@ -1 +1 @@ -window.bp=window.bp||{},bp,jQuery,"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.WebCam={start:function(){this.params={video:null,videoStream:null,capture_enable:!1,capture:null,canvas:null,warning:null,flipped:!1},bp.Avatar.nav.on("bp-avatar-view:changed",_.bind(this.setView,this))},setView:function(e){if("camera"===e){var a=new bp.Views.WebCamAvatar({model:new Backbone.Model({user_media:!1})});this.params.flipped=!1,bp.Avatar.views.add({id:"camera",view:a}),a.inject(".bp-avatar")}else _.isNull(this.params.video)||(this.stop(),this.removeWarning())},removeView:function(){var e;_.isUndefined(bp.Avatar.views.get("camera"))||((e=bp.Avatar.views.get("camera")).get("view").remove(),bp.Avatar.views.remove({id:"camera",view:e}))},gotStream:function(e){var a=bp.WebCam.params.video;bp.WebCam.params.videoStream=e,bp.WebCam.displayWarning("loaded"),a.onerror=function(){bp.WebCam.displayWarning("videoerror"),a&&bp.WebCam.stop()},e.onended=bp.WebCam.noStream(),void 0!==a.mozSrcObject?(a.mozSrcObject=e,a.play()):navigator.mozGetUserMedia?(a.src=e,a.play()):void 0!==a.srcObject?a.srcObject=e:window.URL?a.src=window.URL.createObjectURL(e):a.src=e,bp.WebCam.params.capture_enable=!0},stop:function(){bp.WebCam.params.capture_enable=!1,bp.WebCam.params.videoStream&&(bp.WebCam.params.videoStream.stop?bp.WebCam.params.videoStream.stop():bp.WebCam.params.videoStream.msStop&&bp.WebCam.params.videoStream.msStop(),bp.WebCam.params.videoStream.onended=null,bp.WebCam.params.videoStream=null),bp.WebCam.params.video&&(bp.WebCam.params.video.onerror=null,bp.WebCam.params.video.pause(),bp.WebCam.params.video.mozSrcObject&&(bp.WebCam.params.video.mozSrcObject=null),bp.WebCam.params.video.src="")},noStream:function(){_.isNull(bp.WebCam.params.videoStream)&&(bp.WebCam.displayWarning("noaccess"),bp.WebCam.removeView())},setAvatar:function(e){e.get("url")||bp.WebCam.displayWarning("nocapture"),bp.WebCam.removeView(),bp.Avatar.setAvatar(e)},removeWarning:function(){_.isNull(this.params.warning)||this.params.warning.remove()},displayWarning:function(e){this.removeWarning(),this.params.warning=new bp.Views.uploaderWarning({value:BP_Uploader.strings.camera_warnings[e]}),this.params.warning.inject(".bp-avatar-status")}},bp.Views.WebCamAvatar=bp.View.extend({tagName:"div",id:"bp-webcam-avatar",template:bp.template("bp-avatar-webcam"),events:{"click .avatar-webcam-capture":"captureStream","click .avatar-webcam-save":"saveCapture"},initialize:function(){var e;(navigator.getUserMedia||navigator.oGetUserMedia||navigator.mozGetUserMedia||navigator.webkitGetUserMedia||navigator.msGetUserMedia)&&(e=_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces"),{user_media:!0,w:BP_Uploader.settings.crop.full_w,h:BP_Uploader.settings.crop.full_h,x:0,y:0,type:"camera"}),this.model.set(e)),this.on("ready",this.useStream,this)},useStream:function(){this.model.get("user_media")&&(this.options.video=new bp.Views.WebCamVideo,this.options.canvas=new bp.Views.WebCamCanvas,this.$el.find("#avatar-to-crop").append(this.options.video.el),this.$el.find("#avatar-crop-pane").append(this.options.canvas.el),bp.WebCam.params.video=this.options.video.el,bp.WebCam.params.canvas=this.options.canvas.el,bp.WebCam.displayWarning("requesting"),navigator.getUserMedia?navigator.getUserMedia({video:!0},bp.WebCam.gotStream,bp.WebCam.noStream):navigator.oGetUserMedia?navigator.oGetUserMedia({video:!0},bp.WebCam.gotStream,bp.WebCam.noStream):navigator.mozGetUserMedia?navigator.mozGetUserMedia({video:!0},bp.WebCam.gotStream,bp.WebCam.noStream):navigator.webkitGetUserMedia?navigator.webkitGetUserMedia({video:!0},bp.WebCam.gotStream,bp.WebCam.noStream):navigator.msGetUserMedia?navigator.msGetUserMedia({video:!0,audio:!1},bp.WebCams.gotStream,bp.WebCam.noStream):bp.WebCam.displayWarning("errormsg"))},captureStream:function(e){var a,t;e.preventDefault(),bp.WebCam.params.capture_enable?this.model.get("h")>this.options.video.el.videoHeight||this.model.get("w")>this.options.video.el.videoWidth?bp.WebCam.displayWarning("videoerror"):(t=this.options.video.el.videoHeight,a=(this.options.video.el.videoWidth-t)/2,bp.WebCam.params.flipped||(this.options.canvas.el.getContext("2d").translate(this.model.get("w"),0),this.options.canvas.el.getContext("2d").scale(-1,1),bp.WebCam.params.flipped=!0),this.options.canvas.el.getContext("2d").drawImage(this.options.video.el,a,0,t,t,0,0,this.model.get("w"),this.model.get("h")),bp.WebCam.params.capture=this.options.canvas.el.toDataURL("image/png"),this.model.set("url",bp.WebCam.params.capture),bp.WebCam.displayWarning("ready")):bp.WebCam.displayWarning("loading")},saveCapture:function(e){e.preventDefault(),bp.WebCam.params.capture?(bp.WebCam.stop(),bp.WebCam.setAvatar(this.model)):bp.WebCam.displayWarning("nocapture")}}),bp.Views.WebCamVideo=bp.View.extend({tagName:"video",id:"bp-webcam-video",attributes:{autoplay:"autoplay"}}),bp.Views.WebCamCanvas=bp.View.extend({tagName:"canvas",id:"bp-webcam-canvas",attributes:{width:150,height:150},initialize:function(){_.isUndefined(BP_Uploader.settings.crop.full_h)||_.isUndefined(BP_Uploader.settings.crop.full_w)||(this.el.attributes.width.value=BP_Uploader.settings.crop.full_w,this.el.attributes.height.value=BP_Uploader.settings.crop.full_h)}}),bp.WebCam.start()); \ No newline at end of file +window.bp=window.bp||{},function(){"undefined"!=typeof BP_Uploader&&(bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.WebCam={start:function(){this.params={video:null,videoStream:null,capture_enable:!1,capture:null,canvas:null,warning:null,flipped:!1},bp.Avatar.nav.on("bp-avatar-view:changed",_.bind(this.setView,this))},setView:function(e){if("camera"===e){var a=new bp.Views.WebCamAvatar({model:new Backbone.Model({user_media:!1})});this.params.flipped=!1,bp.Avatar.views.add({id:"camera",view:a}),a.inject(".bp-avatar")}else _.isNull(this.params.video)||(this.stop(),this.removeWarning())},removeView:function(){var e;_.isUndefined(bp.Avatar.views.get("camera"))||((e=bp.Avatar.views.get("camera")).get("view").remove(),bp.Avatar.views.remove({id:"camera",view:e}))},gotStream:function(e){var a=bp.WebCam.params.video;bp.WebCam.params.videoStream=e,bp.WebCam.displayWarning("loaded"),a.onerror=function(){bp.WebCam.displayWarning("videoerror"),a&&bp.WebCam.stop()},e.onended=bp.WebCam.noStream(),"srcObject"in a?a.srcObject=e:a.src=window.URL.createObjectURL(e),a.onloadedmetadata=function(){a.play()},bp.WebCam.params.capture_enable=!0},stop:function(){bp.WebCam.params.capture_enable=!1,bp.WebCam.params.videoStream&&(bp.WebCam.params.videoStream.stop?bp.WebCam.params.videoStream.stop():bp.WebCam.params.videoStream.msStop&&bp.WebCam.params.videoStream.msStop(),bp.WebCam.params.videoStream.onended=null,bp.WebCam.params.videoStream=null),bp.WebCam.params.video&&(bp.WebCam.params.video.onerror=null,bp.WebCam.params.video.pause(),bp.WebCam.params.video.mozSrcObject&&(bp.WebCam.params.video.mozSrcObject=null),bp.WebCam.params.video.src="")},noStream:function(){_.isNull(bp.WebCam.params.videoStream)&&(bp.WebCam.displayWarning("noaccess"),bp.WebCam.removeView())},setAvatar:function(e){e.get("url")||bp.WebCam.displayWarning("nocapture"),bp.WebCam.removeView(),bp.Avatar.setAvatar(e)},removeWarning:function(){_.isNull(this.params.warning)||this.params.warning.remove()},displayWarning:function(e){this.removeWarning(),this.params.warning=new bp.Views.uploaderWarning({value:BP_Uploader.strings.camera_warnings[e]}),this.params.warning.inject(".bp-avatar-status")}},bp.Views.WebCamAvatar=bp.View.extend({tagName:"div",id:"bp-webcam-avatar",template:bp.template("bp-avatar-webcam"),events:{"click .avatar-webcam-capture":"captureStream","click .avatar-webcam-save":"saveCapture"},initialize:function(){var e;navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia||navigator.oGetUserMedia,void 0!==navigator.getUserMedia&&(e=_.extend(_.pick(BP_Uploader.settings.defaults.multipart_params.bp_params,"object","item_id","nonces"),{user_media:!0,w:BP_Uploader.settings.crop.full_w,h:BP_Uploader.settings.crop.full_h,x:0,y:0,type:"camera"}),this.model.set(e)),this.on("ready",this.useStream,this)},useStream:function(){this.model.get("user_media")&&(this.options.video=new bp.Views.WebCamVideo,this.options.canvas=new bp.Views.WebCamCanvas,this.$el.find("#avatar-to-crop").append(this.options.video.el),this.$el.find("#avatar-crop-pane").append(this.options.canvas.el),bp.WebCam.params.video=this.options.video.el,bp.WebCam.params.canvas=this.options.canvas.el,bp.WebCam.displayWarning("requesting"),void 0===navigator.mediaDevices.getUserMedia?navigator.getUserMedia({audio:!1,video:!0},bp.WebCam.gotStream,bp.WebCam.noStream):navigator.mediaDevices.getUserMedia({audio:!1,video:!0}).then(bp.WebCam.gotStream,bp.WebCam.noStream).catch(function(){bp.WebCam.displayWarning("errormsg")}))},captureStream:function(e){var a,t;e.preventDefault(),bp.WebCam.params.capture_enable?this.model.get("h")>this.options.video.el.videoHeight||this.model.get("w")>this.options.video.el.videoWidth?bp.WebCam.displayWarning("videoerror"):(t=this.options.video.el.videoHeight,a=(this.options.video.el.videoWidth-t)/2,bp.WebCam.params.flipped||(this.options.canvas.el.getContext("2d").translate(this.model.get("w"),0),this.options.canvas.el.getContext("2d").scale(-1,1),bp.WebCam.params.flipped=!0),this.options.canvas.el.getContext("2d").drawImage(this.options.video.el,a,0,t,t,0,0,this.model.get("w"),this.model.get("h")),bp.WebCam.params.capture=this.options.canvas.el.toDataURL("image/png"),this.model.set("url",bp.WebCam.params.capture),bp.WebCam.displayWarning("ready")):bp.WebCam.displayWarning("loading")},saveCapture:function(e){e.preventDefault(),bp.WebCam.params.capture?(bp.WebCam.stop(),bp.WebCam.setAvatar(this.model)):bp.WebCam.displayWarning("nocapture")}}),bp.Views.WebCamVideo=bp.View.extend({tagName:"video",id:"bp-webcam-video",attributes:{autoplay:"autoplay"}}),bp.Views.WebCamCanvas=bp.View.extend({tagName:"canvas",id:"bp-webcam-canvas",attributes:{width:150,height:150},initialize:function(){_.isUndefined(BP_Uploader.settings.crop.full_h)||_.isUndefined(BP_Uploader.settings.crop.full_w)||(this.el.attributes.width.value=BP_Uploader.settings.crop.full_w,this.el.attributes.height.value=BP_Uploader.settings.crop.full_h)}}),bp.WebCam.start())}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/actions/add-friend.php b/wp-content/plugins/buddypress/bp-friends/actions/add-friend.php new file mode 100644 index 0000000000000000000000000000000000000000..41fc4a79a4466b8b82215f2063ba9ae7418df4ad --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/actions/add-friend.php @@ -0,0 +1,48 @@ +<?php +/** + * Friends: Add action + * + * @package BuddyPress + * @subpackage FriendsActions + * @since 3.0.0 + */ + +/** + * Catch and process friendship requests. + * + * @since 1.0.1 + */ +function friends_action_add_friend() { + if ( !bp_is_friends_component() || !bp_is_current_action( 'add-friend' ) ) + return false; + + if ( !$potential_friend_id = (int)bp_action_variable( 0 ) ) + return false; + + if ( $potential_friend_id == bp_loggedin_user_id() ) + return false; + + $friendship_status = BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $potential_friend_id ); + + if ( 'not_friends' == $friendship_status ) { + + if ( !check_admin_referer( 'friends_add_friend' ) ) + return false; + + if ( !friends_add_friend( bp_loggedin_user_id(), $potential_friend_id ) ) { + bp_core_add_message( __( 'Friendship could not be requested.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Friendship requested', 'buddypress' ) ); + } + + } elseif ( 'is_friend' == $friendship_status ) { + bp_core_add_message( __( 'You are already friends with this user', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'You already have a pending friendship request with this user', 'buddypress' ), 'error' ); + } + + bp_core_redirect( wp_get_referer() ); + + return false; +} +add_action( 'bp_actions', 'friends_action_add_friend' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/actions/remove-friend.php b/wp-content/plugins/buddypress/bp-friends/actions/remove-friend.php new file mode 100644 index 0000000000000000000000000000000000000000..969c4425fbff72aacc86404b8f50aef9baf4a09e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/actions/remove-friend.php @@ -0,0 +1,48 @@ +<?php +/** + * Friends: Remove action + * + * @package BuddyPress + * @subpackage FriendsActions + * @since 3.0.0 + */ + +/** + * Catch and process Remove Friendship requests. + * + * @since 1.0.1 + */ +function friends_action_remove_friend() { + if ( !bp_is_friends_component() || !bp_is_current_action( 'remove-friend' ) ) + return false; + + if ( !$potential_friend_id = (int)bp_action_variable( 0 ) ) + return false; + + if ( $potential_friend_id == bp_loggedin_user_id() ) + return false; + + $friendship_status = BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $potential_friend_id ); + + if ( 'is_friend' == $friendship_status ) { + + if ( !check_admin_referer( 'friends_remove_friend' ) ) + return false; + + if ( !friends_remove_friend( bp_loggedin_user_id(), $potential_friend_id ) ) { + bp_core_add_message( __( 'Friendship could not be canceled.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Friendship canceled', 'buddypress' ) ); + } + + } elseif ( 'not_friends' == $friendship_status ) { + bp_core_add_message( __( 'You are not yet friends with this user', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'You have a pending friendship request with this user', 'buddypress' ), 'error' ); + } + + bp_core_redirect( wp_get_referer() ); + + return false; +} +add_action( 'bp_actions', 'friends_action_remove_friend' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php index 819f8179692139ac114e9c76ed38ef0673489251..728468198b51e76d24fc887c59e5179ac42c30a7 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-cache.php @@ -51,6 +51,12 @@ function bp_friends_clear_bp_friends_friendships_cache( $friendship_id, $initiat // Clear the friendship object cache. wp_cache_delete( $friendship_id, 'bp_friends_friendships' ); + + // Clear incremented cache. + $friendship = new stdClass; + $friendship->initiator_user_id = $initiator_user_id; + $friendship->friend_user_id = $friend_user_id; + bp_friends_delete_cached_friendships_on_friendship_save( $friendship ); } add_action( 'friends_friendship_requested', 'bp_friends_clear_bp_friends_friendships_cache', 10, 3 ); add_action( 'friends_friendship_accepted', 'bp_friends_clear_bp_friends_friendships_cache', 10, 3 ); @@ -71,6 +77,9 @@ function bp_friends_clear_bp_friends_friendships_cache_remove( $friendship_id, B // Clear the friendship object cache. wp_cache_delete( $friendship_id, 'bp_friends_friendships' ); + + // Clear incremented cache. + bp_friends_delete_cached_friendships_on_friendship_save( $friendship ); } add_action( 'friends_friendship_withdrawn', 'bp_friends_clear_bp_friends_friendships_cache_remove', 10, 2 ); add_action( 'friends_friendship_rejected', 'bp_friends_clear_bp_friends_friendships_cache_remove', 10, 2 ); @@ -119,6 +128,19 @@ function bp_friends_clear_request_cache_on_remove( $friendship_id, BP_Friends_Fr add_action( 'friends_friendship_withdrawn', 'bp_friends_clear_request_cache_on_remove', 10, 2 ); add_action( 'friends_friendship_rejected', 'bp_friends_clear_request_cache_on_remove', 10, 2 ); +/** + * Delete individual friendships from the cache when they are changed. + * + * @since 3.0.0 + * + * @param BP_Friends_Friendship $friendship Friendship object. + */ +function bp_friends_delete_cached_friendships_on_friendship_save( $friendship ) { + bp_core_delete_incremented_cache( $friendship->friend_user_id . ':' . $friendship->initiator_user_id, 'bp_friends' ); + bp_core_delete_incremented_cache( $friendship->initiator_user_id . ':' . $friendship->friend_user_id, 'bp_friends' ); +} +add_action( 'friends_friendship_after_save', 'bp_friends_delete_cached_friendships_on_friendship_save' ); + // List actions to clear super cached pages on, if super cache is installed. add_action( 'friends_friendship_rejected', 'bp_core_clear_cache' ); add_action( 'friends_friendship_accepted', 'bp_core_clear_cache' ); 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 9513b4760424cb0fdf41f20e3f29da5b08b16b3a..4af54c0478c7e39ccddd9dd25446c71db6897d13 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-filters.php @@ -34,6 +34,9 @@ function bp_friends_filter_user_query_populate_extras( BP_User_Query $user_query $maybe_friend_ids = wp_parse_id_list( $user_ids_sql ); + // Bulk prepare the friendship cache. + BP_Friends_Friendship::update_bp_friends_cache( $user_id, $maybe_friend_ids ); + foreach ( $maybe_friend_ids as $friend_id ) { $status = BP_Friends_Friendship::check_is_friend( $user_id, $friend_id ); $user_query->results[ $friend_id ]->friendship_status = $status; diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php index 058cfe639db48acf091cdf2f127eb4b4f00816b7..ae2efb744eb92160e9963d3773eb37e350a1eccc 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-functions.php @@ -788,7 +788,7 @@ function bp_friends_prime_mentions_results() { return; } - if ( friends_get_total_friend_count( get_current_user_id() ) > 150 ) { + if ( friends_get_total_friend_count( get_current_user_id() ) > 30 ) { return; } diff --git a/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php b/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php index b215dfb8626559ce7f805fc390465e4b0ff59b98..5962e9c9b111b83db1b341d11a4a3e0e340721b3 100644 --- a/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php +++ b/wp-content/plugins/buddypress/bp-friends/bp-friends-notifications.php @@ -230,3 +230,68 @@ function bp_friends_remove_notifications_data( $user_id = 0 ) { bp_notifications_delete_notifications_from_user( $user_id, buddypress()->friends->id, 'friendship_request' ); } add_action( 'friends_remove_data', 'bp_friends_remove_notifications_data', 10, 1 ); + +/** + * Add Friends-related settings to the Settings > Notifications page. + * + * @since 1.0.0 + */ +function friends_screen_notification_settings() { + + if ( !$send_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_request', true ) ) + $send_requests = 'yes'; + + if ( !$accept_requests = bp_get_user_meta( bp_displayed_user_id(), 'notification_friends_friendship_accepted', true ) ) + $accept_requests = 'yes'; ?> + + <table class="notification-settings" id="friends-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _ex( 'Friends', 'Friend settings on notification settings page', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="friends-notification-settings-request"> + <td></td> + <td><?php _ex( 'A member sends you a friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-yes" value="yes" <?php checked( $send_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-request-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_friends_friendship_request]" id="notification-friends-friendship-request-no" value="no" <?php checked( $send_requests, 'no', true ) ?>/><label for="notification-friends-friendship-request-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <tr id="friends-notification-settings-accepted"> + <td></td> + <td><?php _ex( 'A member accepts your friendship request', 'Friend settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-yes" value="yes" <?php checked( $accept_requests, 'yes', true ) ?>/><label for="notification-friends-friendship-accepted-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_friends_friendship_accepted]" id="notification-friends-friendship-accepted-no" value="no" <?php checked( $accept_requests, 'no', true ) ?>/><label for="notification-friends-friendship-accepted-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + + <?php + + /** + * Fires after the last table row on the friends notification screen. + * + * @since 1.0.0 + */ + do_action( 'friends_screen_notification_settings' ); ?> + + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'friends_screen_notification_settings' ); 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 98fa3471a0d99cd488b1a431b7deafb4d8e6edfd..90a244b752ba944ecb8294fa4028fc0dffb90836 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 @@ -47,16 +47,16 @@ class BP_Friends_Component extends BP_Component { public function includes( $includes = array() ) { $includes = array( 'cache', - 'actions', - 'screens', 'filters', - 'activity', 'template', 'functions', 'widgets', ); // Conditional includes. + if ( bp_is_active( 'activity' ) ) { + $includes[] = 'activity'; + } if ( bp_is_active( 'notifications' ) ) { $includes[] = 'notifications'; } @@ -64,6 +64,36 @@ class BP_Friends_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Friends. + if ( bp_is_user_friends() ) { + // Authenticated actions. + if ( is_user_logged_in() && + in_array( bp_current_action(), array( 'add-friend', 'remove-friend' ), true ) + ) { + require $this->path . 'bp-friends/actions/' . bp_current_action() . '.php'; + } + + // User nav. + require $this->path . 'bp-friends/screens/my-friends.php'; + if ( is_user_logged_in() && bp_is_user_friend_requests() ) { + require $this->path . 'bp-friends/screens/requests.php'; + } + } + } + /** * Set up bp-friends global settings. * diff --git a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-friendship.php b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-friendship.php index f683214e57f32afce56ca12376aac681ecf87360..761033541cc7c46ebc6e0de547fe2f01342ae27e 100644 --- a/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-friendship.php +++ b/wp-content/plugins/buddypress/bp-friends/classes/class-bp-friends-friendship.php @@ -603,28 +603,68 @@ class BP_Friends_Friendship { return 'not_friends'; } - /* - * Find friendships where the possible_friend_userid is the - * initiator or friend. - */ - $args = array( - 'initiator_user_id' => $possible_friend_userid, - 'friend_user_id' => $possible_friend_userid - ); - $result = self::get_friendships( $initiator_userid, $args, 'OR' ); + BP_Friends_Friendship::update_bp_friends_cache( $initiator_userid, $possible_friend_userid ); - if ( $result ) { - $friendship = current( $result ); - if ( ! $friendship->is_confirmed ) { - $status = $initiator_userid == $friendship->initiator_user_id ? 'pending' : 'awaiting_response'; + return bp_core_get_incremented_cache( $initiator_userid . ':' . $possible_friend_userid, 'bp_friends' ); + } + + + /** + * Find uncached friendships between a user and one or more other users and cache them. + * + * @since 3.0.0 + * + * @param int $user_id The ID of the primary user for whom we want + * to check friendships statuses. + * @param int|array|string $possible_friend_ids The IDs of the one or more users + * to check friendship status with primary user. + * @return null + */ + public static function update_bp_friends_cache( $user_id, $possible_friend_ids ) { + global $wpdb; + $bp = buddypress(); + $possible_friend_ids = wp_parse_id_list( $possible_friend_ids ); + + $fetch = array(); + foreach ( $possible_friend_ids as $friend_id ) { + // Check for cached items in both friendship directions. + if ( false === bp_core_get_incremented_cache( $user_id . ':' . $friend_id, 'bp_friends' ) + || false === bp_core_get_incremented_cache( $friend_id . ':' . $user_id, 'bp_friends' ) ) { + $fetch[] = $friend_id; + } + } + if ( empty( $fetch ) ) { + return; + } + + $friend_ids_sql = implode( ',', array_unique( $fetch ) ); + $sql = $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ({$friend_ids_sql}) ) OR (initiator_user_id IN ({$friend_ids_sql}) AND friend_user_id = %d )", $user_id, $user_id ); + $friendships = $wpdb->get_results( $sql ); + + // Use $handled to keep track of all of the $possible_friend_ids we've matched. + $handled = array(); + foreach ( $friendships as $friendship ) { + $initiator_user_id = (int) $friendship->initiator_user_id; + $friend_user_id = (int) $friendship->friend_user_id; + if ( 1 === (int) $friendship->is_confirmed ) { + $status_initiator = $status_friend = 'is_friend'; } else { - $status = 'is_friend'; + $status_initiator = 'pending'; + $status_friend = 'awaiting_response'; } - } else { - $status = 'not_friends'; + bp_core_set_incremented_cache( $initiator_user_id . ':' . $friend_user_id, 'bp_friends', $status_initiator ); + bp_core_set_incremented_cache( $friend_user_id . ':' . $initiator_user_id, 'bp_friends', $status_friend ); + + $handled[] = ( $initiator_user_id === $user_id ) ? $friend_user_id : $initiator_user_id; } - return $status; + // Set all those with no matching entry to "not friends" status. + $not_friends = array_diff( $fetch, $handled ); + + foreach ( $not_friends as $not_friend_id ) { + bp_core_set_incremented_cache( $user_id . ':' . $not_friend_id, 'bp_friends', 'not_friends' ); + bp_core_set_incremented_cache( $not_friend_id . ':' . $user_id, 'bp_friends', 'not_friends' ); + } } /** diff --git a/wp-content/plugins/buddypress/bp-friends/screens/my-friends.php b/wp-content/plugins/buddypress/bp-friends/screens/my-friends.php new file mode 100644 index 0000000000000000000000000000000000000000..5613758aeb27684151de05d2fb71e0b213351dcb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/screens/my-friends.php @@ -0,0 +1,32 @@ +<?php +/** + * Friends: User's "Friends" screen handler + * + * @package BuddyPress + * @subpackage FriendsScreens + * @since 3.0.0 + */ + +/** + * Catch and process the My Friends page. + * + * @since 1.0.0 + */ +function friends_screen_my_friends() { + + /** + * Fires before the loading of template for the My Friends page. + * + * @since 1.0.0 + */ + do_action( 'friends_screen_my_friends' ); + + /** + * Filters the template used to display the My Friends page. + * + * @since 1.0.0 + * + * @param string $template Path to the my friends template to load. + */ + bp_core_load_template( apply_filters( 'friends_template_my_friends', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-friends/screens/requests.php b/wp-content/plugins/buddypress/bp-friends/screens/requests.php new file mode 100644 index 0000000000000000000000000000000000000000..39c8214f12560915183e93fd71c3771df2c628e6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-friends/screens/requests.php @@ -0,0 +1,65 @@ +<?php +/** + * Friends: User's "Friends > Requests" screen handler + * + * @package BuddyPress + * @subpackage FriendsScreens + * @since 3.0.0 + */ + +/** + * Catch and process the Requests page. + * + * @since 1.0.0 + */ +function friends_screen_requests() { + if ( bp_is_action_variable( 'accept', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) { + // Check the nonce. + check_admin_referer( 'friends_accept_friendship' ); + + if ( friends_accept_friendship( bp_action_variable( 1 ) ) ) + bp_core_add_message( __( 'Friendship accepted', 'buddypress' ) ); + else + bp_core_add_message( __( 'Friendship could not be accepted', 'buddypress' ), 'error' ); + + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) ); + + } elseif ( bp_is_action_variable( 'reject', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) { + // Check the nonce. + check_admin_referer( 'friends_reject_friendship' ); + + if ( friends_reject_friendship( bp_action_variable( 1 ) ) ) + bp_core_add_message( __( 'Friendship rejected', 'buddypress' ) ); + else + bp_core_add_message( __( 'Friendship could not be rejected', 'buddypress' ), 'error' ); + + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) ); + + } elseif ( bp_is_action_variable( 'cancel', 0 ) && is_numeric( bp_action_variable( 1 ) ) ) { + // Check the nonce. + check_admin_referer( 'friends_withdraw_friendship' ); + + if ( friends_withdraw_friendship( bp_loggedin_user_id(), bp_action_variable( 1 ) ) ) + bp_core_add_message( __( 'Friendship request withdrawn', 'buddypress' ) ); + else + bp_core_add_message( __( 'Friendship request could not be withdrawn', 'buddypress' ), 'error' ); + + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_current_component() . '/' . bp_current_action() ) ); + } + + /** + * Fires before the loading of template for the friends requests page. + * + * @since 1.0.0 + */ + do_action( 'friends_screen_requests' ); + + /** + * Filters the template used to display the My Friends page. + * + * @since 1.0.0 + * + * @param string $template Path to the friends request template to load. + */ + bp_core_load_template( apply_filters( 'friends_template_requests', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/actions/access.php b/wp-content/plugins/buddypress/bp-groups/actions/access.php new file mode 100644 index 0000000000000000000000000000000000000000..0c4c25d745cd42385a0aa9f8abb49f6c61d6a118 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/access.php @@ -0,0 +1,86 @@ +<?php +/** + * Groups: Access protection action handler + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Protect access to single groups. + * + * @since 2.1.0 + */ +function bp_groups_group_access_protection() { + if ( ! bp_is_group() ) { + return; + } + + $current_group = groups_get_current_group(); + $user_has_access = $current_group->user_has_access; + $is_visible = $current_group->is_visible; + $no_access_args = array(); + + // The user can know about the group but doesn't have full access. + if ( ! $user_has_access && $is_visible ) { + // Always allow access to home and request-membership. + if ( bp_is_current_action( 'home' ) || bp_is_current_action( 'request-membership' ) ) { + $user_has_access = true; + + // User doesn't have access, so set up redirect args. + } elseif ( is_user_logged_in() ) { + $no_access_args = array( + 'message' => __( 'You do not have access to this group.', 'buddypress' ), + 'root' => bp_get_group_permalink( $current_group ) . 'home/', + 'redirect' => false + ); + } + } + + // Protect the admin tab from non-admins. + if ( bp_is_current_action( 'admin' ) && ! bp_is_item_admin() ) { + $user_has_access = false; + $no_access_args = array( + 'message' => __( 'You are not an admin of this group.', 'buddypress' ), + 'root' => bp_get_group_permalink( $current_group ), + 'redirect' => false + ); + } + + /** + * Allow plugins to filter whether the current user has access to this group content. + * + * Note that if a plugin sets $user_has_access to false, it may also + * want to change the $no_access_args, to avoid problems such as + * logged-in users being redirected to wp-login.php. + * + * @since 2.1.0 + * + * @param bool $user_has_access True if the user has access to the + * content, otherwise false. + * @param array $no_access_args Arguments to be passed to bp_core_no_access() in case + * of no access. Note that this value is passed by reference, + * so it can be modified by the filter callback. + */ + $user_has_access = apply_filters_ref_array( 'bp_group_user_has_access', array( $user_has_access, &$no_access_args ) ); + + // If user has access, we return rather than redirect. + if ( $user_has_access ) { + return; + } + + // Groups that the user cannot know about should return a 404 for non-members. + // Unset the current group so that you're not redirected + // to the default group tab. + if ( ! $is_visible ) { + buddypress()->groups->current_group = 0; + buddypress()->is_single_item = false; + bp_do_404(); + return; + } else { + bp_core_no_access( $no_access_args ); + } + +} +add_action( 'bp_actions', 'bp_groups_group_access_protection' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/actions/create.php b/wp-content/plugins/buddypress/bp-groups/actions/create.php new file mode 100644 index 0000000000000000000000000000000000000000..fa196caa716268ff0ee41760f18ed413c0e192b9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/create.php @@ -0,0 +1,340 @@ +<?php +/** + * Groups: Create action + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Catch and process group creation form submissions. + * + * @since 1.2.0 + * + * @return bool + */ +function groups_action_create_group() { + + // If we're not at domain.org/groups/create/ then return false. + if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) ) + return false; + + if ( !is_user_logged_in() ) + return false; + + if ( !bp_user_can_create_groups() ) { + bp_core_add_message( __( 'Sorry, you are not allowed to create groups.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_groups_directory_permalink() ); + } + + $bp = buddypress(); + + // Make sure creation steps are in the right order. + groups_action_sort_creation_steps(); + + // If no current step is set, reset everything so we can start a fresh group creation. + $bp->groups->current_create_step = bp_action_variable( 1 ); + if ( !bp_get_groups_current_create_step() ) { + unset( $bp->groups->current_create_step ); + unset( $bp->groups->completed_create_steps ); + + setcookie( 'bp_new_group_id', false, time() - 1000, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + setcookie( 'bp_completed_create_steps', false, time() - 1000, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + + $reset_steps = true; + $keys = array_keys( $bp->groups->group_creation_steps ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . array_shift( $keys ) ) ); + } + + // If this is a creation step that is not recognized, just redirect them back to the first screen. + if ( bp_get_groups_current_create_step() && empty( $bp->groups->group_creation_steps[bp_get_groups_current_create_step()] ) ) { + bp_core_add_message( __('There was an error saving group details. Please try again.', 'buddypress'), 'error' ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create' ) ); + } + + // Fetch the currently completed steps variable. + if ( isset( $_COOKIE['bp_completed_create_steps'] ) && !isset( $reset_steps ) ) + $bp->groups->completed_create_steps = json_decode( base64_decode( stripslashes( $_COOKIE['bp_completed_create_steps'] ) ) ); + + // Set the ID of the new group, if it has already been created in a previous step. + if ( bp_get_new_group_id() ) { + $bp->groups->current_group = groups_get_group( $bp->groups->new_group_id ); + + // Only allow the group creator to continue to edit the new group. + if ( ! bp_is_group_creator( $bp->groups->current_group, bp_loggedin_user_id() ) ) { + bp_core_add_message( __( 'Only the group creator may continue editing this group.', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create' ) ); + } + } + + // If the save, upload or skip button is hit, lets calculate what we need to save. + if ( isset( $_POST['save'] ) ) { + + // Check the nonce. + check_admin_referer( 'groups_create_save_' . bp_get_groups_current_create_step() ); + + if ( 'group-details' == bp_get_groups_current_create_step() ) { + if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) || !strlen( trim( $_POST['group-name'] ) ) || !strlen( trim( $_POST['group-desc'] ) ) ) { + bp_core_add_message( __( 'Please fill in all of the required fields', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . bp_get_groups_current_create_step() ) ); + } + + $new_group_id = isset( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : 0; + + if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $new_group_id, 'name' => $_POST['group-name'], 'description' => $_POST['group-desc'], 'slug' => groups_check_slug( sanitize_title( esc_attr( $_POST['group-name'] ) ) ), 'date_created' => bp_core_current_time(), 'status' => 'public' ) ) ) { + bp_core_add_message( __( 'There was an error saving group details. Please try again.', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . bp_get_groups_current_create_step() ) ); + } + } + + if ( 'group-settings' == bp_get_groups_current_create_step() ) { + $group_status = 'public'; + $group_enable_forum = 1; + + if ( !isset($_POST['group-show-forum']) ) { + $group_enable_forum = 0; + } + + if ( 'private' == $_POST['group-status'] ) + $group_status = 'private'; + elseif ( 'hidden' == $_POST['group-status'] ) + $group_status = 'hidden'; + + if ( !$bp->groups->new_group_id = groups_create_group( array( 'group_id' => $bp->groups->new_group_id, 'status' => $group_status, 'enable_forum' => $group_enable_forum ) ) ) { + bp_core_add_message( __( 'There was an error saving group details. Please try again.', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . bp_get_groups_current_create_step() ) ); + } + + // Save group types. + if ( ! empty( $_POST['group-types'] ) ) { + bp_groups_set_group_type( $bp->groups->new_group_id, $_POST['group-types'] ); + } + + /** + * Filters the allowed invite statuses. + * + * @since 1.5.0 + * + * @param array $value Array of statuses allowed. + * Possible values are 'members, + * 'mods', and 'admins'. + */ + $allowed_invite_status = apply_filters( 'groups_allowed_invite_status', array( 'members', 'mods', 'admins' ) ); + $invite_status = !empty( $_POST['group-invite-status'] ) && in_array( $_POST['group-invite-status'], (array) $allowed_invite_status ) ? $_POST['group-invite-status'] : 'members'; + + groups_update_groupmeta( $bp->groups->new_group_id, 'invite_status', $invite_status ); + } + + if ( 'group-invites' === bp_get_groups_current_create_step() ) { + if ( ! empty( $_POST['friends'] ) ) { + foreach ( (array) $_POST['friends'] as $friend ) { + groups_invite_user( array( + 'user_id' => (int) $friend, + 'group_id' => $bp->groups->new_group_id, + ) ); + } + } + + groups_send_invites( bp_loggedin_user_id(), $bp->groups->new_group_id ); + } + + /** + * Fires before finalization of group creation and cookies are set. + * + * This hook is a variable hook dependent on the current step + * in the creation process. + * + * @since 1.1.0 + */ + do_action( 'groups_create_group_step_save_' . bp_get_groups_current_create_step() ); + + /** + * Fires after the group creation step is completed. + * + * Mostly for clearing cache on a generic action name. + * + * @since 1.1.0 + */ + do_action( 'groups_create_group_step_complete' ); + + /** + * Once we have successfully saved the details for this step of the creation process + * we need to add the current step to the array of completed steps, then update the cookies + * holding the information + */ + $completed_create_steps = isset( $bp->groups->completed_create_steps ) ? $bp->groups->completed_create_steps : array(); + if ( !in_array( bp_get_groups_current_create_step(), $completed_create_steps ) ) + $bp->groups->completed_create_steps[] = bp_get_groups_current_create_step(); + + // Reset cookie info. + setcookie( 'bp_new_group_id', $bp->groups->new_group_id, time()+60*60*24, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + setcookie( 'bp_completed_create_steps', base64_encode( json_encode( $bp->groups->completed_create_steps ) ), time()+60*60*24, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + + // If we have completed all steps and hit done on the final step we + // can redirect to the completed group. + $keys = array_keys( $bp->groups->group_creation_steps ); + if ( count( $bp->groups->completed_create_steps ) == count( $keys ) && bp_get_groups_current_create_step() == array_pop( $keys ) ) { + unset( $bp->groups->current_create_step ); + unset( $bp->groups->completed_create_steps ); + + setcookie( 'bp_new_group_id', false, time() - 3600, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + setcookie( 'bp_completed_create_steps', false, time() - 3600, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + + // Once we completed all steps, record the group creation in the activity stream. + if ( bp_is_active( 'activity' ) ) { + groups_record_activity( array( + 'type' => 'created_group', + 'item_id' => $bp->groups->new_group_id + ) ); + } + + /** + * Fires after the group has been successfully created. + * + * @since 1.1.0 + * + * @param int $new_group_id ID of the newly created group. + */ + do_action( 'groups_group_create_complete', $bp->groups->new_group_id ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } else { + /** + * Since we don't know what the next step is going to be (any plugin can insert steps) + * we need to loop the step array and fetch the next step that way. + */ + foreach ( $keys as $key ) { + if ( $key == bp_get_groups_current_create_step() ) { + $next = 1; + continue; + } + + if ( isset( $next ) ) { + $next_step = $key; + break; + } + } + + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/' . $next_step ) ); + } + } + + // Remove invitations. + if ( 'group-invites' === bp_get_groups_current_create_step() && ! empty( $_REQUEST['user_id'] ) && is_numeric( $_REQUEST['user_id'] ) ) { + if ( ! check_admin_referer( 'groups_invite_uninvite_user' ) ) { + return false; + } + + $message = __( 'Invite successfully removed', 'buddypress' ); + $error = false; + + if( ! groups_uninvite_user( (int) $_REQUEST['user_id'], $bp->groups->new_group_id ) ) { + $message = __( 'There was an error removing the invite', 'buddypress' ); + $error = 'error'; + } + + bp_core_add_message( $message, $error ); + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . 'create/step/group-invites' ) ); + } + + // Group avatar is handled separately. + if ( 'group-avatar' == bp_get_groups_current_create_step() && isset( $_POST['upload'] ) ) { + if ( ! isset( $bp->avatar_admin ) ) { + $bp->avatar_admin = new stdClass(); + } + + if ( !empty( $_FILES ) && isset( $_POST['upload'] ) ) { + // Normally we would check a nonce here, but the group save nonce is used instead. + // Pass the file to the avatar upload handler. + if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping. + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + } + + // If the image cropping is done, crop the image and save a full/thumb version. + if ( isset( $_POST['avatar-crop-submit'] ) && isset( $_POST['upload'] ) ) { + + // Normally we would check a nonce here, but the group save nonce is used instead. + $args = array( + 'object' => 'group', + 'avatar_dir' => 'group-avatars', + 'item_id' => $bp->groups->current_group->id, + 'original_file' => $_POST['image_src'], + 'crop_x' => $_POST['x'], + 'crop_y' => $_POST['y'], + 'crop_w' => $_POST['w'], + 'crop_h' => $_POST['h'] + ); + + if ( ! bp_core_avatar_handle_crop( $args ) ) { + bp_core_add_message( __( 'There was an error saving the group profile photo, please try uploading again.', 'buddypress' ), 'error' ); + } else { + /** + * Fires after a group avatar is uploaded. + * + * @since 2.8.0 + * + * @param int $group_id ID of the group. + * @param string $type Avatar type. 'crop' or 'full'. + * @param array $args Array of parameters passed to the avatar handler. + */ + do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args ); + + bp_core_add_message( __( 'The group profile photo was uploaded successfully.', 'buddypress' ) ); + } + } + } + + /** + * Filters the template to load for the group creation screen. + * + * @since 1.0.0 + * + * @param string $value Path to the group creation template to load. + */ + bp_core_load_template( apply_filters( 'groups_template_create_group', 'groups/create' ) ); +} +add_action( 'bp_actions', 'groups_action_create_group' ); + +/** + * Sort the group creation steps. + * + * @since 1.1.0 + * + * @return false|null False on failure. + */ +function groups_action_sort_creation_steps() { + + if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) ) + return false; + + $bp = buddypress(); + + if ( !is_array( $bp->groups->group_creation_steps ) ) + return false; + + foreach ( (array) $bp->groups->group_creation_steps as $slug => $step ) { + while ( !empty( $temp[$step['position']] ) ) + $step['position']++; + + $temp[$step['position']] = array( 'name' => $step['name'], 'slug' => $slug ); + } + + // Sort the steps by their position key. + ksort($temp); + unset($bp->groups->group_creation_steps); + + foreach( (array) $temp as $position => $step ) + $bp->groups->group_creation_steps[$step['slug']] = array( 'name' => $step['name'], 'position' => $position ); + + /** + * Fires after group creation sets have been sorted. + * + * @since 2.3.0 + */ + do_action( 'groups_action_sort_creation_steps' ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/actions/feed.php b/wp-content/plugins/buddypress/bp-groups/actions/feed.php new file mode 100644 index 0000000000000000000000000000000000000000..f9ca7631f3578f0ee1f94b6743bd176495e23ffd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/feed.php @@ -0,0 +1,47 @@ +<?php +/** + * Groups: RSS feed action + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Load the activity feed for the current group. + * + * @since 1.2.0 + * + * @return false|null False on failure. + */ +function groups_action_group_feed() { + + // Get current group. + $group = groups_get_current_group(); + + if ( ! bp_is_active( 'activity' ) || ! bp_is_groups_component() || ! $group || ! bp_is_current_action( 'feed' ) ) + return false; + + // If group isn't public or if logged-in user is not a member of the group, do + // not output the group activity feed. + if ( ! bp_group_is_visible( $group ) ) { + return false; + } + + // Set up the feed. + buddypress()->activity->feed = new BP_Activity_Feed( array( + 'id' => 'group', + + /* translators: Group activity RSS title - "[Site Name] | [Group Name] | Activity" */ + 'title' => sprintf( __( '%1$s | %2$s | Activity', 'buddypress' ), bp_get_site_name(), bp_get_current_group_name() ), + + 'link' => bp_get_group_permalink( $group ), + 'description' => sprintf( __( "Activity feed for the group, %s.", 'buddypress' ), bp_get_current_group_name() ), + 'activity_args' => array( + 'object' => buddypress()->groups->id, + 'primary_id' => bp_get_current_group_id(), + 'display_comments' => 'threaded' + ) + ) ); +} +add_action( 'bp_actions', 'groups_action_group_feed' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/actions/join.php b/wp-content/plugins/buddypress/bp-groups/actions/join.php new file mode 100644 index 0000000000000000000000000000000000000000..4e19c3fb9fbc9e1e9798c43cf49cc8f693a8bf4d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/join.php @@ -0,0 +1,57 @@ +<?php +/** + * Groups: Join action + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Catch and process "Join Group" button clicks. + * + * @since 1.0.0 + * + * @return bool + */ +function groups_action_join_group() { + + if ( !bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action( 'join' ) ) + return false; + + // Nonce check. + if ( !check_admin_referer( 'groups_join_group' ) ) + return false; + + $bp = buddypress(); + + // Skip if banned or already a member. + if ( !groups_is_user_member( bp_loggedin_user_id(), $bp->groups->current_group->id ) && !groups_is_user_banned( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { + + // User wants to join a group that requires an invitation to join. + if ( ! bp_current_user_can( 'groups_join_group', array( 'group_id' => $bp->groups->current_group->id ) ) ) { + if ( !groups_check_user_has_invite( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + } + + // User wants to join any group. + if ( !groups_join_group( $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error joining the group.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'You joined the group!', 'buddypress' ) ); + + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + + /** + * Filters the template to load for the single group screen. + * + * @since 1.0.0 + * + * @param string $value Path to the single group template to load. + */ + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_actions', 'groups_action_join_group' ); diff --git a/wp-content/plugins/buddypress/bp-groups/actions/leave-group.php b/wp-content/plugins/buddypress/bp-groups/actions/leave-group.php new file mode 100644 index 0000000000000000000000000000000000000000..860e9fc1dd066820a4da1c39269230d91dc5454a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/leave-group.php @@ -0,0 +1,61 @@ +<?php +/** + * Groups: Leave action + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Catch and process "Leave Group" button clicks. + * + * When a group member clicks on the "Leave Group" button from a group's page, + * this function is run. + * + * Note: When leaving a group from the group directory, AJAX is used and + * another function handles this. See {@link bp_legacy_theme_ajax_joinleave_group()}. + * + * @since 1.2.4 + * + * @return bool + */ +function groups_action_leave_group() { + if ( ! bp_is_single_item() || ! bp_is_groups_component() || ! bp_is_current_action( 'leave-group' ) ) { + return false; + } + + // Nonce check. + if ( ! check_admin_referer( 'groups_leave_group' ) ) { + return false; + } + + // User wants to leave any group. + if ( groups_is_user_member( bp_loggedin_user_id(), bp_get_current_group_id() ) ) { + $bp = buddypress(); + + // Stop sole admins from abandoning their group. + $group_admins = groups_get_group_admins( bp_get_current_group_id() ); + + if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == bp_loggedin_user_id() ) { + bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' ); + } elseif ( ! groups_leave_group( $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error leaving the group.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'You successfully left the group.', 'buddypress' ) ); + } + + $group = groups_get_current_group(); + $redirect = bp_get_group_permalink( $group ); + + if ( ! $group->is_visible ) { + $redirect = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ); + } + + bp_core_redirect( $redirect ); + } + + /** This filter is documented in bp-groups/bp-groups-actions.php */ + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_actions', 'groups_action_leave_group' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/actions/random.php b/wp-content/plugins/buddypress/bp-groups/actions/random.php new file mode 100644 index 0000000000000000000000000000000000000000..402203b74fcd80924dd50f269d3c489f4e8f2323 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/actions/random.php @@ -0,0 +1,23 @@ +<?php +/** + * Groups: Random group action handler + * + * @package BuddyPress + * @subpackage GroupActions + * @since 3.0.0 + */ + +/** + * Catch requests for a random group page (example.com/groups/?random-group) and redirect. + * + * @since 1.2.0 + */ +function groups_action_redirect_to_random_group() { + + if ( bp_is_groups_component() && isset( $_GET['random-group'] ) ) { + $group = BP_Groups_Group::get_random( 1, 1 ); + + bp_core_redirect( trailingslashit( bp_get_groups_directory_permalink() . $group['groups'][0]->slug ) ); + } +} +add_action( 'bp_actions', 'groups_action_redirect_to_random_group' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/admin/js/admin.min.js b/wp-content/plugins/buddypress/bp-groups/admin/js/admin.min.js index 5c953e16a239e72b3bfbe8b802a6362b423b8af0..1c2b69db760856238e47c504be625a523043fb19 100644 --- a/wp-content/plugins/buddypress/bp-groups/admin/js/admin.min.js +++ b/wp-content/plugins/buddypress/bp-groups/admin/js/admin.min.js @@ -1 +1 @@ -!function(e){function n(n,o){e("#bp-groups-new-members-list").append('<li data-login="'+o.item.value+'"><a href="#" class="bp-groups-remove-new-member">x</a> '+o.item.label+"</li>")}var o="undefined"!=typeof group_id?"&group_id="+group_id:"";e(document).ready(function(){window.warn_on_leave=!1,e(".bp-suggest-user").autocomplete({source:ajaxurl+"?action=bp_group_admin_member_autocomplete"+o,delay:500,minLength:2,position:"undefined"!=typeof isRtl&&isRtl?{my:"right top",at:"right bottom",offset:"0, -1"}:{offset:"0, -1"},open:function(){e(this).addClass("open")},close:function(){e(this).removeClass("open"),e(this).val("")},select:function(e,o){n(0,o)}}),e("#bp-groups-new-members").prop("placeholder",BP_Group_Admin.add_member_placeholder),e("#bp_group_add_members").on("click",".bp-groups-remove-new-member",function(n){n.preventDefault(),e(n.target.parentNode).remove()}),e(document).on("change",'input#bp-groups-name, input#bp-groups-description, select.bp-groups-role, #bp-groups-settings-section-status input[type="radio"]',function(){window.warn_on_leave=!0}),e("input#save").on("click",function(){var n=[];e("#bp-groups-new-members-list li").each(function(){n.push(e(this).data("login"))}),n.length&&e("#bp-groups-new-members").val("").val(n.join(", ")),window.warn_on_leave=!1}),window.onbeforeunload=function(){if(window.warn_on_leave)return BP_Group_Admin.warn_on_leave}})}(jQuery); \ No newline at end of file +!function(e){function n(n,o){e("#bp-groups-new-members-list").append('<li data-login="'+o.item.value+'"><a href="#" class="bp-groups-remove-new-member">x</a> '+o.item.label+"</li>")}var o="undefined"!=typeof group_id?"&group_id="+group_id:"";e(document).ready(function(){window.warn_on_leave=!1,e(".bp-suggest-user").autocomplete({source:ajaxurl+"?action=bp_group_admin_member_autocomplete"+o,delay:500,minLength:2,position:"undefined"!=typeof isRtl&&isRtl?{my:"right top",at:"right bottom",offset:"0, -1"}:{offset:"0, -1"},open:function(){e(this).addClass("open")},close:function(){e(this).removeClass("open"),e(this).val("")},select:function(e,o){n(e,o)}}),e("#bp-groups-new-members").prop("placeholder",BP_Group_Admin.add_member_placeholder),e("#bp_group_add_members").on("click",".bp-groups-remove-new-member",function(n){n.preventDefault(),e(n.target.parentNode).remove()}),e(document).on("change",'input#bp-groups-name, input#bp-groups-description, select.bp-groups-role, #bp-groups-settings-section-status input[type="radio"]',function(){window.warn_on_leave=!0}),e("input#save").on("click",function(){var n=[];e("#bp-groups-new-members-list li").each(function(){n.push(e(this).data("login"))}),n.length&&e("#bp-groups-new-members").val("").val(n.join(", ")),window.warn_on_leave=!1}),window.onbeforeunload=function(){if(window.warn_on_leave)return BP_Group_Admin.warn_on_leave}})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php b/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php index cb7c69c3676cd45eddd1f8a3905ecc24ddbc32d3..1d594643a02718532fba4f98d3d4f62c90655811 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-activity.php @@ -54,29 +54,6 @@ function groups_register_activity_actions() { array( 'activity', 'group', 'member', 'member_groups' ) ); - // These actions are for the legacy forums - // Since the bbPress plugin also shares the same 'forums' identifier, we also - // check for the legacy forums loader class to be extra cautious. - if ( bp_is_active( 'forums' ) && class_exists( 'BP_Forums_Component' ) ) { - bp_activity_set_action( - $bp->groups->id, - 'new_forum_topic', - __( 'New group forum topic', 'buddypress' ), - false, - __( 'Forum Topics', 'buddypress' ), - array( 'activity', 'group', 'member', 'member_groups' ) - ); - - bp_activity_set_action( - $bp->groups->id, - 'new_forum_post', - __( 'New group forum post', 'buddypress' ), - false, - __( 'Forum Replies', 'buddypress' ), - array( 'activity', 'group', 'member', 'member_groups' ) - ); - } - /** * Fires at end of registration of the default activity actions for the Groups component. * @@ -362,7 +339,7 @@ function groups_record_activity( $args = '' ) { } } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'id' => false, 'user_id' => bp_loggedin_user_id(), 'action' => '', @@ -375,37 +352,79 @@ function groups_record_activity( $args = '' ) { 'recorded_time' => bp_core_current_time(), 'hide_sitewide' => $hide_sitewide, 'error_type' => 'bool' - ) ); + ), 'groups_record_activity' ); return bp_activity_add( $r ); } /** - * Update the last_activity meta value for a given group. + * Function used to determine if a user can comment on a group activity item. * - * @since 1.0.0 + * Used as a filter callback to 'bp_activity_can_comment'. * - * @param int $group_id Optional. The ID of the group whose last_activity is - * being updated. Default: the current group's ID. - * @return false|null False on failure. + * @since 3.0.0 + * + * @param bool $retval True if item can receive comments. + * @param null|BP_Activity_Activity $activity Null by default. Pass an activity object to check against that instead. + * @return bool */ -function groups_update_last_activity( $group_id = 0 ) { +function bp_groups_filter_activity_can_comment( $retval, $activity = null ) { + // Bail if item cannot receive comments or if no current user. + if ( empty( $retval ) || ! is_user_logged_in() ) { + return $retval; + } - if ( empty( $group_id ) ) { - $group_id = buddypress()->groups->current_group->id; + // Use passed activity object, if available. + if ( is_a( $activity, 'BP_Activity_Activity' ) ) { + $component = $activity->component; + $group_id = $activity->item_id; + + // Use activity info from current activity item in the loop. + } else { + $component = bp_get_activity_object_name(); + $group_id = bp_get_activity_item_id(); } - if ( empty( $group_id ) ) { - return false; + // If not a group activity item, bail. + if ( 'groups' !== $component ) { + return $retval; } - groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); + // If current user is not a group member or is banned, user cannot comment. + if ( ! bp_current_user_can( 'bp_moderate' ) && + ( ! groups_is_user_member( bp_loggedin_user_id(), $group_id ) || groups_is_user_banned( bp_loggedin_user_id(), $group_id ) ) + ) { + $retval = false; + } + + return $retval; +} +add_filter( 'bp_activity_can_comment', 'bp_groups_filter_activity_can_comment', 99, 1 ); + +/** + * Function used to determine if a user can reply on a group activity comment. + * + * Used as a filter callback to 'bp_activity_can_comment_reply'. + * + * @since 3.0.0 + * + * @param bool $retval True if activity comment can be replied to. + * @param object|bool $comment Current activity comment object. If empty, parameter is boolean false. + * @return bool + */ +function bp_groups_filter_activity_can_comment_reply( $retval, $comment ) { + // Bail if no current user, if comment is empty or if retval is already empty. + if ( ! is_user_logged_in() || empty( $comment ) || empty( $retval ) ) { + return $retval; + } + + // Grab parent activity item. + $parent = new BP_Activity_Activity( $comment->item_id ); + + // Check to see if user can reply to parent group activity item. + return bp_groups_filter_activity_can_comment( $retval, $parent ); } -add_action( 'groups_join_group', 'groups_update_last_activity' ); -add_action( 'groups_leave_group', 'groups_update_last_activity' ); -add_action( 'groups_created_group', 'groups_update_last_activity' ); -add_action( 'groups_new_forum_topic', 'groups_update_last_activity' ); -add_action( 'groups_new_forum_topic_post', 'groups_update_last_activity' ); +add_filter( 'bp_activity_can_comment_reply', 'bp_groups_filter_activity_can_comment_reply', 99, 2 ); /** * Add an activity stream item when a member joins a group. 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 ccbd9bf3d4e4c93ff881dad4cd53a3f4d302dc05..747e1cafe4a95e499b61fb54b7f7828dc1dfde0b 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-admin.php @@ -186,12 +186,10 @@ function bp_groups_admin_load() { ); // Add accessible hidden heading and text for Groups screen pagination. - if ( bp_get_major_wp_version() >= 4.4 ) { - get_current_screen()->set_screen_reader_content( array( - /* translators: accessibility text */ - 'heading_pagination' => __( 'Groups list navigation', 'buddypress' ), - ) ); - } + get_current_screen()->set_screen_reader_content( array( + /* translators: accessibility text */ + 'heading_pagination' => __( 'Groups list navigation', 'buddypress' ), + ) ); } $bp = buddypress(); @@ -508,7 +506,7 @@ function bp_groups_admin() { */ function bp_groups_admin_edit() { - if ( ! current_user_can( 'bp_moderate' ) ) + if ( ! bp_current_user_can( 'bp_moderate' ) ) die( '-1' ); $messages = array(); @@ -580,13 +578,27 @@ function bp_groups_admin_edit() { do_action_ref_array( 'bp_groups_admin_edit', array( &$group ) ); ?> <div class="wrap"> - <h1><?php _e( 'Edit Group', 'buddypress' ); ?> + <?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="add-new-h2" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> + <a class="page-title-action" href="<?php echo trailingslashit( bp_get_groups_directory_permalink() . 'create' ); ?>"><?php _e( 'Add New', 'buddypress' ); ?></a> <?php endif; ?> - </h1> + <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> + + <?php endif; ?> <?php // If the user has just made a change to an group, display the status messages. ?> <?php if ( !empty( $messages ) ) : ?> @@ -752,6 +764,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> + + <?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' ); ?> @@ -764,6 +792,8 @@ function bp_groups_admin_index() { <?php endif; ?> </h1> + <?php endif; ?> + <?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> @@ -1096,7 +1126,7 @@ function bp_groups_process_group_type_update( $group_id ) { check_admin_referer( 'bp-group-type-change-' . $group_id, 'bp-group-type-nonce' ); // Permission check. - if ( ! current_user_can( 'bp_moderate' ) ) { + if ( ! bp_current_user_can( 'bp_moderate' ) ) { return; } @@ -1211,7 +1241,7 @@ function bp_groups_admin_get_usernames_from_ids( $user_ids = array() ) { function bp_groups_admin_autocomplete_handler() { // Bail if user user shouldn't be here, or is a large network. - if ( ! current_user_can( 'bp_moderate' ) || ( is_multisite() && wp_is_large_network( 'users' ) ) ) { + if ( ! bp_current_user_can( 'bp_moderate' ) || ( is_multisite() && wp_is_large_network( 'users' ) ) ) { wp_die( -1 ); } 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 36d593e480d5d5a55388415d1ee6185e200b107c..d0a42a00305edee3f2db97605466d11b08b88398 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-filters.php @@ -10,7 +10,7 @@ // Exit if accessed directly. defined( 'ABSPATH' ) || exit; -// Filter bbPress template locations. +// Filter BuddyPress template locations. add_filter( 'bp_groups_get_directory_template', 'bp_add_template_locations' ); add_filter( 'bp_get_single_group_template', 'bp_add_template_locations' ); @@ -45,8 +45,6 @@ add_filter( 'bp_get_group_name', 'stripslashes' ); add_filter( 'bp_get_group_member_name', 'stripslashes' ); add_filter( 'bp_get_group_member_link', 'stripslashes' ); -add_filter( 'groups_new_group_forum_desc', 'bp_create_excerpt' ); - add_filter( 'groups_group_name_before_save', 'force_balance_tags' ); add_filter( 'groups_group_description_before_save', 'force_balance_tags' ); @@ -120,159 +118,6 @@ function bp_groups_filter_kses( $content = '' ) { return wp_kses( $content, $tags ); } -/** Legacy group forums (bbPress 1.x) *****************************************/ - -/** - * Filter bbPress query SQL when on group pages or on forums directory. - * - * @since 1.1.0 - */ -function groups_add_forum_privacy_sql() { - add_filter( 'get_topics_fields', 'groups_add_forum_fields_sql' ); - add_filter( 'get_topics_join', 'groups_add_forum_tables_sql' ); - add_filter( 'get_topics_where', 'groups_add_forum_where_sql' ); -} -add_filter( 'bbpress_init', 'groups_add_forum_privacy_sql' ); - -/** - * Add fields to bbPress query for group-specific data. - * - * @since 1.1.0 - * - * @param string $sql SQL statement to amend. - * @return string - */ -function groups_add_forum_fields_sql( $sql = '' ) { - $sql = 't.*, g.id as object_id, g.name as object_name, g.slug as object_slug'; - return $sql; -} - -/** - * Add JOINed tables to bbPress query for group-specific data. - * - * @since 1.1.0 - * - * @param string $sql SQL statement to amend. - * @return string - */ -function groups_add_forum_tables_sql( $sql = '' ) { - $bp = buddypress(); - - $sql .= 'JOIN ' . $bp->groups->table_name . ' AS g LEFT JOIN ' . $bp->groups->table_name_groupmeta . ' AS gm ON g.id = gm.group_id '; - - return $sql; -} - -/** - * Add WHERE clauses to bbPress query for group-specific data and access protection. - * - * @since 1.1.0 - * - * @param string $sql SQL Statement to amend. - * @return string - */ -function groups_add_forum_where_sql( $sql = '' ) { - - // Define locale variable. - $parts = array(); - - // Set this for groups. - $parts['groups'] = "(gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id)"; - - // Restrict to public... - $parts['private'] = "g.status = 'public'"; - - /** - * ...but do some checks to possibly remove public restriction. - * - * Decide if private are visible - */ - - // Are we in our own profile? - if ( bp_is_my_profile() ) - unset( $parts['private'] ); - - // Are we a super admin? - elseif ( bp_current_user_can( 'bp_moderate' ) ) - unset( $parts['private'] ); - - // No need to filter on a single item. - elseif ( bp_is_single_item() ) - unset( $parts['private'] ); - - // Check the SQL filter that was passed. - if ( !empty( $sql ) ) - $parts['passed'] = $sql; - - // Assemble Voltron. - $parts_string = implode( ' AND ', $parts ); - - $bp = buddypress(); - - // Set it to the global filter. - $bp->groups->filter_sql = $parts_string; - - // Return the global filter. - return $bp->groups->filter_sql; -} - -/** - * Modify bbPress caps for bp-forums. - * - * @since 1.1.0 - * - * @param bool $value Original value for current_user_can check. - * @param string $cap Capability checked. - * @param array $args Arguments for the caps. - * @return bool - */ -function groups_filter_bbpress_caps( $value, $cap, $args ) { - - if ( bp_current_user_can( 'bp_moderate' ) ) - return true; - - if ( 'add_tag_to' === $cap ) { - $bp = buddypress(); - - if ( $bp->groups->current_group->user_has_access ) { - return true; - } - } - - if ( 'manage_forums' == $cap && is_user_logged_in() ) - return true; - - return $value; -} -add_filter( 'bb_current_user_can', 'groups_filter_bbpress_caps', 10, 3 ); - -/** - * Amends the forum directory's "last active" bbPress SQL query to stop it fetching information we aren't going to use. - * - * This speeds up the query. - * - * @since 1.5.0 - * - * @see BB_Query::_filter_sql() - * - * @param string $sql SQL statement. - * @return string - */ -function groups_filter_forums_root_page_sql( $sql ) { - - /** - * Filters the forum directory's "last active" bbPress SQL query. - * - * This filter is used to prevent fetching information that is not used. - * - * @since 1.5.0 - * - * @param string $value SQL string to specify fetching just topic_id. - */ - return apply_filters( 'groups_filter_bbpress_root_page_sql', 't.topic_id' ); -} -add_filter( 'get_latest_topics_fields', 'groups_filter_forums_root_page_sql' ); - /** * Should BuddyPress load the mentions scripts and related assets, including results to prime the * mentions suggestions? @@ -309,15 +154,12 @@ add_filter( 'bp_activity_maybe_load_mentions_scripts', 'bp_groups_maybe_load_men */ function bp_groups_disable_at_mention_notification_for_non_public_groups( $send, $usernames, $user_id, BP_Activity_Activity $activity ) { // Skip the check for administrators, who can get notifications from non-public groups. - if ( user_can( $user_id, 'bp_moderate' ) ) { + if ( bp_user_can( $user_id, 'bp_moderate' ) ) { return $send; } - if ( 'groups' === $activity->component ) { - $group = groups_get_group( $activity->item_id ); - if ( 'public' !== $group->status && ! groups_is_user_member( $user_id, $group->id ) ) { - $send = false; - } + if ( 'groups' === $activity->component && ! bp_user_can( $user_id, 'groups_access_group', array( 'group_id' => $activity->item_id ) ) ) { + $send = false; } return $send; @@ -345,3 +187,178 @@ function bp_groups_default_avatar( $avatar, $params ) { return $avatar; } + +/** + * Filter the bp_user_can value to determine what the user can do + * with regards to a specific group. + * + * @since 3.0.0 + * + * @param bool $retval Whether or not the current user has the capability. + * @param int $user_id + * @param string $capability The capability being checked for. + * @param int $site_id Site ID. Defaults to the BP root blog. + * @param array $args Array of extra arguments passed. + * + * @return bool + */ +function bp_groups_user_can_filter( $retval, $user_id, $capability, $site_id, $args ) { + if ( empty( $args['group_id'] ) ) { + $group_id = bp_get_current_group_id(); + } else { + $group_id = (int) $args['group_id']; + } + + switch ( $capability ) { + case 'groups_join_group': + // Return early if the user isn't logged in or the group ID is unknown. + if ( ! $user_id || ! $group_id ) { + break; + } + + // Set to false to begin with. + $retval = false; + + // The group must allow joining, and the user should not currently be a member. + $group = groups_get_group( $group_id ); + if ( ( 'public' === bp_get_group_status( $group ) + && ! groups_is_user_member( $user_id, $group->id ) + && ! groups_is_user_banned( $user_id, $group->id ) ) + // Site admins can join any group they are not a member of. + || ( bp_user_can( $user_id, 'bp_moderate' ) + && ! groups_is_user_member( $user_id, $group->id ) ) + ) { + $retval = true; + } + break; + + case 'groups_request_membership': + // Return early if the user isn't logged in or the group ID is unknown. + if ( ! $user_id || ! $group_id ) { + break; + } + + // Set to false to begin with. + $retval = false; + + /* + * The group must accept membership requests, and the user should not + * currently be a member, have an active request, or be banned. + */ + $group = groups_get_group( $group_id ); + if ( 'private' === bp_get_group_status( $group ) + && ! groups_is_user_member( $user_id, $group->id ) + && ! groups_check_for_membership_request( $user_id, $group->id ) + && ! groups_is_user_banned( $user_id, $group->id ) + ) { + $retval = true; + } + break; + + case 'groups_send_invitation': + // Return early if the user isn't logged in or the group ID is unknown. + if ( ! $user_id || ! $group_id ) { + break; + } + + /* + * The group must allow invitations, and the user should not + * currently be a member or be banned from the group. + */ + // Users with the 'bp_moderate' cap can always send invitations. + if ( bp_user_can( $user_id, 'bp_moderate' ) ) { + $retval = true; + } else { + $invite_status = bp_group_get_invite_status( $group_id ); + + switch ( $invite_status ) { + case 'admins' : + if ( groups_is_user_admin( $user_id, $group_id ) ) { + $retval = true; + } + break; + + case 'mods' : + if ( groups_is_user_mod( $user_id, $group_id ) || groups_is_user_admin( $user_id, $group_id ) ) { + $retval = true; + } + break; + + case 'members' : + if ( groups_is_user_member( $user_id, $group_id ) ) { + $retval = true; + } + break; + } + } + break; + + case 'groups_receive_invitation': + // Return early if the user isn't logged in or the group ID is unknown. + if ( ! $user_id || ! $group_id ) { + break; + } + + // Set to false to begin with. + $retval = false; + + /* + * The group must allow invitations, and the user should not + * currently be a member or be banned from the group. + */ + $group = groups_get_group( $group_id ); + if ( in_array( bp_get_group_status( $group ), array( 'private', 'hidden' ), true ) + && ! groups_is_user_member( $user_id, $group->id ) + && ! groups_is_user_banned( $user_id, $group->id ) + ) { + $retval = true; + } + break; + + case 'groups_access_group': + // Return early if the group ID is unknown. + if ( ! $group_id ) { + break; + } + + $group = groups_get_group( $group_id ); + + // If the check is for the logged-in user, use the BP_Groups_Group property. + if ( $user_id === bp_loggedin_user_id() ) { + $retval = $group->user_has_access; + + /* + * If the check is for a specified user who is not the logged-in user + * run the check manually. + */ + } elseif ( 'public' === bp_get_group_status( $group ) || groups_is_user_member( $user_id, $group->id ) ) { + $retval = true; + } + break; + + case 'groups_see_group': + // Return early if the group ID is unknown. + if ( ! $group_id ) { + break; + } + + $group = groups_get_group( $group_id ); + + // If the check is for the logged-in user, use the BP_Groups_Group property. + if ( $user_id === bp_loggedin_user_id() ) { + $retval = $group->is_visible; + + /* + * If the check is for a specified user who is not the logged-in user + * run the check manually. + */ + } elseif ( 'hidden' !== bp_get_group_status( $group ) || groups_is_user_member( $user_id, $group->id ) ) { + $retval = true; + } + break; + } + + return $retval; + +} +add_filter( 'bp_user_can', 'bp_groups_user_can_filter', 10, 5 ); 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 56f09175c9bea3fd0cd47087829441cdc263eea7..2bb60fe8461827b2c28af999797447e3087deb78 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-functions.php @@ -48,11 +48,11 @@ function groups_get_group( $group_id ) { * Old-style arguments take the form of an array or a query string. */ if ( ! is_numeric( $group_id ) ) { - $r = wp_parse_args( $group_id, array( + $r = bp_parse_args( $group_id, array( 'group_id' => false, 'load_users' => false, 'populate_extras' => false, - ) ); + ), 'groups_get_group' ); $group_id = $r['group_id']; } @@ -88,8 +88,7 @@ function groups_get_group( $group_id ) { * 'hidden'. Defaults to 'public'. * @type int $parent_id The ID of the parent group. Default: 0. * @type int $enable_forum Optional. Whether the group has a forum enabled. - * If the legacy forums are enabled for this group - * or if a bbPress forum is enabled for the group, + * If a bbPress forum is enabled for the group, * set this to 1. Default: 0. * @type string $date_created The GMT time, in Y-m-d h:i:s format, when the group * was created. Defaults to the current time. @@ -98,19 +97,18 @@ function groups_get_group( $group_id ) { */ function groups_create_group( $args = '' ) { - $defaults = array( + $args = bp_parse_args( $args, array( 'group_id' => 0, 'creator_id' => 0, 'name' => '', 'description' => '', 'slug' => '', - 'status' => 'public', - 'parent_id' => 0, - 'enable_forum' => 0, - 'date_created' => bp_core_current_time() - ); + 'status' => null, + 'parent_id' => null, + 'enable_forum' => null, + 'date_created' => null + ), 'groups_create_group' ); - $args = wp_parse_args( $args, $defaults ); extract( $args, EXTR_SKIP ); // Pass an existing group ID. @@ -118,7 +116,12 @@ function groups_create_group( $args = '' ) { $group = groups_get_group( $group_id ); $name = ! empty( $name ) ? $name : $group->name; $slug = ! empty( $slug ) ? $slug : $group->slug; + $creator_id = ! empty( $creator_id ) ? $creator_id : $group->creator_id; $description = ! empty( $description ) ? $description : $group->description; + $status = ! is_null( $status ) ? $status : $group->status; + $parent_id = ! is_null( $parent_id ) ? $parent_id : $group->parent_id; + $enable_forum = ! is_null( $enable_forum ) ? $enable_forum : $group->enable_forum; + $date_created = ! is_null( $date_created ) ? $date_created : $group->date_created; // Groups need at least a name. if ( empty( $name ) ) { @@ -129,6 +132,12 @@ function groups_create_group( $args = '' ) { } else { // Instantiate new group object. $group = new BP_Groups_Group; + + // Check for null values, reset to sensible defaults. + $status = ! is_null( $status ) ? $status : 'public'; + $parent_id = ! is_null( $parent_id ) ? $parent_id : 0; + $enable_forum = ! is_null( $enable_forum ) ? $enable_forum : 0; + $date_created = ! is_null( $date_created ) ? $date_created : bp_core_current_time(); } // Set creator ID. @@ -245,13 +254,13 @@ function groups_edit_base_group_details( $args = array() ) { $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'group_id' => bp_get_current_group_id(), 'name' => null, 'slug' => null, 'description' => null, 'notify_members' => false, - ) ); + ), 'groups_edit_base_group_details' ); if ( ! $r['group_id'] ) { return false; @@ -344,13 +353,6 @@ function groups_edit_group_settings( $group_id, $enable_forum, $status, $invite_ if ( !$group->save() ) return false; - // If forums have been enabled, and a forum does not yet exist, we need to create one. - if ( $group->enable_forum ) { - if ( bp_is_active( 'forums' ) && !groups_get_groupmeta( $group->id, 'forum_id' ) ) { - groups_new_group_forum( $group->id, $group->name, $group->description ); - } - } - // Set the invite status. if ( $invite_status ) groups_update_groupmeta( $group->id, 'invite_status', $invite_status ); @@ -583,11 +585,13 @@ function groups_join_group( $group_id, $user_id = 0 ) { $group = $bp->groups->current_group; // Record this in activity streams. - groups_record_activity( array( - 'type' => 'joined_group', - 'item_id' => $group_id, - 'user_id' => $user_id, - ) ); + if ( bp_is_active( 'activity' ) ) { + groups_record_activity( array( + 'type' => 'joined_group', + 'item_id' => $group_id, + 'user_id' => $user_id, + ) ); + } /** * Fires after a user joins a group. @@ -602,6 +606,31 @@ function groups_join_group( $group_id, $user_id = 0 ) { return true; } +/** + * Update the last_activity meta value for a given group. + * + * @since 1.0.0 + * + * @param int $group_id Optional. The ID of the group whose last_activity is + * being updated. Default: the current group's ID. + * @return false|null False on failure. + */ +function groups_update_last_activity( $group_id = 0 ) { + + if ( empty( $group_id ) ) { + $group_id = buddypress()->groups->current_group->id; + } + + if ( empty( $group_id ) ) { + return false; + } + + groups_update_groupmeta( $group_id, 'last_activity', bp_core_current_time() ); +} +add_action( 'groups_join_group', 'groups_update_last_activity' ); +add_action( 'groups_leave_group', 'groups_update_last_activity' ); +add_action( 'groups_created_group', 'groups_update_last_activity' ); + /** General Group Functions ***************************************************/ /** @@ -638,25 +667,24 @@ function groups_get_group_mods( $group_id ) { * returning true. * * @since 1.0.0 + * @since 3.0.0 $group_id now supports multiple values. Only works if legacy query is not + * in use. * * @param array $args { * An array of optional arguments. - * @type int $group_id ID of the group whose members are being queried. - * Default: current group ID. - * @type int $page Page of results to be queried. Default: 1. - * @type int $per_page Number of items to return per page of results. - * Default: 20. - * @type int $max Optional. Max number of items to return. - * @type array $exclude Optional. Array of user IDs to exclude. - * @type bool|int $value True (or 1) to exclude admins and mods from results. - * Default: 1. - * @type bool|int $value True (or 1) to exclude banned users from results. - * Default: 1. - * @type array $group_role Optional. Array of group roles to include. - * @type string $search_terms Optional. Filter results by a search string. - * @type string $type Optional. Sort the order of results. 'last_joined', - * 'first_joined', or any of the $type params available - * in {@link BP_User_Query}. Default: 'last_joined'. + * @type int|array|string $group_id ID of the group to limit results to. Also accepts multiple values + * either as an array or as a comma-delimited string. + * @type int $page Page of results to be queried. Default: 1. + * @type int $per_page Number of items to return per page of results. Default: 20. + * @type int $max Optional. Max number of items to return. + * @type array $exclude Optional. Array of user IDs to exclude. + * @type bool|int $exclude_admins_mods True (or 1) to exclude admins and mods from results. Default: 1. + * @type bool|int $exclude_banned True (or 1) to exclude banned users from results. Default: 1. + * @type array $group_role Optional. Array of group roles to include. + * @type string $search_terms Optional. Filter results by a search string. + * @type string $type Optional. Sort the order of results. 'last_joined', 'first_joined', or + * any of the $type params available in {@link BP_User_Query}. Default: + * 'last_joined'. * } * @return false|array Multi-d array of 'members' list and 'count'. */ @@ -679,7 +707,7 @@ function groups_get_group_members( $args = array() ) { $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'group_id' => bp_get_current_group_id(), 'per_page' => false, 'page' => false, @@ -689,7 +717,7 @@ function groups_get_group_members( $args = array() ) { 'group_role' => array(), 'search_terms' => false, 'type' => 'last_joined', - ) ); + ), 'groups_get_group_members' ); // For legacy users. Use of BP_Groups_Member::get_all_for_group() is deprecated. if ( apply_filters( 'bp_use_legacy_group_member_query', false, __FUNCTION__, func_get_args() ) ) { @@ -765,7 +793,7 @@ function groups_get_total_member_count( $group_id ) { function groups_get_groups( $args = '' ) { $defaults = array( - 'type' => false, // Active, newest, alphabetical, random, popular, most-forum-topics or most-forum-posts. + 'type' => false, // Active, newest, alphabetical, random, popular. 'order' => 'DESC', // 'ASC' or 'DESC' 'orderby' => 'date_created', // date_created, last_activity, total_member_count, name, random, meta_id. 'user_id' => false, // Pass a user_id to limit to only groups that this user is a member of. @@ -785,6 +813,7 @@ function groups_get_groups( $args = '' ) { 'page' => 1, // The page to return if limiting per page. 'update_meta_cache' => true, // Pre-fetch groupmeta for queried groups. 'update_admin_cache' => false, + 'fields' => 'all', // Return BP_Groups_Group objects or a list of ids. ); $r = bp_parse_args( $args, $defaults, 'groups_get_groups' ); @@ -810,6 +839,7 @@ function groups_get_groups( $args = '' ) { 'update_admin_cache' => $r['update_admin_cache'], 'order' => $r['order'], 'orderby' => $r['orderby'], + 'fields' => $r['fields'], ) ); /** @@ -1261,14 +1291,12 @@ function groups_post_update( $args = '' ) { $bp = buddypress(); - $defaults = array( + $r = bp_parse_args( $args, array( 'content' => false, 'user_id' => bp_loggedin_user_id(), 'group_id' => 0, 'error_type' => 'bool' - ); - - $r = wp_parse_args( $args, $defaults ); + ), 'groups_post_update' ); extract( $r, EXTR_SKIP ); if ( empty( $group_id ) && !empty( $bp->groups->current_group->id ) ) @@ -1390,15 +1418,13 @@ function groups_get_invite_count_for_user( $user_id = 0 ) { */ function groups_invite_user( $args = '' ) { - $defaults = array( + $args = bp_parse_args( $args, array( 'user_id' => false, 'group_id' => false, 'inviter_id' => bp_loggedin_user_id(), 'date_modified' => bp_core_current_time(), 'is_confirmed' => 0 - ); - - $args = wp_parse_args( $args, $defaults ); + ), 'groups_invite_user' ); extract( $args, EXTR_SKIP ); if ( ! $user_id || ! $group_id || ! $inviter_id ) { @@ -1897,7 +1923,7 @@ function groups_send_membership_request( $requesting_user_id, $group_id ) { * @param int $requesting_user_id ID of the user requesting membership. * @param array $admins Array of group admins. * @param int $group_id ID of the group being requested to. - * @param int $requesting_user->id ID of the user requesting membership. + * @param int $requesting_user->id ID of the membership. */ do_action( 'groups_membership_requested', $requesting_user_id, $admins, $group_id, $requesting_user->id ); @@ -2200,8 +2226,49 @@ add_action( 'wpmu_delete_user', 'groups_remove_data_for_user' ); add_action( 'delete_user', 'groups_remove_data_for_user' ); add_action( 'bp_make_spam_user', 'groups_remove_data_for_user' ); +/** + * Update orphaned child groups when the parent is deleted. + * + * @since 2.7.0 + * + * @param BP_Groups_Group $group Instance of the group item being deleted. + */ +function bp_groups_update_orphaned_groups_on_group_delete( $group ) { + // Get child groups and set the parent to the deleted parent's parent. + $grandparent_group_id = $group->parent_id; + $child_args = array( + 'parent_id' => $group->id, + 'show_hidden' => true, + 'per_page' => false, + 'update_meta_cache' => false, + ); + $children = groups_get_groups( $child_args ); + $children = $children['groups']; + + foreach ( $children as $cgroup ) { + $cgroup->parent_id = $grandparent_group_id; + $cgroup->save(); + } +} +add_action( 'bp_groups_delete_group', 'bp_groups_update_orphaned_groups_on_group_delete', 10, 2 ); + /** Group Types ***************************************************************/ +/** + * Fire the 'bp_groups_register_group_types' action. + * + * @since 2.6.0 + */ +function bp_groups_register_group_types() { + /** + * Fires when it's appropriate to register group types. + * + * @since 2.6.0 + */ + do_action( 'bp_groups_register_group_types' ); +} +add_action( 'bp_register_taxonomies', 'bp_groups_register_group_types' ); + /** * Register a group type. * 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 ec9ea560725e400b2bfa68befff4c384a507a3cd..b94850fb5724010974515f2afe9d82e293218821 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-notifications.php @@ -1052,3 +1052,115 @@ function bp_groups_remove_data_for_user_notifications( $user_id ) { } } add_action( 'groups_remove_data_for_user', 'bp_groups_remove_data_for_user_notifications', 10 ); + +/** + * Render the group settings fields on the Notification Settings page. + * + * @since 1.0.0 + */ +function groups_screen_notification_settings() { + + if ( !$group_invite = bp_get_user_meta( bp_displayed_user_id(), 'notification_groups_invite', true ) ) + $group_invite = 'yes'; + + if ( !$group_update = bp_get_user_meta( bp_displayed_user_id(), 'notification_groups_group_updated', true ) ) + $group_update = 'yes'; + + if ( !$group_promo = bp_get_user_meta( bp_displayed_user_id(), 'notification_groups_admin_promotion', true ) ) + $group_promo = 'yes'; + + if ( !$group_request = bp_get_user_meta( bp_displayed_user_id(), 'notification_groups_membership_request', true ) ) + $group_request = 'yes'; + + if ( ! $group_request_completed = bp_get_user_meta( bp_displayed_user_id(), 'notification_membership_request_completed', true ) ) { + $group_request_completed = 'yes'; + } + ?> + + <table class="notification-settings" id="groups-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _ex( 'Groups', 'Group settings on notification settings page', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="groups-notification-settings-invitation"> + <td></td> + <td><?php _ex( 'A member invites you to join a group', 'group settings on notification settings page','buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_invite]" id="notification-groups-invite-yes" value="yes" <?php checked( $group_invite, 'yes', true ) ?>/><label for="notification-groups-invite-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_groups_invite]" id="notification-groups-invite-no" value="no" <?php checked( $group_invite, 'no', true ) ?>/><label for="notification-groups-invite-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <tr id="groups-notification-settings-info-updated"> + <td></td> + <td><?php _ex( 'Group information is updated', 'group settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_group_updated]" id="notification-groups-group-updated-yes" value="yes" <?php checked( $group_update, 'yes', true ) ?>/><label for="notification-groups-group-updated-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_groups_group_updated]" id="notification-groups-group-updated-no" value="no" <?php checked( $group_update, 'no', true ) ?>/><label for="notification-groups-group-updated-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <tr id="groups-notification-settings-promoted"> + <td></td> + <td><?php _ex( 'You are promoted to a group administrator or moderator', 'group settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_admin_promotion]" id="notification-groups-admin-promotion-yes" value="yes" <?php checked( $group_promo, 'yes', true ) ?>/><label for="notification-groups-admin-promotion-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_groups_admin_promotion]" id="notification-groups-admin-promotion-no" value="no" <?php checked( $group_promo, 'no', true ) ?>/><label for="notification-groups-admin-promotion-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <tr id="groups-notification-settings-request"> + <td></td> + <td><?php _ex( 'A member requests to join a private group for which you are an admin', 'group settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_groups_membership_request]" id="notification-groups-membership-request-yes" value="yes" <?php checked( $group_request, 'yes', true ) ?>/><label for="notification-groups-membership-request-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_groups_membership_request]" id="notification-groups-membership-request-no" value="no" <?php checked( $group_request, 'no', true ) ?>/><label for="notification-groups-membership-request-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + <tr id="groups-notification-settings-request-completed"> + <td></td> + <td><?php _ex( 'Your request to join a group has been approved or denied', 'group settings on notification settings page', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_membership_request_completed]" id="notification-groups-membership-request-completed-yes" value="yes" <?php checked( $group_request_completed, 'yes', true ) ?>/><label for="notification-groups-membership-request-completed-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_membership_request_completed]" id="notification-groups-membership-request-completed-no" value="no" <?php checked( $group_request_completed, 'no', true ) ?>/><label for="notification-groups-membership-request-completed-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + + <?php + + /** + * Fires at the end of the available group settings fields on Notification Settings page. + * + * @since 1.0.0 + */ + do_action( 'groups_screen_notification_settings' ); ?> + + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'groups_screen_notification_settings' ); 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 6aab8b0fb9ce162179e14ed8d79f2c18be7e58fe..3f0e101c843c8dd826ec04d63f41d20a3c1cd520 100644 --- a/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php +++ b/wp-content/plugins/buddypress/bp-groups/bp-groups-template.php @@ -467,7 +467,13 @@ function bp_the_group() { } /** - * Is the group visible to the currently logged-in user? + * Is the group accessible to the currently logged-in user? + * Despite the name of the function, it has historically checked + * whether a user has access to a group. + * In BP 2.9, a property was added to the BP_Groups_Group class, + * `is_visible`, that describes whether a user can know the group exists. + * If you wish to check that property, use the check: + * bp_current_user_can( 'groups_see_group' ). * * @since 1.0.0 * @@ -485,15 +491,7 @@ function bp_group_is_visible( $group = null ) { $group =& $groups_template->group; } - if ( 'public' == $group->status ) { - return true; - } else { - if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { - return true; - } - } - - return false; + return bp_current_user_can( 'groups_access_group', array( 'group_id' => $group->id ) ); } /** @@ -925,9 +923,9 @@ function bp_group_last_active( $group = false, $args = array() ) { $group =& $groups_template->group; } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'relative' => true, - ) ); + ), 'group_last_active' ); $last_active = $group->last_activity; if ( ! $last_active ) { @@ -1353,9 +1351,9 @@ function bp_group_date_created( $group = false, $args = array() ) { function bp_get_group_date_created( $group = false, $args = array() ) { global $groups_template; - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'relative' => true, - ) ); + ), 'group_date_created' ); if ( empty( $group ) ) { $group =& $groups_template->group; @@ -1561,16 +1559,14 @@ function bp_group_creator_avatar( $group = false, $args = array() ) { $group =& $groups_template->group; } - $defaults = array( + $r = bp_parse_args( $args, array( 'type' => 'full', 'width' => false, 'height' => false, 'class' => 'avatar', 'id' => false, 'alt' => sprintf( __( 'Group creator profile photo of %s', 'buddypress' ), bp_core_get_user_displayname( $group->creator_id ) ) - ); - - $r = wp_parse_args( $args, $defaults ); + ), 'group_creator_avatar' ); extract( $r, EXTR_SKIP ); $avatar = bp_core_fetch_avatar( array( 'item_id' => $group->creator_id, 'type' => $type, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height, 'alt' => $alt ) ); @@ -2063,138 +2059,6 @@ function bp_group_forum_permalink() { return apply_filters( 'bp_get_group_forum_permalink', trailingslashit( bp_get_group_permalink( $group ) . 'forum' ), $group ); } -/** - * Output the topic count for a group forum. - * - * @since 1.2.0 - * - * @param array|string $args See {@link bp_get_group_forum_topic_count()}. - */ -function bp_group_forum_topic_count( $args = '' ) { - echo bp_get_group_forum_topic_count( $args ); -} - /** - * Generate the topic count string for a group forum. - * - * @since 1.2.0 - * - * @param array|string $args { - * Array of arguments. - * @type bool $showtext Optional. If true, result will be formatted as "x topics". - * If false, just a number will be returned. - * Default: false. - * } - * @return string|int - */ - function bp_get_group_forum_topic_count( $args = '' ) { - global $groups_template; - - $defaults = array( - 'showtext' => false - ); - - $r = wp_parse_args( $args, $defaults ); - extract( $r, EXTR_SKIP ); - - if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) ) { - return false; - } - - if ( !bp_is_active( 'forums' ) ) { - return false; - } - - if ( !$groups_template->group->forum_counts ) { - $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int) $forum_id ); - } - - if ( (bool) $showtext ) { - if ( 1 == (int) $groups_template->group->forum_counts[0]->topics ) { - $total_topics = sprintf( __( '%d topic', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics ); - } else { - $total_topics = sprintf( __( '%d topics', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics ); - } - } else { - $total_topics = (int) $groups_template->group->forum_counts[0]->topics; - } - - /** - * Filters the topic count string for a group forum. - * - * @since 1.2.0 - * - * @param string $total_topics Total topic count string. - * @param bool $showtext Whether or not to return as formatted string. - */ - return apply_filters( 'bp_get_group_forum_topic_count', $total_topics, (bool)$showtext ); - } - -/** - * Output the post count for a group forum. - * - * @since 1.2.0 - * - * @param array|string $args See {@link bp_get_group_forum_post_count()}. - */ -function bp_group_forum_post_count( $args = '' ) { - echo bp_get_group_forum_post_count( $args ); -} - /** - * Generate the post count string for a group forum. - * - * @since 1.2.0 - * - * @param array|string $args { - * Array of arguments. - * @type bool $showtext Optional. If true, result will be formatted as "x posts". - * If false, just a number will be returned. - * Default: false. - * } - * @return string|int - */ - function bp_get_group_forum_post_count( $args = '' ) { - global $groups_template; - - $defaults = array( - 'showtext' => false - ); - - $r = wp_parse_args( $args, $defaults ); - extract( $r, EXTR_SKIP ); - - if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) ) { - return false; - } - - if ( !bp_is_active( 'forums' ) ) { - return false; - } - - if ( !$groups_template->group->forum_counts ) { - $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int) $forum_id ); - } - - if ( (bool) $showtext ) { - if ( 1 == (int) $groups_template->group->forum_counts[0]->posts ) { - $total_posts = sprintf( __( '%d post', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts ); - } else { - $total_posts = sprintf( __( '%d posts', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts ); - } - } else { - $total_posts = (int) $groups_template->group->forum_counts[0]->posts; - } - - /** - * Filters the post count string for a group forum. - * - * @since 1.2.0 - * - * @param string $total_posts Total post count string. - * @param bool $showtext Whether or not to return as formatted string. - */ - return apply_filters( 'bp_get_group_forum_post_count', $total_posts, (bool)$showtext ); - } - /** * Determine whether forums are enabled for a group. * @@ -2357,32 +2221,7 @@ function bp_groups_user_can_send_invites( $group_id = 0, $user_id = 0 ) { } if ( $user_id ) { - // Users with the 'bp_moderate' cap can always send invitations. - if ( user_can( $user_id, 'bp_moderate' ) ) { - $can_send_invites = true; - } else { - $invite_status = bp_group_get_invite_status( $group_id ); - - switch ( $invite_status ) { - case 'admins' : - if ( groups_is_user_admin( $user_id, $group_id ) ) { - $can_send_invites = true; - } - break; - - case 'mods' : - if ( groups_is_user_mod( $user_id, $group_id ) || groups_is_user_admin( $user_id, $group_id ) ) { - $can_send_invites = true; - } - break; - - case 'members' : - if ( groups_is_user_member( $user_id, $group_id ) ) { - $can_send_invites = true; - } - break; - } - } + $can_send_invites = bp_user_can( $user_id, 'groups_send_invitation', array( 'group_id' => $group_id ) ); } /** @@ -2605,12 +2444,10 @@ function bp_group_member_promote_mod_link( $args = '' ) { function bp_get_group_member_promote_mod_link( $args = '' ) { global $members_template, $groups_template; - $defaults = array( + $r = bp_parse_args( $args, array( 'user_id' => $members_template->member->user_id, 'group' => &$groups_template->group - ); - - $r = wp_parse_args( $args, $defaults ); + ), 'group_member_promote_mod_link' ); extract( $r, EXTR_SKIP ); /** @@ -2648,12 +2485,10 @@ function bp_group_member_promote_admin_link( $args = '' ) { function bp_get_group_member_promote_admin_link( $args = '' ) { global $members_template, $groups_template; - $defaults = array( + $r = bp_parse_args( $args, array( 'user_id' => !empty( $members_template->member->user_id ) ? $members_template->member->user_id : false, 'group' => &$groups_template->group - ); - - $r = wp_parse_args( $args, $defaults ); + ), 'group_member_promote_admin_link' ); extract( $r, EXTR_SKIP ); /** @@ -3385,62 +3220,6 @@ function bp_has_friends_to_invite( $group = false ) { return true; } -/** - * Output a 'New Topic' button for a group. - * - * @since 1.2.7 - * - * @param BP_Groups_Group|bool $group The BP Groups_Group object if passed, - * boolean false if not passed. - */ -function bp_group_new_topic_button( $group = false ) { - echo bp_get_group_new_topic_button( $group ); -} - - /** - * Returns a 'New Topic' button for a group. - * - * @since 1.2.7 - * - * @param BP_Groups_Group|bool $group The BP Groups_Group object if - * passed, boolean false if not passed. - * @return false|string HTML code for the button. - */ - function bp_get_group_new_topic_button( $group = false ) { - global $groups_template; - - if ( empty( $group ) ) { - $group =& $groups_template->group; - } - - if ( !is_user_logged_in() || bp_group_is_user_banned() || !bp_is_group_forum() || bp_is_group_forum_topic() ) { - return false; - } - - $button = array( - 'id' => 'new_topic', - 'component' => 'groups', - 'must_be_logged_in' => true, - 'block_self' => true, - 'wrapper_class' => 'group-button', - 'link_href' => '#post-new', - 'link_class' => 'group-button show-hide-new', - 'link_id' => 'new-topic-button', - 'link_text' => __( 'New Topic', 'buddypress' ), - ); - - /** - * Filters the HTML button for creating a new topic in a group. - * - * @since 1.5.0 - * @since 2.5.0 Added the `$group` parameter. - * - * @param string $button HTML button for a new topic. - * @param object $group Group object. - */ - return bp_get_button( apply_filters( 'bp_get_group_new_topic_button', $button, $group ) ); - } - /** * Output button to join a group. * @@ -3888,7 +3667,7 @@ function bp_group_has_members( $args = '' ) { $search_terms_default = stripslashes( $_REQUEST[ $search_query_arg ] ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'group_id' => bp_get_current_group_id(), 'page' => 1, 'per_page' => 20, @@ -3899,7 +3678,7 @@ function bp_group_has_members( $args = '' ) { 'group_role' => false, 'search_terms' => $search_terms_default, 'type' => 'last_joined', - ) ); + ), 'group_has_members' ); /* * If an empty search_terms string has been passed, @@ -4274,9 +4053,9 @@ function bp_group_member_joined_since( $args = array() ) { function bp_get_group_member_joined_since( $args = array() ) { global $members_template; - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'relative' => true, - ) ); + ), 'group_member_joined_since' ); // We do not want relative time, so return now. // @todo Should the 'bp_get_group_member_joined_since' filter be applied here? @@ -5213,11 +4992,13 @@ function bp_new_group_invite_friend_list( $args = array() ) { } // Parse arguments. - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'user_id' => bp_loggedin_user_id(), 'group_id' => false, - 'separator' => 'li' - ) ); + 'before' => '', + 'separator' => 'li', + 'after' => '', + ), 'group_invite_friend_list' ); // No group passed, so look for new or current group ID's. if ( empty( $r['group_id'] ) ) { @@ -5230,6 +5011,17 @@ function bp_new_group_invite_friend_list( $args = array() ) { // Setup empty items array. $items = array(); + // Build list markup parent elements. + $before = ''; + if ( ! empty( $r['before'] ) ) { + $before = $r['before']; + } + + $after = ''; + if ( ! empty( $r['after'] ) ) { + $after = $r['after']; + } + // Get user's friends who are not in this group already. $friends = friends_get_friends_invite_list( $r['user_id'], $r['group_id'] ); @@ -5256,7 +5048,7 @@ function bp_new_group_invite_friend_list( $args = array() ) { $invitable_friends = apply_filters( 'bp_get_new_group_invite_friend_list', $items, $r, $args ); if ( ! empty( $invitable_friends ) && is_array( $invitable_friends ) ) { - $retval = implode( "\n", $invitable_friends ); + $retval = $before . implode( "\n", $invitable_friends ) . $after; } else { $retval = false; } @@ -5565,14 +5357,12 @@ function bp_custom_group_fields() { function bp_group_has_membership_requests( $args = '' ) { global $requests_template; - $defaults = array( + $r = bp_parse_args( $args, array( 'group_id' => bp_get_current_group_id(), 'per_page' => 10, 'page' => 1, 'max' => false - ); - - $r = wp_parse_args( $args, $defaults ); + ), 'group_has_membership_requests' ); $requests_template = new BP_Groups_Membership_Requests_Template( $r ); @@ -5814,12 +5604,12 @@ function bp_group_requests_pagination_count() { function bp_group_has_invites( $args = '' ) { global $invites_template, $group_id; - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'group_id' => false, 'user_id' => bp_loggedin_user_id(), 'per_page' => false, 'page' => 1, - ) ); + ), 'group_has_invites' ); if ( empty( $r['group_id'] ) ) { if ( groups_get_current_group() ) { diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-extension.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-extension.php index e6339590f35f37d564a0ebfe653f9590a7041e4f..1a12ebceecd02871472f1663eb7413f61fa5f961 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-extension.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-extension.php @@ -753,8 +753,14 @@ class BP_Group_Extension { // When we are viewing the extension display page, set the title and options title. if ( bp_is_current_action( $this->slug ) ) { add_filter( 'bp_group_user_has_access', array( $this, 'group_access_protection' ), 10, 2 ); - add_action( 'bp_template_content_header', create_function( '', 'echo "' . esc_attr( $this->name ) . '";' ) ); - add_action( 'bp_template_title', create_function( '', 'echo "' . esc_attr( $this->name ) . '";' ) ); + + $extension_name = $this->name; + add_action( 'bp_template_content_header', function() use ( $extension_name ) { + echo esc_attr( $extension_name ); + } ); + add_action( 'bp_template_title', function() use ( $extension_name ) { + echo esc_attr( $extension_name ); + } ); } } @@ -808,7 +814,7 @@ class BP_Group_Extension { public function user_can_see_nav_item( $user_can_see_nav_item = false ) { // Always allow moderators to see nav items, even if explicitly 'noone' - if ( ( 'noone' !== $this->params['show_tab'] ) && current_user_can( 'bp_moderate' ) ) { + if ( ( 'noone' !== $this->params['show_tab'] ) && bp_current_user_can( 'bp_moderate' ) ) { return true; } @@ -829,7 +835,7 @@ class BP_Group_Extension { public function user_can_visit( $user_can_visit = false ) { // Always allow moderators to visit a tab, even if explicitly 'noone' - if ( ( 'noone' !== $this->params['access'] ) && current_user_can( 'bp_moderate' ) ) { + if ( ( 'noone' !== $this->params['access'] ) && bp_current_user_can( 'bp_moderate' ) ) { return true; } @@ -1196,10 +1202,15 @@ class BP_Group_Extension { $group_id = isset( $_GET['gid'] ) ? (int) $_GET['gid'] : 0; $screen = $this->screens['admin']; + $extension_slug = $this->slug; + $callback = function() use ( $extension_slug, $group_id ) { + do_action( 'bp_groups_admin_meta_box_content_' . $extension_slug, $group_id ); + }; + add_meta_box( $screen['slug'], $screen['name'], - create_function( '', 'do_action( "bp_groups_admin_meta_box_content_' . $this->slug . '", ' . $group_id . ' );' ), + $callback, get_current_screen()->id, $screen['metabox_context'], $screen['metabox_priority'] diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-member-query.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-member-query.php index cec4a7c687b10aa98a989fd9489d377ebf3c9e20..d872810e3f3bdd49eacd5fc322eec882e57a0c4a 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-member-query.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-group-member-query.php @@ -24,20 +24,19 @@ defined( 'ABSPATH' ) || exit; * inviter_id = 0 (and invite_sent = 0). * * @since 1.8.0 + * @since 3.0.0 $group_id now supports multiple values. * * @param array $args { * Array of arguments. Accepts all arguments from * {@link BP_User_Query}, with the following additions: * - * @type int $group_id ID of the group to limit results to. - * @type array $group_role Array of group roles to match ('member', - * 'mod', 'admin', 'banned'). - * Default: array( 'member' ). - * @type bool $is_confirmed Whether to limit to confirmed members. - * Default: true. - * @type string $type Sort order. Accepts any value supported by - * {@link BP_User_Query}, in addition to 'last_joined' - * and 'first_joined'. Default: 'last_joined'. + * @type int|array|string $group_id ID of the group to limit results to. Also accepts multiple values + * either as an array or as a comma-delimited string. + * @type array $group_role Array of group roles to match ('member', 'mod', 'admin', 'banned'). + * Default: array( 'member' ). + * @type bool $is_confirmed Whether to limit to confirmed members. Default: true. + * @type string $type Sort order. Accepts any value supported by {@link BP_User_Query}, in + * addition to 'last_joined' and 'first_joined'. Default: 'last_joined'. * } */ class BP_Group_Member_Query extends BP_User_Query { @@ -88,14 +87,14 @@ class BP_Group_Member_Query extends BP_User_Query { // We loop through to make sure that defaults are set (though // values passed to the constructor will, as usual, override // these defaults). - $this->query_vars = wp_parse_args( $this->query_vars, array( + $this->query_vars = bp_parse_args( $this->query_vars, array( 'group_id' => 0, 'group_role' => array( 'member' ), 'is_confirmed' => true, 'invite_sent' => null, 'inviter_id' => null, 'type' => 'last_joined', - ) ); + ), 'bp_group_member_query_get_include_ids' ); $group_member_ids = $this->get_group_member_ids(); @@ -137,7 +136,9 @@ class BP_Group_Member_Query extends BP_User_Query { /* WHERE clauses *****************************************************/ // Group id. - $sql['where'][] = $wpdb->prepare( "group_id = %d", $this->query_vars['group_id'] ); + $group_ids = wp_parse_id_list( $this->query_vars['group_id'] ); + $group_ids = implode( ',', $group_ids ); + $sql['where'][] = "group_id IN ({$group_ids})"; // If is_confirmed. $is_confirmed = ! empty( $this->query_vars['is_confirmed'] ) ? 1 : 0; 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 fc81d045abe71d7d837668f925bdfa3e22243bc5..f7d45658d0c75780e3dd0ac5f124d61d97ea5308 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 @@ -123,18 +123,18 @@ class BP_Groups_Component extends BP_Component { public function includes( $includes = array() ) { $includes = array( 'cache', - 'forums', - 'actions', 'filters', - 'screens', 'widgets', - 'activity', 'template', 'adminbar', 'functions', 'notifications' ); + // Conditional includes. + if ( bp_is_active( 'activity' ) ) { + $includes[] = 'activity'; + } if ( is_admin() ) { $includes[] = 'admin'; } @@ -142,6 +142,76 @@ class BP_Groups_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + if ( bp_is_groups_component() ) { + // Authenticated actions. + if ( is_user_logged_in() && + in_array( bp_current_action(), array( 'create', 'join', 'leave-group' ), true ) + ) { + require $this->path . 'bp-groups/actions/' . bp_current_action() . '.php'; + } + + // Actions - RSS feed handler. + if ( bp_is_active( 'activity' ) && bp_is_current_action( 'feed' ) ) { + require $this->path . 'bp-groups/actions/feed.php'; + } + + // Actions - Random group handler. + if ( isset( $_GET['random-group'] ) ) { + require $this->path . 'bp-groups/actions/random.php'; + } + + // Screens - Directory. + if ( bp_is_groups_directory() ) { + require $this->path . 'bp-groups/screens/directory.php'; + } + + // Screens - User profile integration. + if ( bp_is_user() ) { + require $this->path . 'bp-groups/screens/user/my-groups.php'; + + if ( bp_is_current_action( 'invites' ) ) { + require $this->path . 'bp-groups/screens/user/invites.php'; + } + } + + // Single group. + if ( bp_is_group() ) { + // Actions - Access protection. + require $this->path . 'bp-groups/actions/access.php'; + + // Public nav items. + if ( in_array( bp_current_action(), array( 'home', 'request-membership', 'activity', 'members', 'send-invites' ), true ) ) { + require $this->path . 'bp-groups/screens/single/' . bp_current_action() . '.php'; + } + + // Admin nav items. + if ( bp_is_item_admin() && is_user_logged_in() ) { + require $this->path . 'bp-groups/screens/single/admin.php'; + + if ( in_array( bp_get_group_current_admin_tab(), array( 'edit-details', 'group-settings', 'group-avatar', 'group-cover-image', 'manage-members', 'membership-requests', 'delete-group' ), true ) ) { + require $this->path . 'bp-groups/screens/single/admin/' . bp_get_group_current_admin_tab() . '.php'; + } + } + } + + // Theme compatibility. + new BP_Groups_Theme_Compat(); + } + } + /** * Set up component global data. * @@ -544,12 +614,7 @@ class BP_Groups_Component extends BP_Component { // If this is a private group, and the user is not a // member and does not have an outstanding invitation, // show a "Request Membership" nav item. - if ( is_user_logged_in() && - ! $this->current_group->is_member && - ! groups_check_for_membership_request( bp_loggedin_user_id(), $this->current_group->id ) && - $this->current_group->status == 'private' && - ! groups_check_user_has_invite( bp_loggedin_user_id(), $this->current_group->id ) - ) { + if ( bp_current_user_can( 'groups_request_membership', array( 'group_id' => $this->current_group->id ) ) ) { $sub_nav[] = array( 'name' => _x( 'Request Membership','Group screen nav', 'buddypress' ), @@ -561,20 +626,6 @@ class BP_Groups_Component extends BP_Component { ); } - // Forums are enabled and turned on. - if ( $this->current_group->enable_forum && bp_is_active( 'forums' ) ) { - $sub_nav[] = array( - 'name' => _x( 'Forum', 'My Group screen nav', 'buddypress' ), - 'slug' => 'forum', - 'parent_url' => $group_link, - 'parent_slug' => $this->current_group->slug, - 'screen_function' => 'groups_screen_group_forum', - 'position' => 40, - 'user_has_access' => $this->current_group->user_has_access, - 'item_css_id' => 'forums' - ); - } - if ( $this->current_group->front_template || bp_is_active( 'activity' ) ) { /** * If the theme is using a custom front, create activity subnav. diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group-members-template.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group-members-template.php index 8b25d750944c751a7a8583ae76d6f4d30bbb7ef1..78df766b600460446ba010a421a4a60483bd3fb9 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group-members-template.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-group-members-template.php @@ -111,7 +111,7 @@ class BP_Groups_Group_Members_Template { $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'group_id' => bp_get_current_group_id(), 'page' => 1, 'per_page' => 20, @@ -123,7 +123,7 @@ class BP_Groups_Group_Members_Template { 'group_role' => false, 'search_terms' => false, 'type' => 'last_joined', - ) ); + ), 'group_members_template' ); $this->pag_arg = sanitize_key( $r['page_arg'] ); $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $r['page'] ); 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 1ba94a16550c54cfd43789829e92e2e5bde7f851..5f79e6fb9481eaf08235bb1c30e75136c74aaab8 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 @@ -78,9 +78,11 @@ class BP_Groups_Group { public $parent_id; /** - * Should (legacy) bbPress forums be enabled for this group? + * Controls whether the group has a forum enabled. * * @since 1.6.0 + * @since 3.0.0 Previously, this referred to Legacy Forums. It's still used by bbPress 2 for integration. + * * @var int */ public $enable_forum; @@ -558,10 +560,15 @@ class BP_Groups_Group { $mod_ids = BP_Groups_Member::get_group_moderator_ids( $this->id ); $mod_ids_plucked = wp_list_pluck( $mod_ids, 'user_id' ); - $admin_mod_users = get_users( array( - 'include' => array_merge( $admin_ids_plucked, $mod_ids_plucked ), - 'blog_id' => null, - ) ); + $admin_mod_ids = array_merge( $admin_ids_plucked, $mod_ids_plucked ); + $admin_mod_users = array(); + + if ( ! empty( $admin_mod_ids ) ) { + $admin_mod_users = get_users( array( + 'include' => $admin_mod_ids, + 'blog_id' => null, + ) ); + } $admin_objects = $mod_objects = array(); foreach ( $admin_mod_users as $admin_mod_user ) { @@ -1025,10 +1032,13 @@ class BP_Groups_Group { * @type array|string $status Optional. Array or comma-separated list of group statuses to limit * results to. If specified, $show_hidden is ignored. * Default: empty array. + * @type string $fields Which fields to return. Specify 'ids' to fetch a list of IDs. + * Default: 'all' (return BP_Groups_Group objects). + * If set, meta and admin caches will not be prefetched. * } * @return array { * @type array $groups Array of group objects returned by the - * paginated query. + * paginated query. (IDs only if `fields` is set to `ids`.) * @type int $total Total count of all groups matching non- * paginated query params. * } @@ -1075,10 +1085,11 @@ class BP_Groups_Group { 'update_admin_cache' => false, 'exclude' => false, 'show_hidden' => false, - 'status' => array() + 'status' => array(), + 'fields' => 'all', ); - $r = wp_parse_args( $args, $defaults ); + $r = bp_parse_args( $args, $defaults, 'bp_groups_group_get' ); $bp = buddypress(); @@ -1299,20 +1310,54 @@ class BP_Groups_Group { $paged_group_ids = $cached; } - $uncached_group_ids = bp_get_non_cached_ids( $paged_group_ids, 'bp_groups' ); - if ( $uncached_group_ids ) { - $group_ids_sql = implode( ',', array_map( 'intval', $uncached_group_ids ) ); - $group_data_objects = $wpdb->get_results( "SELECT g.* FROM {$bp->groups->table_name} g WHERE g.id IN ({$group_ids_sql})" ); - foreach ( $group_data_objects as $group_data_object ) { - wp_cache_set( $group_data_object->id, $group_data_object, 'bp_groups' ); + if ( 'ids' === $r['fields'] ) { + // We only want the IDs. + $paged_groups = array_map( 'intval', $paged_group_ids ); + } else { + $uncached_group_ids = bp_get_non_cached_ids( $paged_group_ids, 'bp_groups' ); + if ( $uncached_group_ids ) { + $group_ids_sql = implode( ',', array_map( 'intval', $uncached_group_ids ) ); + $group_data_objects = $wpdb->get_results( "SELECT g.* FROM {$bp->groups->table_name} g WHERE g.id IN ({$group_ids_sql})" ); + foreach ( $group_data_objects as $group_data_object ) { + wp_cache_set( $group_data_object->id, $group_data_object, 'bp_groups' ); + } + } + + $paged_groups = array(); + foreach ( $paged_group_ids as $paged_group_id ) { + $paged_groups[] = new BP_Groups_Group( $paged_group_id ); + } + + $group_ids = array(); + foreach ( (array) $paged_groups as $group ) { + $group_ids[] = $group->id; + } + + // Grab all groupmeta. + if ( ! empty( $r['update_meta_cache'] ) ) { + bp_groups_update_meta_cache( $group_ids ); + } + + // Prefetch all administrator IDs, if requested. + if ( $r['update_admin_cache'] ) { + BP_Groups_Member::prime_group_admins_mods_cache( $group_ids ); + } + + // Set up integer properties needing casting. + $int_props = array( + 'id', 'creator_id', 'enable_forum' + ); + + // Integer casting. + foreach ( $paged_groups as $key => $g ) { + foreach ( $int_props as $int_prop ) { + $paged_groups[ $key ]->{$int_prop} = (int) $paged_groups[ $key ]->{$int_prop}; + } } - } - $paged_groups = array(); - foreach ( $paged_group_ids as $paged_group_id ) { - $paged_groups[] = new BP_Groups_Group( $paged_group_id ); } + // Find the total number of groups in the results set. $total_groups_sql = "SELECT COUNT(DISTINCT g.id) FROM {$sql['from']} $where"; /** @@ -1334,35 +1379,6 @@ class BP_Groups_Group { $total_groups = (int) $cached; } - $group_ids = array(); - foreach ( (array) $paged_groups as $group ) { - $group_ids[] = $group->id; - } - - // Grab all groupmeta. - if ( ! empty( $r['update_meta_cache'] ) ) { - bp_groups_update_meta_cache( $group_ids ); - } - - // Prefetch all administrator IDs, if requested. - if ( $r['update_admin_cache'] ) { - BP_Groups_Member::prime_group_admins_mods_cache( $group_ids ); - } - - // Set up integer properties needing casting. - $int_props = array( - 'id', 'creator_id', 'enable_forum' - ); - - // Integer casting. - foreach ( $paged_groups as $key => $g ) { - foreach ( $int_props as $int_prop ) { - $paged_groups[ $key ]->{$int_prop} = (int) $paged_groups[ $key ]->{$int_prop}; - } - } - - unset( $sql, $total_sql ); - return array( 'groups' => $paged_groups, 'total' => $total_groups ); } @@ -1446,77 +1462,6 @@ class BP_Groups_Group { return array( 'order' => $order, 'orderby' => $orderby ); } - /** - * Get a list of groups, sorted by those that have the most legacy forum topics. - * - * @since 1.6.0 - * - * @param int|null $limit Optional. The max number of results to return. - * Default: null (no limit). - * @param int|null $page Optional. The page offset of results to return. - * Default: null (no limit). - * @param int $user_id Optional. If present, groups will be limited to - * those of which the specified user is a member. - * @param string|bool $search_terms Optional. Limit groups to those whose name - * or description field contain the search string. - * @param bool $populate_extras Optional. Whether to fetch extra - * information about the groups. Default: true. - * @param string|array|bool $exclude Optional. Array or comma-separated list of group - * IDs to exclude from results. - * @return array { - * @type array $groups Array of group objects returned by the - * paginated query. - * @type int $total Total count of all groups matching non- - * paginated query params. - * } - */ - public static function get_by_most_forum_topics( $limit = null, $page = null, $user_id = 0, $search_terms = false, $populate_extras = true, $exclude = false ) { - global $wpdb, $bbdb; - - if ( empty( $bbdb ) ) { - - /** This action is documented in bp-forums/bp-forums-screens */ - do_action( 'bbpress_init' ); - } - - if ( !empty( $limit ) && !empty( $page ) ) { - $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); - } - - if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) - $hidden_sql = " AND g.status != 'hidden'"; - - if ( !empty( $search_terms ) ) { - $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; - $search_sql = $wpdb->prepare( ' AND ( g.name LIKE %s OR g.description LIKE %s ) ', $search_terms_like, $search_terms_like ); - } - - if ( !empty( $exclude ) ) { - $exclude = implode( ',', wp_parse_id_list( $exclude ) ); - $exclude_sql = " AND g.id NOT IN ({$exclude})"; - } - - $bp = buddypress(); - - if ( !empty( $user_id ) ) { - $user_id = absint( esc_sql( $user_id ) ); - $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} ORDER BY f.topics DESC {$pag_sql}" ); - $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql}" ); - } else { - $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY f.topics DESC {$pag_sql}" ); - $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.topics > 0 {$hidden_sql} {$search_sql} {$exclude_sql}" ); - } - - if ( !empty( $populate_extras ) ) { - foreach ( (array) $paged_groups as $group ) { - $group_ids[] = $group->id; - } - $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); - } - - return array( 'groups' => $paged_groups, 'total' => $total_groups ); - } - /** * Convert the 'orderby' param into a proper SQL term/column. * @@ -1558,75 +1503,6 @@ class BP_Groups_Group { return $order_by_term; } - /** - * Get a list of groups, sorted by those that have the most legacy forum posts. - * - * @since 1.6.0 - * - * @param int|null $limit Optional. The max number of results to return. - * Default: null (no limit). - * @param int|null $page Optional. The page offset of results to return. - * Default: null (no limit). - * @param string|bool $search_terms Optional. Limit groups to those whose name - * or description field contain the search string. - * @param bool $populate_extras Optional. Whether to fetch extra - * information about the groups. Default: true. - * @param string|array|bool $exclude Optional. Array or comma-separated list of group - * IDs to exclude from results. - * @return array { - * @type array $groups Array of group objects returned by the - * paginated query. - * @type int $total Total count of all groups matching non- - * paginated query params. - * } - */ - public static function get_by_most_forum_posts( $limit = null, $page = null, $search_terms = false, $populate_extras = true, $exclude = false ) { - global $wpdb, $bbdb; - - if ( empty( $bbdb ) ) { - - /** This action is documented in bp-forums/bp-forums-screens */ - do_action( 'bbpress_init' ); - } - - if ( !empty( $limit ) && !empty( $page ) ) { - $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) ); - } - - if ( !is_user_logged_in() || ( !bp_current_user_can( 'bp_moderate' ) && ( $user_id != bp_loggedin_user_id() ) ) ) - $hidden_sql = " AND g.status != 'hidden'"; - - if ( !empty( $search_terms ) ) { - $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; - $search_sql = $wpdb->prepare( ' AND ( g.name LIKE %s OR g.description LIKE %s ) ', $search_terms_like, $search_terms_like ); - } - - if ( !empty( $exclude ) ) { - $exclude = implode( ',', wp_parse_id_list( $exclude ) ); - $exclude_sql = " AND g.id NOT IN ({$exclude})"; - } - - $bp = buddypress(); - - if ( !empty( $user_id ) ) { - $user_id = esc_sql( $user_id ); - $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} ORDER BY f.posts ASC {$pag_sql}" ); - $total_groups = $wpdb->get_results( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bp->groups->table_name_members} m, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.posts > 0 {$hidden_sql} {$search_sql} AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0 {$exclude_sql} " ); - } else { - $paged_groups = $wpdb->get_results( "SELECT DISTINCT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) AND f.posts > 0 {$hidden_sql} {$search_sql} {$exclude_sql} ORDER BY f.posts ASC {$pag_sql}" ); - $total_groups = $wpdb->get_var( "SELECT COUNT(DISTINCT g.id) FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_groupmeta} gm3, {$bbdb->forums} f, {$bp->groups->table_name} g WHERE g.id = gm1.group_id AND g.id = gm2.group_id AND g.id = gm3.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND (gm3.meta_key = 'forum_id' AND gm3.meta_value = f.forum_id) {$hidden_sql} {$search_sql} {$exclude_sql}" ); - } - - if ( !empty( $populate_extras ) ) { - foreach ( (array) $paged_groups as $group ) { - $group_ids[] = $group->id; - } - $paged_groups = BP_Groups_Group::get_group_extras( $paged_groups, $group_ids, 'newest' ); - } - - return array( 'groups' => $paged_groups, 'total' => $total_groups ); - } - /** * Get a list of groups whose names start with a given letter. * @@ -1765,7 +1641,7 @@ class BP_Groups_Group { * Get a total group count for the site. * * Will include hidden groups in the count only if - * current_user_can( 'bp_moderate' ). + * bp_current_user_can( 'bp_moderate' ). * * @since 1.6.0 * @@ -1783,42 +1659,6 @@ class BP_Groups_Group { return $wpdb->get_var( "SELECT COUNT(id) FROM {$bp->groups->table_name} {$hidden_sql}" ); } - /** - * Get global count of forum topics in public groups (legacy forums). - * - * @since 1.6.0 - * - * @param string $type Optional. If 'unreplied', count will be limited to - * those topics that have received no replies. - * @return int Forum topic count. - */ - public static function get_global_forum_topic_count( $type ) { - global $bbdb, $wpdb; - - $bp = buddypress(); - - if ( 'unreplied' == $type ) - $bp->groups->filter_sql = ' AND t.topic_posts = 1'; - - /** - * Filters the portion of the SQL related to global count of forum topics in public groups. - * - * See https://buddypress.trac.wordpress.org/ticket/4306. - * - * @since 1.6.0 - * - * @param string $filter_sql SQL portion for the query. - * @param string $type Type of forum topics to query for. - */ - $extra_sql = apply_filters( 'get_global_forum_topic_count_extra_sql', $bp->groups->filter_sql, $type ); - - // Make sure the $extra_sql begins with an AND. - if ( 'AND' != substr( trim( strtoupper( $extra_sql ) ), 0, 3 ) ) - $extra_sql = ' AND ' . $extra_sql; - - return $wpdb->get_var( "SELECT COUNT(t.topic_id) FROM {$bbdb->topics} AS t, {$bp->groups->table_name} AS g LEFT JOIN {$bp->groups->table_name_groupmeta} AS gm ON g.id = gm.group_id WHERE (gm.meta_key = 'forum_id' AND gm.meta_value = t.forum_id) AND g.status = 'public' AND t.topic_status = '0' AND t.topic_sticky != '2' {$extra_sql} " ); - } - /** * Get the member count for a group. * @@ -1835,54 +1675,6 @@ class BP_Groups_Group { return $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(id) FROM {$bp->groups->table_name_members} WHERE group_id = %d AND is_confirmed = 1 AND is_banned = 0", $group_id ) ); } - /** - * Get a total count of all topics of a given status, across groups/forums. - * - * @since 1.5.0 - * - * @param string $status Which group type to count. 'public', 'private', - * 'hidden', or 'all'. Default: 'public'. - * @param string|bool $search_terms Provided search terms. - * @return int The topic count - */ - public static function get_global_topic_count( $status = 'public', $search_terms = false ) { - global $bbdb, $wpdb; - - switch ( $status ) { - case 'all' : - $status_sql = ''; - break; - - case 'hidden' : - $status_sql = "AND g.status = 'hidden'"; - break; - - case 'private' : - $status_sql = "AND g.status = 'private'"; - break; - - case 'public' : - default : - $status_sql = "AND g.status = 'public'"; - break; - } - - $bp = buddypress(); - - $sql = array(); - - $sql['select'] = "SELECT COUNT(t.topic_id)"; - $sql['from'] = "FROM {$bbdb->topics} AS t INNER JOIN {$bp->groups->table_name_groupmeta} AS gm ON t.forum_id = gm.meta_value INNER JOIN {$bp->groups->table_name} AS g ON gm.group_id = g.id"; - $sql['where'] = "WHERE gm.meta_key = 'forum_id' {$status_sql} AND t.topic_status = '0' AND t.topic_sticky != '2'"; - - if ( !empty( $search_terms ) ) { - $search_terms_like = '%' . bp_esc_like( $search_terms ) . '%'; - $sql['where'] .= $wpdb->prepare( " AND ( t.topic_title LIKE %s )", $search_terms_like ); - } - - return $wpdb->get_var( implode( ' ', $sql ) ); - } - /** * Get an array containing ids for each group type. * 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 6498cd45cc0a3f4b01eac000463cf933d981730f..0d16db855dcdc685dde83e4e471e1988f298f1df 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 @@ -91,13 +91,13 @@ class BP_Groups_Invite_Template { $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'page' => 1, 'per_page' => 10, 'page_arg' => 'invitepage', 'user_id' => bp_loggedin_user_id(), 'group_id' => bp_get_current_group_id(), - ) ); + ), 'groups_invite_template' ); $this->pag_arg = sanitize_key( $r['page_arg'] ); $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $r['page'] ); diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-member-suggestions.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-member-suggestions.php index 2aade7b0859bac742ba1ada764a0ebb6dd1ce970..e8b7fbb587c8c45aa7b5b6baabcc32f398f49dc3 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-member-suggestions.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-member-suggestions.php @@ -151,10 +151,11 @@ class BP_Groups_Member_Suggestions extends BP_Members_Suggestions { $results = array(); foreach ( $user_query->results as $user ) { - $result = new stdClass(); - $result->ID = $user->user_nicename; - $result->image = bp_core_fetch_avatar( array( 'html' => false, 'item_id' => $user->ID ) ); - $result->name = bp_core_get_user_displayname( $user->ID ); + $result = new stdClass(); + $result->ID = $user->user_nicename; + $result->image = bp_core_fetch_avatar( array( 'html' => false, 'item_id' => $user->ID ) ); + $result->name = bp_core_get_user_displayname( $user->ID ); + $result->user_id = $user->ID; $results[] = $result; } diff --git a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-membership-requests-template.php b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-membership-requests-template.php index b0a011a19b3fcb9d77a37ae640047ba68a2a21e6..a98a18a85337b17bc7241c8c8061fef9cd87d5ab 100644 --- a/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-membership-requests-template.php +++ b/wp-content/plugins/buddypress/bp-groups/classes/class-bp-groups-membership-requests-template.php @@ -99,14 +99,14 @@ class BP_Groups_Membership_Requests_Template { $args = bp_core_parse_args_array( $old_args_keys, func_get_args() ); } - $r = wp_parse_args( $args, array( + $r = bp_parse_args( $args, array( 'page' => 1, 'per_page' => 10, 'page_arg' => 'mrpage', 'max' => false, 'type' => 'first_joined', 'group_id' => bp_get_current_group_id(), - ) ); + ), 'groups_membership_requests_template' ); $this->pag_arg = sanitize_key( $r['page_arg'] ); $this->pag_page = bp_sanitize_pagination_arg( $this->pag_arg, $r['page'] ); 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 ba5e4128498db249db8b429acaf468a0051562c9..bb14a840e7db829b4bf5ea909c8cd805cde29eef 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 @@ -175,7 +175,7 @@ class BP_Groups_Template { 'update_admin_cache' => false, ); - $r = wp_parse_args( $args, $defaults ); + $r = bp_parse_args( $args, $defaults, 'groups_template' ); extract( $r ); $this->pag_arg = sanitize_key( $r['page_arg'] ); 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 049ab3127cbbca17e1306b5388712b8e347b0872..d18301fb4cfd2a0a6e9802f4cfd99e11e91945ff 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 @@ -206,7 +206,7 @@ class BP_Groups_Widget extends WP_Widget { 'group_default' => 'active', 'link_title' => false ); - $instance = wp_parse_args( (array) $instance, $defaults ); + $instance = bp_parse_args( (array) $instance, $defaults, 'groups_widget_form' ); $title = strip_tags( $instance['title'] ); $max_groups = strip_tags( $instance['max_groups'] ); diff --git a/wp-content/plugins/buddypress/bp-groups/screens/directory.php b/wp-content/plugins/buddypress/bp-groups/screens/directory.php new file mode 100644 index 0000000000000000000000000000000000000000..5c5ccb75566bdbdef002be50ca7cf5cd872a61ee --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/directory.php @@ -0,0 +1,36 @@ +<?php +/** + * Groups: Directory screen handler + * + * @package BuddyPress + * @subpackage GroupScreens + * @since 3.0.0 + */ + +/** + * Handle the display of the Groups directory index. + * + * @since 1.0.0 + */ +function groups_directory_groups_setup() { + if ( bp_is_groups_directory() ) { + bp_update_is_directory( true, 'groups' ); + + /** + * Fires before the loading of the Groups directory index. + * + * @since 1.1.0 + */ + do_action( 'groups_directory_groups_setup' ); + + /** + * Filters the template to load for the Groups directory index. + * + * @since 1.0.0 + * + * @param string $value Path to the groups directory index template to load. + */ + bp_core_load_template( apply_filters( 'groups_template_directory_groups', 'groups/index' ) ); + } +} +add_action( 'bp_screens', 'groups_directory_groups_setup', 2 ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/activity-permalink.php b/wp-content/plugins/buddypress/bp-groups/screens/single/activity-permalink.php new file mode 100644 index 0000000000000000000000000000000000000000..9d362c786e9941b784f7669d49e898c93d0f943d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/activity-permalink.php @@ -0,0 +1,27 @@ +<?php +/** + * Groups: Single group activity permalink screen handler + * + * Note - This has never worked. + * See {@link https://buddypress.trac.wordpress.org/ticket/2579} + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a single group activity item. + * + * @since 1.2.0 + */ +function groups_screen_group_activity_permalink() { + if ( !bp_is_groups_component() || !bp_is_active( 'activity' ) || ( bp_is_active( 'activity' ) && !bp_is_current_action( bp_get_activity_slug() ) ) || !bp_action_variable( 0 ) ) + return false; + + buddypress()->is_single_item = true; + + /** This filter is documented in bp-groups/bp-groups-screens.php */ + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_activity_permalink' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/activity.php b/wp-content/plugins/buddypress/bp-groups/screens/single/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..d04d5c093788a05483104c6c777e2b22844d9fa1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/activity.php @@ -0,0 +1,36 @@ +<?php +/** + * Groups: Single group "Activity" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of a single group's activity. + * + * @since 2.4.0 + */ +function groups_screen_group_activity() { + + if ( ! bp_is_single_item() ) { + return false; + } + + /** + * Fires before the loading of a single group's activity page. + * + * @since 2.4.0 + */ + do_action( 'groups_screen_group_activity' ); + + /** + * Filters the template to load for a single group's activity page. + * + * @since 2.4.0 + * + * @param string $value Path to a single group's template to load. + */ + bp_core_load_template( apply_filters( 'groups_screen_group_activity', 'groups/single/activity' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin.php new file mode 100644 index 0000000000000000000000000000000000000000..027a77064615f4e8bb9ae01d85f1c92a92f61b4e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin.php @@ -0,0 +1,23 @@ +<?php +/** + * Groups: Single group "Manage" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Admin pages. + * + * @since 1.0.0 + */ +function groups_screen_group_admin() { + if ( !bp_is_groups_component() || !bp_is_current_action( 'admin' ) ) + return false; + + if ( bp_action_variables() ) + return false; + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/delete-group.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/delete-group.php new file mode 100644 index 0000000000000000000000000000000000000000..c27ef0d663e7db6efe8dc444fd1bea7ee22bfa68 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/delete-group.php @@ -0,0 +1,80 @@ +<?php +/** + * Groups: Single group "Manage > Delete" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of the Delete Group page. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_delete_group() { + + if ( 'delete-group' != bp_get_group_current_admin_tab() ) + return false; + + if ( ! bp_is_item_admin() && !bp_current_user_can( 'bp_moderate' ) ) + return false; + + $bp = buddypress(); + + if ( isset( $_REQUEST['delete-group-button'] ) && isset( $_REQUEST['delete-group-understand'] ) ) { + + // Check the nonce first. + if ( !check_admin_referer( 'groups_delete_group' ) ) { + return false; + } + + /** + * Fires before the deletion of a group from the Delete Group page. + * + * @since 1.5.0 + * + * @param int $id ID of the group being deleted. + */ + do_action( 'groups_before_group_deleted', $bp->groups->current_group->id ); + + // Group admin has deleted the group, now do it. + if ( !groups_delete_group( $bp->groups->current_group->id ) ) { + bp_core_add_message( __( 'There was an error deleting the group. Please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'The group was deleted successfully.', 'buddypress' ) ); + + /** + * Fires after the deletion of a group from the Delete Group page. + * + * @since 1.0.0 + * + * @param int $id ID of the group being deleted. + */ + do_action( 'groups_group_deleted', $bp->groups->current_group->id ); + + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) ); + } + + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ) ); + } + + /** + * Fires before the loading of the Delete Group page template. + * + * @since 1.0.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_delete_group', $bp->groups->current_group->id ); + + /** + * Filters the template to load for the Delete Group page. + * + * @since 1.0.0 + * + * @param string $value Path to the Delete Group template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_delete_group', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_delete_group' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/edit-details.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/edit-details.php new file mode 100644 index 0000000000000000000000000000000000000000..ab539483cc98481bbd66bb91294fb3dd45d30f70 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/edit-details.php @@ -0,0 +1,78 @@ +<?php +/** + * Groups: Single group "Manage > Details" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's admin/edit-details page. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_edit_details() { + + if ( 'edit-details' != bp_get_group_current_admin_tab() ) + return false; + + if ( bp_is_item_admin() ) { + + $bp = buddypress(); + + // If the edit form has been submitted, save the edited details. + if ( isset( $_POST['save'] ) ) { + // Check the nonce. + if ( !check_admin_referer( 'groups_edit_group_details' ) ) + return false; + + $group_notify_members = isset( $_POST['group-notify-members'] ) ? (int) $_POST['group-notify-members'] : 0; + + // Name and description are required and may not be empty. + if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) ) { + bp_core_add_message( __( 'Groups must have a name and a description. Please try again.', 'buddypress' ), 'error' ); + } elseif ( ! groups_edit_base_group_details( array( + 'group_id' => $_POST['group-id'], + 'name' => $_POST['group-name'], + 'slug' => null, // @TODO: Add to settings pane? If yes, editable by site admin only, or allow group admins to do this? + 'description' => $_POST['group-desc'], + 'notify_members' => $group_notify_members, + ) ) ) { + bp_core_add_message( __( 'There was an error updating group details. Please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Group details were successfully updated.', 'buddypress' ) ); + } + + /** + * Fires before the redirect if a group details has been edited and saved. + * + * @since 1.0.0 + * + * @param int $id ID of the group that was edited. + */ + do_action( 'groups_group_details_edited', $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/edit-details/' ); + } + + /** + * Fires before the loading of the group admin/edit-details page template. + * + * @since 1.0.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_edit_details', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's admin/edit-details page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's admin/edit-details template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin', 'groups/single/home' ) ); + } +} +add_action( 'bp_screens', 'groups_screen_group_admin_edit_details' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-avatar.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-avatar.php new file mode 100644 index 0000000000000000000000000000000000000000..3e2927a1ecabaef3ee4a27e83ff2cc95c50dccb0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-avatar.php @@ -0,0 +1,112 @@ +<?php +/** + * Groups: Single group "Manage > Photo" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Change Avatar page. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_avatar() { + + if ( 'group-avatar' != bp_get_group_current_admin_tab() ) + return false; + + // If the logged-in user doesn't have permission or if avatar uploads are disabled, then stop here. + if ( ! bp_is_item_admin() || bp_disable_group_avatar_uploads() || ! buddypress()->avatar->show_avatars ) + return false; + + $bp = buddypress(); + + // If the group admin has deleted the admin avatar. + if ( bp_is_action_variable( 'delete', 1 ) ) { + + // Check the nonce. + check_admin_referer( 'bp_group_avatar_delete' ); + + if ( bp_core_delete_existing_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group' ) ) ) { + bp_core_add_message( __( 'The group profile photo was deleted successfully!', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem deleting the group profile photo. Please try again.', 'buddypress' ), 'error' ); + } + } + + if ( ! isset( $bp->avatar_admin ) ) { + $bp->avatar_admin = new stdClass(); + } + + $bp->avatar_admin->step = 'upload-image'; + + if ( !empty( $_FILES ) ) { + + // Check the nonce. + check_admin_referer( 'bp_avatar_upload' ); + + // Pass the file to the avatar upload handler. + if ( bp_core_avatar_handle_upload( $_FILES, 'groups_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping. + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + + } + + // If the image cropping is done, crop the image and save a full/thumb version. + if ( isset( $_POST['avatar-crop-submit'] ) ) { + + // Check the nonce. + check_admin_referer( 'bp_avatar_cropstore' ); + + $args = array( + 'object' => 'group', + 'avatar_dir' => 'group-avatars', + 'item_id' => $bp->groups->current_group->id, + 'original_file' => $_POST['image_src'], + 'crop_x' => $_POST['x'], + 'crop_y' => $_POST['y'], + 'crop_w' => $_POST['w'], + 'crop_h' => $_POST['h'] + ); + + if ( !bp_core_avatar_handle_crop( $args ) ) { + bp_core_add_message( __( 'There was a problem cropping the group profile photo.', 'buddypress' ), 'error' ); + } else { + /** + * Fires after a group avatar is uploaded. + * + * @since 2.8.0 + * + * @param int $group_id ID of the group. + * @param string $type Avatar type. 'crop' or 'full'. + * @param array $args Array of parameters passed to the avatar handler. + */ + do_action( 'groups_avatar_uploaded', bp_get_current_group_id(), 'crop', $args ); + bp_core_add_message( __( 'The new group profile photo was uploaded successfully.', 'buddypress' ) ); + } + } + + /** + * Fires before the loading of the group Change Avatar page template. + * + * @since 1.0.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_avatar', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's Change Avatar page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's Change Avatar template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_avatar', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_avatar' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-cover-image.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-cover-image.php new file mode 100644 index 0000000000000000000000000000000000000000..3cf4edbd90f3cedadd98b290e192b44834c9c5ad --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-cover-image.php @@ -0,0 +1,43 @@ +<?php +/** + * Groups: Single group "Manage > Cover Image" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Change cover image page. + * + * @since 2.4.0 + */ +function groups_screen_group_admin_cover_image() { + if ( 'group-cover-image' != bp_get_group_current_admin_tab() ) { + return false; + } + + // If the logged-in user doesn't have permission or if cover image uploads are disabled, then stop here. + if ( ! bp_is_item_admin() || ! bp_group_use_cover_image_header() ) { + return false; + } + + /** + * Fires before the loading of the group Change cover image page template. + * + * @since 2.4.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_cover_image', bp_get_current_group_id() ); + + /** + * Filters the template to load for a group's Change cover image page. + * + * @since 2.4.0 + * + * @param string $value Path to a group's Change cover image template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_cover_image', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_cover_image' ); \ No newline at end of file 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 new file mode 100644 index 0000000000000000000000000000000000000000..4adf43af50ca59c9561157811b7b5eb146391773 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/group-settings.php @@ -0,0 +1,105 @@ +<?php +/** + * Groups: Single group "Manage > Settings" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's admin/group-settings page. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_settings() { + + if ( 'group-settings' != bp_get_group_current_admin_tab() ) + return false; + + if ( ! bp_is_item_admin() ) + return false; + + $bp = buddypress(); + + // If the edit form has been submitted, save the edited details. + if ( isset( $_POST['save'] ) ) { + $enable_forum = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0; + + // Checked against a whitelist 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. + /** 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'; + + // Check the nonce. + if ( !check_admin_referer( 'groups_edit_group_settings' ) ) + return false; + + /* + * Save group types. + * + * Ensure we keep types that have 'show_in_create_screen' set to false. + */ + $current_types = bp_groups_get_group_type( bp_get_current_group_id(), false ); + $current_types = array_intersect( bp_groups_get_group_types( array( 'show_in_create_screen' => false ) ), (array) $current_types ); + if ( isset( $_POST['group-types'] ) ) { + $current_types = array_merge( $current_types, $_POST['group-types'] ); + + // Set group types. + bp_groups_set_group_type( bp_get_current_group_id(), $current_types ); + + // No group types checked, so this means we want to wipe out all group types. + } else { + /* + * Passing a blank string will wipe out all types for the group. + * + * Ensure we keep types that have 'show_in_create_screen' set to false. + */ + $current_types = empty( $current_types ) ? '' : $current_types; + + // Set group types. + bp_groups_set_group_type( bp_get_current_group_id(), $current_types ); + } + + if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $invite_status ) ) { + bp_core_add_message( __( 'There was an error updating group settings. Please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) ); + } + + /** + * Fires before the redirect if a group settings has been edited and saved. + * + * @since 1.0.0 + * + * @param int $id ID of the group that was edited. + */ + do_action( 'groups_group_settings_edited', $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/group-settings/' ); + } + + /** + * Fires before the loading of the group admin/group-settings page template. + * + * @since 1.0.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_settings', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's admin/group-settings page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's admin/group-settings template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_settings', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_settings' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/manage-members.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/manage-members.php new file mode 100644 index 0000000000000000000000000000000000000000..696e46fc6d5ec9a137de1bf025860e84fcb58d0b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/manage-members.php @@ -0,0 +1,183 @@ +<?php +/** + * Groups: Single group "Manage > Members" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * This function handles actions related to member management on the group admin. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_manage_members() { + + if ( 'manage-members' != bp_get_group_current_admin_tab() ) + return false; + + if ( ! bp_is_item_admin() ) + return false; + + $bp = buddypress(); + + if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) && bp_action_variable( 3 ) ) { + if ( bp_is_action_variable( 'promote', 1 ) && ( bp_is_action_variable( 'mod', 2 ) || bp_is_action_variable( 'admin', 2 ) ) && is_numeric( bp_action_variable( 3 ) ) ) { + $user_id = bp_action_variable( 3 ); + $status = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_promote_member' ) ) + return false; + + // Promote a user. + if ( !groups_promote_member( $user_id, $bp->groups->current_group->id, $status ) ) + bp_core_add_message( __( 'There was an error when promoting that user. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User promoted successfully', 'buddypress' ) ); + + /** + * Fires before the redirect after a group member has been promoted. + * + * @since 1.0.0 + * + * @param int $user_id ID of the user being promoted. + * @param int $id ID of the group user is promoted within. + */ + do_action( 'groups_promoted_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + } + + if ( bp_action_variable( 1 ) && bp_action_variable( 2 ) ) { + if ( bp_is_action_variable( 'demote', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_demote_member' ) ) + return false; + + // Stop sole admins from abandoning their group. + $group_admins = groups_get_group_admins( $bp->groups->current_group->id ); + if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == $user_id ) + bp_core_add_message( __( 'This group must have at least one admin', 'buddypress' ), 'error' ); + + // Demote a user. + elseif ( !groups_demote_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when demoting that user. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User demoted successfully', 'buddypress' ) ); + + /** + * Fires before the redirect after a group member has been demoted. + * + * @since 1.0.0 + * + * @param int $user_id ID of the user being demoted. + * @param int $id ID of the group user is demoted within. + */ + do_action( 'groups_demoted_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'ban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_ban_member' ) ) + return false; + + // Ban a user. + if ( !groups_ban_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when banning that user. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User banned successfully', 'buddypress' ) ); + + /** + * Fires before the redirect after a group member has been banned. + * + * @since 1.0.0 + * + * @param int $user_id ID of the user being banned. + * @param int $id ID of the group user is banned from. + */ + do_action( 'groups_banned_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'unban', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_unban_member' ) ) + return false; + + // Remove a ban for user. + if ( !groups_unban_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error when unbanning that user. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User ban removed successfully', 'buddypress' ) ); + + /** + * Fires before the redirect after a group member has been unbanned. + * + * @since 1.0.0 + * + * @param int $user_id ID of the user being unbanned. + * @param int $id ID of the group user is unbanned from. + */ + do_action( 'groups_unbanned_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + + if ( bp_is_action_variable( 'remove', 1 ) && is_numeric( bp_action_variable( 2 ) ) ) { + $user_id = bp_action_variable( 2 ); + + // Check the nonce first. + if ( !check_admin_referer( 'groups_remove_member' ) ) + return false; + + // Remove a user. + if ( !groups_remove_member( $user_id, $bp->groups->current_group->id ) ) + bp_core_add_message( __( 'There was an error removing that user from the group. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'User removed successfully', 'buddypress' ) ); + + /** + * Fires before the redirect after a group member has been removed. + * + * @since 1.2.6 + * + * @param int $user_id ID of the user being removed. + * @param int $id ID of the group the user is removed from. + */ + do_action( 'groups_removed_member', $user_id, $bp->groups->current_group->id ); + + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/manage-members/' ); + } + } + + /** + * Fires before the loading of a group's manage members template. + * + * @since 1.0.0 + * + * @param int $id ID of the group whose manage members page is being displayed. + */ + do_action( 'groups_screen_group_admin_manage_members', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's manage members page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's manage members template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_manage_members', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_manage_members' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/admin/membership-requests.php b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/membership-requests.php new file mode 100644 index 0000000000000000000000000000000000000000..ca12c2cc0bd8fb41913c5ca7e784a9bf4c1e041f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/admin/membership-requests.php @@ -0,0 +1,85 @@ +<?php +/** + * Groups: Single group "Manage > Requests" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of Admin > Membership Requests. + * + * @since 1.0.0 + */ +function groups_screen_group_admin_requests() { + $bp = buddypress(); + + if ( 'membership-requests' != bp_get_group_current_admin_tab() ) { + return false; + } + + if ( ! bp_is_item_admin() || ( 'public' == $bp->groups->current_group->status ) ) { + return false; + } + + $request_action = (string) bp_action_variable( 1 ); + $membership_id = (int) bp_action_variable( 2 ); + + if ( !empty( $request_action ) && !empty( $membership_id ) ) { + if ( 'accept' == $request_action && is_numeric( $membership_id ) ) { + + // Check the nonce first. + if ( !check_admin_referer( 'groups_accept_membership_request' ) ) + return false; + + // Accept the membership request. + if ( !groups_accept_membership_request( $membership_id ) ) + bp_core_add_message( __( 'There was an error accepting the membership request. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'Group membership request accepted', 'buddypress' ) ); + + } elseif ( 'reject' == $request_action && is_numeric( $membership_id ) ) { + /* Check the nonce first. */ + if ( !check_admin_referer( 'groups_reject_membership_request' ) ) + return false; + + // Reject the membership request. + if ( !groups_reject_membership_request( $membership_id ) ) + bp_core_add_message( __( 'There was an error rejecting the membership request. Please try again.', 'buddypress' ), 'error' ); + else + bp_core_add_message( __( 'Group membership request rejected', 'buddypress' ) ); + } + + /** + * Fires before the redirect if a group membership request has been handled. + * + * @since 1.0.0 + * + * @param int $id ID of the group that was edited. + * @param string $request_action Membership request action being performed. + * @param int $membership_id The key of the action_variables array that you want. + */ + do_action( 'groups_group_request_managed', $bp->groups->current_group->id, $request_action, $membership_id ); + bp_core_redirect( bp_get_group_permalink( groups_get_current_group() ) . 'admin/membership-requests/' ); + } + + /** + * Fires before the loading of the group membership request page template. + * + * @since 1.0.0 + * + * @param int $id ID of the group that is being displayed. + */ + do_action( 'groups_screen_group_admin_requests', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's membership request page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's membership request template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_admin_requests', 'groups/single/home' ) ); +} +add_action( 'bp_screens', 'groups_screen_group_admin_requests' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/home.php b/wp-content/plugins/buddypress/bp-groups/screens/single/home.php new file mode 100644 index 0000000000000000000000000000000000000000..8287cc0ca0356859db8e1f346a96301950fe033d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/home.php @@ -0,0 +1,36 @@ +<?php +/** + * Groups: Single group "Home" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of a single group's page. + * + * @since 1.0.0 + */ +function groups_screen_group_home() { + + if ( ! bp_is_single_item() ) { + return false; + } + + /** + * Fires before the loading of a single group's page. + * + * @since 1.0.0 + */ + do_action( 'groups_screen_group_home' ); + + /** + * Filters the template to load for a single group's page. + * + * @since 1.0.0 + * + * @param string $value Path to a single group's template to load. + */ + bp_core_load_template( apply_filters( 'groups_template_group_home', 'groups/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/single/members.php b/wp-content/plugins/buddypress/bp-groups/screens/single/members.php new file mode 100644 index 0000000000000000000000000000000000000000..6174fd6045c20b3203bb5d5d502e2a2807b7c4d9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/members.php @@ -0,0 +1,42 @@ +<?php +/** + * Groups: Single group "Members" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Members page. + * + * @since 1.0.0 + */ +function groups_screen_group_members() { + + if ( !bp_is_single_item() ) + return false; + + $bp = buddypress(); + + // Refresh the group member count meta. + groups_update_groupmeta( $bp->groups->current_group->id, 'total_member_count', groups_get_total_member_count( $bp->groups->current_group->id ) ); + + /** + * Fires before the loading of a group's Members page. + * + * @since 1.0.0 + * + * @param int $id ID of the group whose members are being displayed. + */ + do_action( 'groups_screen_group_members', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's Members page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's Members template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_members', 'groups/single/home' ) ); +} \ No newline at end of file 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 new file mode 100644 index 0000000000000000000000000000000000000000..640b0ddfb5a62b3d29d5e8486ce83673c68f13bc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/request-membership.php @@ -0,0 +1,66 @@ +<?php +/** + * Groups: Single group "Request Membership" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Request Membership page. + * + * @since 1.0.0 + */ +function groups_screen_group_request_membership() { + + if ( !is_user_logged_in() ) + return false; + + $bp = buddypress(); + + 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 ) ) + bp_core_add_message( __( 'Group invite accepted', 'buddypress' ) ); + 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 ) ); + } + + // If the user has submitted a request, send it. + if ( isset( $_POST['group-request-send']) ) { + + // Check the nonce. + if ( !check_admin_referer( 'groups_request_membership' ) ) + return false; + + if ( !groups_send_membership_request( bp_loggedin_user_id(), $bp->groups->current_group->id ) ) { + 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' ) ); + } + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + } + + /** + * Fires before the loading of a group's Request Memebership page. + * + * @since 1.0.0 + * + * @param int $id ID of the group currently being displayed. + */ + do_action( 'groups_screen_group_request_membership', $bp->groups->current_group->id ); + + /** + * Filters the template to load for a group's Request Membership page. + * + * @since 1.0.0 + * + * @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-groups/screens/single/send-invites.php b/wp-content/plugins/buddypress/bp-groups/screens/single/send-invites.php new file mode 100644 index 0000000000000000000000000000000000000000..3b0365cbe38ace2a7fde1a198314d7d5ba500329 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/single/send-invites.php @@ -0,0 +1,104 @@ +<?php +/** + * Groups: Single group "Send Invites" screen handler + * + * @package BuddyPress + * @subpackage GroupsScreens + * @since 3.0.0 + */ + +/** + * Handle the display of a group's Send Invites page. + * + * @since 1.0.0 + */ +function groups_screen_group_invite() { + + if ( !bp_is_single_item() ) + return false; + + $bp = buddypress(); + + if ( bp_is_action_variable( 'send', 0 ) ) { + + if ( !check_admin_referer( 'groups_send_invites', '_wpnonce_send_invites' ) ) + return false; + + if ( !empty( $_POST['friends'] ) ) { + foreach( (array) $_POST['friends'] as $friend ) { + groups_invite_user( array( 'user_id' => $friend, 'group_id' => $bp->groups->current_group->id ) ); + } + } + + // Send the invites. + groups_send_invites( bp_loggedin_user_id(), $bp->groups->current_group->id ); + bp_core_add_message( __('Group invites sent.', 'buddypress') ); + + /** + * Fires after the sending of a group invite inside the group's Send Invites page. + * + * @since 1.0.0 + * + * @param int $id ID of the group whose members are being displayed. + */ + do_action( 'groups_screen_group_invite', $bp->groups->current_group->id ); + bp_core_redirect( bp_get_group_permalink( $bp->groups->current_group ) ); + + } elseif ( !bp_action_variable( 0 ) ) { + + /** + * Filters the template to load for a group's Send Invites page. + * + * @since 1.0.0 + * + * @param string $value Path to a group's Send Invites template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_invite', 'groups/single/home' ) ); + + } else { + bp_do_404(); + } +} + +/** + * Process group invitation removal requests. + * + * Note that this function is only used when JS is disabled. Normally, clicking + * Remove Invite removes the invitation via AJAX. + * + * @since 2.0.0 + */ +function groups_remove_group_invite() { + if ( ! bp_is_group_invites() ) { + return; + } + + if ( ! bp_is_action_variable( 'remove', 0 ) || ! is_numeric( bp_action_variable( 1 ) ) ) { + return; + } + + if ( ! check_admin_referer( 'groups_invite_uninvite_user' ) ) { + return false; + } + + $friend_id = intval( bp_action_variable( 1 ) ); + $group_id = bp_get_current_group_id(); + $message = __( 'Invite successfully removed', 'buddypress' ); + $redirect = wp_get_referer(); + $error = false; + + if ( ! bp_groups_user_can_send_invites( $group_id ) ) { + $message = __( 'You are not allowed to send or remove invites', 'buddypress' ); + $error = 'error'; + } elseif ( groups_check_for_membership_request( $friend_id, $group_id ) ) { + $message = __( 'The member requested to join the group', 'buddypress' ); + $error = 'error'; + } elseif ( ! groups_uninvite_user( $friend_id, $group_id ) ) { + $message = __( 'There was an error removing the invite', 'buddypress' ); + $error = 'error'; + } + + bp_core_add_message( $message, $error ); + bp_core_redirect( $redirect ); +} +add_action( 'bp_screens', 'groups_remove_group_invite' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/user/invites.php b/wp-content/plugins/buddypress/bp-groups/screens/user/invites.php new file mode 100644 index 0000000000000000000000000000000000000000..9ea41e053c2114ad2c573bfa7a0f63ab54e64671 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/user/invites.php @@ -0,0 +1,84 @@ +<?php +/** + * Groups: User's "Groups > Invites" screen handler + * + * @package BuddyPress + * @subpackage GroupScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of a user's Groups > Invites page. + * + * @since 1.0.0 + */ +function groups_screen_group_invites() { + $group_id = (int)bp_action_variable( 1 ); + + if ( bp_is_action_variable( 'accept' ) && is_numeric( $group_id ) ) { + // Check the nonce. + if ( !check_admin_referer( 'groups_accept_invite' ) ) + return false; + + if ( !groups_accept_invite( bp_loggedin_user_id(), $group_id ) ) { + bp_core_add_message( __('Group invite could not be accepted', 'buddypress'), 'error' ); + } else { + // Record this in activity streams. + $group = groups_get_group( $group_id ); + + bp_core_add_message( sprintf( __( 'Group invite accepted. Visit %s.', 'buddypress' ), bp_get_group_link( $group ) ) ); + + if ( bp_is_active( 'activity' ) ) { + groups_record_activity( array( + 'type' => 'joined_group', + 'item_id' => $group->id + ) ); + } + } + + if ( isset( $_GET['redirect_to'] ) ) { + $redirect_to = urldecode( $_GET['redirect_to'] ); + } else { + $redirect_to = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ); + } + + bp_core_redirect( $redirect_to ); + + } elseif ( bp_is_action_variable( 'reject' ) && is_numeric( $group_id ) ) { + // Check the nonce. + if ( !check_admin_referer( 'groups_reject_invite' ) ) + return false; + + if ( !groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) { + bp_core_add_message( __( 'Group invite could not be rejected', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Group invite rejected', 'buddypress' ) ); + } + + if ( isset( $_GET['redirect_to'] ) ) { + $redirect_to = urldecode( $_GET['redirect_to'] ); + } else { + $redirect_to = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/' . bp_current_action() ); + } + + bp_core_redirect( $redirect_to ); + } + + /** + * Fires before the loading of a users Groups > Invites template. + * + * @since 1.0.0 + * + * @param int $group_id ID of the group being displayed + */ + do_action( 'groups_screen_group_invites', $group_id ); + + /** + * Filters the template to load for a users Groups > Invites page. + * + * @since 1.0.0 + * + * @param string $value Path to a users Groups > Invites page template. + */ + bp_core_load_template( apply_filters( 'groups_template_group_invites', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-groups/screens/user/my-groups.php b/wp-content/plugins/buddypress/bp-groups/screens/user/my-groups.php new file mode 100644 index 0000000000000000000000000000000000000000..4edd75684602f37e3448d68b3356532caddad0fb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-groups/screens/user/my-groups.php @@ -0,0 +1,32 @@ +<?php +/** + * Groups: User's "Groups" screen handler + * + * @package BuddyPress + * @subpackage GroupScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of the My Groups page. + * + * @since 1.0.0 + */ +function groups_screen_my_groups() { + + /** + * Fires before the loading of the My Groups page. + * + * @since 1.1.0 + */ + do_action( 'groups_screen_my_groups' ); + + /** + * Filters the template to load for the My Groups page. + * + * @since 1.0.0 + * + * @param string $value Path to the My Groups page template to load. + */ + bp_core_load_template( apply_filters( 'groups_template_my_groups', 'members/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 65649efffa4ef0646567a1bd3fc5f1e53c3f77a2..c13a9ab1c3e7c0b9498640583c5a0650c30929ce 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: 2.9.2 + * Version: 3.1.0 * Text Domain: buddypress * Domain Path: /bp-languages/ * License: GPLv2 or later (license.txt) diff --git a/wp-content/plugins/buddypress/bp-members/actions/random.php b/wp-content/plugins/buddypress/bp-members/actions/random.php new file mode 100644 index 0000000000000000000000000000000000000000..a37773ba8fa6a71f9683830d8c6e4e3dde99c3fd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/actions/random.php @@ -0,0 +1,22 @@ +<?php +/** + * Members: Random member action handler + * + * @package BuddyPress + * @subpackage MembersActions + * @since 3.0.0 + */ + +/** + * Redirect to a random member page when visiting a ?random-member URL. + * + * @since 1.0.0 + */ +function bp_core_get_random_member() { + if ( ! isset( $_GET['random-member'] ) ) + return; + + $user = bp_core_get_users( array( 'type' => 'random', 'per_page' => 1 ) ); + bp_core_redirect( bp_core_get_user_domain( $user['users'][0]->id ) ); +} +add_action( 'bp_actions', 'bp_core_get_random_member' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.css b/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.css index 54e0ac894afe4f4886b730a4de127cba608f9bfa..e6726e042da4370197128400c7ca2fc52b74d8e7 100644 --- a/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.css +++ b/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.css @@ -154,10 +154,19 @@ div#community-profile-page p.not-activated { width: auto; } -.field_type_datebox select:nth-of-type(1) { +.field_type_checkbox .radio label, +.field_type_radio .radio label { + margin-right: 0; +} + +.field_type_datebox .datebox-selects { margin-right: 200px; } +.field_type_datebox select:nth-of-type(1) { + margin-right: 0; +} + .field_type_radio .radio .input-options label, .field_type_checkbox .checkbox .input-options label { @@ -183,6 +192,7 @@ div#community-profile-page p.not-activated { .field-visibility-settings { /* visibility settings go in the left column */ display: none; margin-right: 200px; + margin-top: 1.5em; } .field-visibility-settings .button { /* visibility setting close button */ @@ -254,8 +264,16 @@ div#community-profile-page p.not-activated { margin-right: 50px; } + .field_type_datebox .datebox-selects { + margin-right: 0; + } + .field-visibility-settings { - margin-right: 100px; + margin-right: 50px; + } + + .field-visibility-settings input[type="radio"] { + margin-right: 0; } #your-profile .field_multiselectbox select { @@ -281,6 +299,6 @@ div#community-profile-page p.not-activated { } .field-visibility-settings { - margin-right: 50px; + margin-right: 0; } } diff --git a/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.min.css b/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.min.css index 6c574612a10cc98cf0266dcc418844bf3e7747ca..5899b0810008aa0b998dc265c5c2dfc10c3cde27 100644 --- a/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-members/admin/css/admin-rtl.min.css @@ -1 +1 @@ -div#profile-page.wrap form#your-profile{position:relative;padding-top:50px}div#profile-page.wrap form#your-profile h3:first-of-type{margin-top:5em}div#profile-page.wrap form#your-profile #profile-nav{position:absolute;top:0;width:97%}div#community-profile-page #profile-nav{margin-bottom:1em}#bp_members_admin_user_stats ul{margin-bottom:0}div#community-profile-page a.bp-xprofile-avatar-user-admin:before,div#community-profile-page a.bp-xprofile-avatar-user-edit:before,div#community-profile-page li.bp-blogs-profile-stats:before,div#community-profile-page li.bp-friends-profile-stats:before,div#community-profile-page li.bp-groups-profile-stats:before,div#community-profile-page li.bp-members-profile-stats:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:0;right:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div#community-profile-page li.bp-members-profile-stats:before{content:"\f130"}div#community-profile-page li.bp-friends-profile-stats:before{content:"\f454"}div#community-profile-page li.bp-groups-profile-stats:before{content:"\f456"}div#community-profile-page li.bp-blogs-profile-stats:before{content:"\f120"}div#community-profile-page a.bp-xprofile-avatar-user-admin:before{content:"\f182"}div#community-profile-page a.bp-xprofile-avatar-user-edit:before{content:"\f107"}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar{width:150px;margin:0 auto}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar img{max-width:100%;height:auto}div#community-profile-page div#bp_xprofile_user_admin_avatar a{display:block;margin:1em 0}div#community-profile-page p.not-activated{margin:1em 1em 0;color:red}#community-profile-page #submitdiv #publishing-action{float:none;width:100%}.bp-view-profile{float:right}.alt{background:0 0}.bp-profile-field{border-bottom:dotted 1px #ccc;font-size:14px;margin:15px 0;padding:10px}.bp-profile-field:last-child{border-bottom:0}.bp-profile-field p{font-size:14px}.field_type_checkbox .checkbox legend,.field_type_multiselectbox legend,.field_type_radio .radio legend,.field_type_textarea legend{vertical-align:top}.bp-profile-field .description{margin:10px 200px 12px 0;text-align:right}.bp-profile-field .wp-editor-wrap{margin-right:200px}.field_type_checkbox .description,.field_type_datebox .description,.field_type_radio .description{margin-top:0}.clear-value{display:block;font-size:12px;margin-right:200px}.field_type_checkbox label,.field_type_radio label{display:block;margin-bottom:1em;margin-right:200px;width:auto}.field_type_datebox select:nth-of-type(1){margin-right:200px}.field_type_checkbox .checkbox .input-options label,.field_type_radio .radio .input-options label{display:block}.field_type_checkbox .checkbox .input-options,.field_type_datebox .datebox .input-options,.field_type_radio .radio .input-options{display:inline-block}.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin:10px 200px 10px 0;text-align:right}.field-visibility-settings{display:none;margin-right:200px}.field-visibility-settings .button{margin-bottom:15px}.field-visibility-settings label{clear:right;display:block;margin-bottom:1em}#normal-sortables .field-visibility-settings legend{font-size:14px;font-weight:600}#your-profile .bp-profile-field legend{float:right;font-size:14px;font-weight:600;line-height:1.4;margin-bottom:1em;text-align:right;vertical-align:middle;width:192px}.bp-profile-field .radio .clear-value{margin-top:10px}@media screen and (max-width:782px){#your-profile .bp-profile-field legend{float:none;clear:right;display:block;margin-bottom:12px}#your-profile .field_type_multiselectbox select{height:auto}.field_type_checkbox label,.field_type_radio label{margin-right:0}.bp-profile-field .checkbox input[type=checkbox],.bp-profile-field .radio input[type=radio]{vertical-align:top}.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{clear:right;margin-right:50px}.field-visibility-settings{margin-right:100px}#your-profile .field_multiselectbox select{height:auto}}@media screen and (max-width:480px){.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin-right:0}.field-visibility-settings{margin-right:50px}} \ No newline at end of file +div#profile-page.wrap form#your-profile{position:relative;padding-top:50px}div#profile-page.wrap form#your-profile h3:first-of-type{margin-top:5em}div#profile-page.wrap form#your-profile #profile-nav{position:absolute;top:0;width:97%}div#community-profile-page #profile-nav{margin-bottom:1em}#bp_members_admin_user_stats ul{margin-bottom:0}div#community-profile-page a.bp-xprofile-avatar-user-admin:before,div#community-profile-page a.bp-xprofile-avatar-user-edit:before,div#community-profile-page li.bp-blogs-profile-stats:before,div#community-profile-page li.bp-friends-profile-stats:before,div#community-profile-page li.bp-groups-profile-stats:before,div#community-profile-page li.bp-members-profile-stats:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:0;right:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div#community-profile-page li.bp-members-profile-stats:before{content:"\f130"}div#community-profile-page li.bp-friends-profile-stats:before{content:"\f454"}div#community-profile-page li.bp-groups-profile-stats:before{content:"\f456"}div#community-profile-page li.bp-blogs-profile-stats:before{content:"\f120"}div#community-profile-page a.bp-xprofile-avatar-user-admin:before{content:"\f182"}div#community-profile-page a.bp-xprofile-avatar-user-edit:before{content:"\f107"}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar{width:150px;margin:0 auto}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar img{max-width:100%;height:auto}div#community-profile-page div#bp_xprofile_user_admin_avatar a{display:block;margin:1em 0}div#community-profile-page p.not-activated{margin:1em 1em 0;color:red}#community-profile-page #submitdiv #publishing-action{float:none;width:100%}.bp-view-profile{float:right}.alt{background:0 0}.bp-profile-field{border-bottom:dotted 1px #ccc;font-size:14px;margin:15px 0;padding:10px}.bp-profile-field:last-child{border-bottom:0}.bp-profile-field p{font-size:14px}.field_type_checkbox .checkbox legend,.field_type_multiselectbox legend,.field_type_radio .radio legend,.field_type_textarea legend{vertical-align:top}.bp-profile-field .description{margin:10px 200px 12px 0;text-align:right}.bp-profile-field .wp-editor-wrap{margin-right:200px}.field_type_checkbox .description,.field_type_datebox .description,.field_type_radio .description{margin-top:0}.clear-value{display:block;font-size:12px;margin-right:200px}.field_type_checkbox label,.field_type_radio label{display:block;margin-bottom:1em;margin-right:200px;width:auto}.field_type_checkbox .radio label,.field_type_radio .radio label{margin-right:0}.field_type_datebox .datebox-selects{margin-right:200px}.field_type_datebox select:nth-of-type(1){margin-right:0}.field_type_checkbox .checkbox .input-options label,.field_type_radio .radio .input-options label{display:block}.field_type_checkbox .checkbox .input-options,.field_type_datebox .datebox .input-options,.field_type_radio .radio .input-options{display:inline-block}.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin:10px 200px 10px 0;text-align:right}.field-visibility-settings{display:none;margin-right:200px;margin-top:1.5em}.field-visibility-settings .button{margin-bottom:15px}.field-visibility-settings label{clear:right;display:block;margin-bottom:1em}#normal-sortables .field-visibility-settings legend{font-size:14px;font-weight:600}#your-profile .bp-profile-field legend{float:right;font-size:14px;font-weight:600;line-height:1.4;margin-bottom:1em;text-align:right;vertical-align:middle;width:192px}.bp-profile-field .radio .clear-value{margin-top:10px}@media screen and (max-width:782px){#your-profile .bp-profile-field legend{float:none;clear:right;display:block;margin-bottom:12px}#your-profile .field_type_multiselectbox select{height:auto}.field_type_checkbox label,.field_type_radio label{margin-right:0}.bp-profile-field .checkbox input[type=checkbox],.bp-profile-field .radio input[type=radio]{vertical-align:top}.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{clear:right;margin-right:50px}.field_type_datebox .datebox-selects{margin-right:0}.field-visibility-settings{margin-right:50px}.field-visibility-settings input[type=radio]{margin-right:0}#your-profile .field_multiselectbox select{height:auto}}@media screen and (max-width:480px){.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin-right:0}.field-visibility-settings{margin-right:0}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/admin/css/admin.css b/wp-content/plugins/buddypress/bp-members/admin/css/admin.css index 860be0754a7f7c023e639b882e3d12f7c574a700..dafa5d0977e475c76fc91c02fd42b6821b9a9838 100644 --- a/wp-content/plugins/buddypress/bp-members/admin/css/admin.css +++ b/wp-content/plugins/buddypress/bp-members/admin/css/admin.css @@ -154,10 +154,19 @@ div#community-profile-page p.not-activated { width: auto; } -.field_type_datebox select:nth-of-type(1) { +.field_type_checkbox .radio label, +.field_type_radio .radio label { + margin-left: 0; +} + +.field_type_datebox .datebox-selects { margin-left: 200px; } +.field_type_datebox select:nth-of-type(1) { + margin-left: 0; +} + .field_type_radio .radio .input-options label, .field_type_checkbox .checkbox .input-options label { @@ -183,6 +192,7 @@ div#community-profile-page p.not-activated { .field-visibility-settings { /* visibility settings go in the left column */ display: none; margin-left: 200px; + margin-top: 1.5em; } .field-visibility-settings .button { /* visibility setting close button */ @@ -254,8 +264,16 @@ div#community-profile-page p.not-activated { margin-left: 50px; } + .field_type_datebox .datebox-selects { + margin-left: 0; + } + .field-visibility-settings { - margin-left: 100px; + margin-left: 50px; + } + + .field-visibility-settings input[type="radio"] { + margin-left: 0; } #your-profile .field_multiselectbox select { @@ -281,6 +299,6 @@ div#community-profile-page p.not-activated { } .field-visibility-settings { - margin-left: 50px; + margin-left: 0; } } diff --git a/wp-content/plugins/buddypress/bp-members/admin/css/admin.min.css b/wp-content/plugins/buddypress/bp-members/admin/css/admin.min.css index 8345d97643d0461b7b2937dbae8200e0bb7be8d8..9f0be47d49f180ebe747fee9c71760aa03686eef 100644 --- a/wp-content/plugins/buddypress/bp-members/admin/css/admin.min.css +++ b/wp-content/plugins/buddypress/bp-members/admin/css/admin.min.css @@ -1 +1 @@ -div#profile-page.wrap form#your-profile{position:relative;padding-top:50px}div#profile-page.wrap form#your-profile h3:first-of-type{margin-top:5em}div#profile-page.wrap form#your-profile #profile-nav{position:absolute;top:0;width:97%}div#community-profile-page #profile-nav{margin-bottom:1em}#bp_members_admin_user_stats ul{margin-bottom:0}div#community-profile-page a.bp-xprofile-avatar-user-admin:before,div#community-profile-page a.bp-xprofile-avatar-user-edit:before,div#community-profile-page li.bp-blogs-profile-stats:before,div#community-profile-page li.bp-friends-profile-stats:before,div#community-profile-page li.bp-groups-profile-stats:before,div#community-profile-page li.bp-members-profile-stats:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:0;left:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div#community-profile-page li.bp-members-profile-stats:before{content:"\f130"}div#community-profile-page li.bp-friends-profile-stats:before{content:"\f454"}div#community-profile-page li.bp-groups-profile-stats:before{content:"\f456"}div#community-profile-page li.bp-blogs-profile-stats:before{content:"\f120"}div#community-profile-page a.bp-xprofile-avatar-user-admin:before{content:"\f182"}div#community-profile-page a.bp-xprofile-avatar-user-edit:before{content:"\f107"}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar{width:150px;margin:0 auto}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar img{max-width:100%;height:auto}div#community-profile-page div#bp_xprofile_user_admin_avatar a{display:block;margin:1em 0}div#community-profile-page p.not-activated{margin:1em 1em 0;color:red}#community-profile-page #submitdiv #publishing-action{float:none;width:100%}.bp-view-profile{float:left}.alt{background:0 0}.bp-profile-field{border-bottom:dotted 1px #ccc;font-size:14px;margin:15px 0;padding:10px}.bp-profile-field:last-child{border-bottom:0}.bp-profile-field p{font-size:14px}.field_type_checkbox .checkbox legend,.field_type_multiselectbox legend,.field_type_radio .radio legend,.field_type_textarea legend{vertical-align:top}.bp-profile-field .description{margin:10px 0 12px 200px;text-align:left}.bp-profile-field .wp-editor-wrap{margin-left:200px}.field_type_checkbox .description,.field_type_datebox .description,.field_type_radio .description{margin-top:0}.clear-value{display:block;font-size:12px;margin-left:200px}.field_type_checkbox label,.field_type_radio label{display:block;margin-bottom:1em;margin-left:200px;width:auto}.field_type_datebox select:nth-of-type(1){margin-left:200px}.field_type_checkbox .checkbox .input-options label,.field_type_radio .radio .input-options label{display:block}.field_type_checkbox .checkbox .input-options,.field_type_datebox .datebox .input-options,.field_type_radio .radio .input-options{display:inline-block}.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin:10px 0 10px 200px;text-align:left}.field-visibility-settings{display:none;margin-left:200px}.field-visibility-settings .button{margin-bottom:15px}.field-visibility-settings label{clear:left;display:block;margin-bottom:1em}#normal-sortables .field-visibility-settings legend{font-size:14px;font-weight:600}#your-profile .bp-profile-field legend{float:left;font-size:14px;font-weight:600;line-height:1.4;margin-bottom:1em;text-align:left;vertical-align:middle;width:192px}.bp-profile-field .radio .clear-value{margin-top:10px}@media screen and (max-width:782px){#your-profile .bp-profile-field legend{float:none;clear:left;display:block;margin-bottom:12px}#your-profile .field_type_multiselectbox select{height:auto}.field_type_checkbox label,.field_type_radio label{margin-left:0}.bp-profile-field .checkbox input[type=checkbox],.bp-profile-field .radio input[type=radio]{vertical-align:top}.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{clear:left;margin-left:50px}.field-visibility-settings{margin-left:100px}#your-profile .field_multiselectbox select{height:auto}}@media screen and (max-width:480px){.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin-left:0}.field-visibility-settings{margin-left:50px}} \ No newline at end of file +div#profile-page.wrap form#your-profile{position:relative;padding-top:50px}div#profile-page.wrap form#your-profile h3:first-of-type{margin-top:5em}div#profile-page.wrap form#your-profile #profile-nav{position:absolute;top:0;width:97%}div#community-profile-page #profile-nav{margin-bottom:1em}#bp_members_admin_user_stats ul{margin-bottom:0}div#community-profile-page a.bp-xprofile-avatar-user-admin:before,div#community-profile-page a.bp-xprofile-avatar-user-edit:before,div#community-profile-page li.bp-blogs-profile-stats:before,div#community-profile-page li.bp-friends-profile-stats:before,div#community-profile-page li.bp-groups-profile-stats:before,div#community-profile-page li.bp-members-profile-stats:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:0;left:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#888}div#community-profile-page li.bp-members-profile-stats:before{content:"\f130"}div#community-profile-page li.bp-friends-profile-stats:before{content:"\f454"}div#community-profile-page li.bp-groups-profile-stats:before{content:"\f456"}div#community-profile-page li.bp-blogs-profile-stats:before{content:"\f120"}div#community-profile-page a.bp-xprofile-avatar-user-admin:before{content:"\f182"}div#community-profile-page a.bp-xprofile-avatar-user-edit:before{content:"\f107"}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar{width:150px;margin:0 auto}div#community-profile-page div#bp_xprofile_user_admin_avatar div.avatar img{max-width:100%;height:auto}div#community-profile-page div#bp_xprofile_user_admin_avatar a{display:block;margin:1em 0}div#community-profile-page p.not-activated{margin:1em 1em 0;color:red}#community-profile-page #submitdiv #publishing-action{float:none;width:100%}.bp-view-profile{float:left}.alt{background:0 0}.bp-profile-field{border-bottom:dotted 1px #ccc;font-size:14px;margin:15px 0;padding:10px}.bp-profile-field:last-child{border-bottom:0}.bp-profile-field p{font-size:14px}.field_type_checkbox .checkbox legend,.field_type_multiselectbox legend,.field_type_radio .radio legend,.field_type_textarea legend{vertical-align:top}.bp-profile-field .description{margin:10px 0 12px 200px;text-align:left}.bp-profile-field .wp-editor-wrap{margin-left:200px}.field_type_checkbox .description,.field_type_datebox .description,.field_type_radio .description{margin-top:0}.clear-value{display:block;font-size:12px;margin-left:200px}.field_type_checkbox label,.field_type_radio label{display:block;margin-bottom:1em;margin-left:200px;width:auto}.field_type_checkbox .radio label,.field_type_radio .radio label{margin-left:0}.field_type_datebox .datebox-selects{margin-left:200px}.field_type_datebox select:nth-of-type(1){margin-left:0}.field_type_checkbox .checkbox .input-options label,.field_type_radio .radio .input-options label{display:block}.field_type_checkbox .checkbox .input-options,.field_type_datebox .datebox .input-options,.field_type_radio .radio .input-options{display:inline-block}.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin:10px 0 10px 200px;text-align:left}.field-visibility-settings{display:none;margin-left:200px;margin-top:1.5em}.field-visibility-settings .button{margin-bottom:15px}.field-visibility-settings label{clear:left;display:block;margin-bottom:1em}#normal-sortables .field-visibility-settings legend{font-size:14px;font-weight:600}#your-profile .bp-profile-field legend{float:left;font-size:14px;font-weight:600;line-height:1.4;margin-bottom:1em;text-align:left;vertical-align:middle;width:192px}.bp-profile-field .radio .clear-value{margin-top:10px}@media screen and (max-width:782px){#your-profile .bp-profile-field legend{float:none;clear:left;display:block;margin-bottom:12px}#your-profile .field_type_multiselectbox select{height:auto}.field_type_checkbox label,.field_type_radio label{margin-left:0}.bp-profile-field .checkbox input[type=checkbox],.bp-profile-field .radio input[type=radio]{vertical-align:top}.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{clear:left;margin-left:50px}.field_type_datebox .datebox-selects{margin-left:0}.field-visibility-settings{margin-left:50px}.field-visibility-settings input[type=radio]{margin-left:0}#your-profile .field_multiselectbox select{height:auto}}@media screen and (max-width:480px){.bp-profile-field .clear-value,.bp-profile-field .description,.bp-profile-field .wp-editor-wrap,.bp-profile-field input[type=checkbox],.bp-profile-field input[type=email],.bp-profile-field input[type=number],.bp-profile-field input[type=radio],.bp-profile-field input[type=text],.bp-profile-field input[type=url],.bp-profile-field select:nth-of-type(1),.field-visibility-settings-notoggle,.field-visibility-settings-toggle{margin-left:0}.field-visibility-settings{margin-left:0}} \ No newline at end of file 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 4f74a0d2e2b639a7b07b01f45f9a9da9ae30c000..85d02d62ab6a70d9eb2a56a0793d0e61a33bd7e8 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-functions.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-functions.php @@ -214,19 +214,8 @@ function bp_core_get_core_userdata( $user_id = 0 ) { return false; } - $userdata = wp_cache_get( 'bp_core_userdata_' . $user_id, 'bp' ); - - // No cache. - if ( false === $userdata ) { - $userdata = BP_Core_User::get_core_userdata( $user_id ); - - // Cache data; no-result is cached as integer 0. - wp_cache_set( 'bp_core_userdata_' . $user_id, false === $userdata ? 0 : $userdata, 'bp' ); - - // Cached no-result, so set return value as false as expected. - } elseif ( 0 === $userdata ) { - $userdata = false; - } + // Get core user data + $userdata = BP_Core_User::get_core_userdata( $user_id ); /** * Filters the userdata for a passed user. @@ -315,66 +304,19 @@ function bp_core_get_userid_from_nicename( $user_nicename = '' ) { * @param int $user_id User ID to check. * @param string|bool $user_nicename Optional. user_nicename of user being checked. * @param string|bool $user_login Optional. user_login of user being checked. - * @return string|bool The username of the matched user, or false. + * @return string The username of the matched user or an empty string if no user is found. */ function bp_core_get_username( $user_id = 0, $user_nicename = false, $user_login = false ) { - $bp = buddypress(); - - // Check cache for user nicename. - $username = wp_cache_get( 'bp_user_username_' . $user_id, 'bp' ); - if ( false === $username ) { - - // Cache not found so prepare to update it. - $update_cache = true; - - // Nicename and login were not passed. - if ( empty( $user_nicename ) && empty( $user_login ) ) { - - // User ID matches logged in user. - if ( bp_loggedin_user_id() == $user_id ) { - $userdata = &$bp->loggedin_user->userdata; - - // User ID matches displayed in user. - } elseif ( bp_displayed_user_id() == $user_id ) { - $userdata = &$bp->displayed_user->userdata; - - // No user ID match. - } else { - $userdata = false; - } - - // No match so go dig. - if ( empty( $userdata ) ) { - - // User not found so return false. - if ( !$userdata = bp_core_get_core_userdata( $user_id ) ) { - return false; - } - } - - // Update the $user_id for later. - $user_id = $userdata->ID; - - // Two possible options. - $user_nicename = $userdata->user_nicename; - $user_login = $userdata->user_login; - } + if ( ! $user_nicename && ! $user_login ) { // Pull an audible and maybe use the login over the nicename. - $username = bp_is_username_compatibility_mode() ? $user_login : $user_nicename; - - // Username found in cache so don't update it again. + if ( bp_is_username_compatibility_mode() ) { + $username = get_the_author_meta( 'login', $user_id ); + } else { + $username = get_the_author_meta( 'nicename', $user_id ); + } } else { - $update_cache = false; - } - - // Add this to cache. - if ( ( true === $update_cache ) && !empty( $username ) ) { - wp_cache_set( 'bp_user_username_' . $user_id, $username, 'bp' ); - - // @todo bust this cache if no $username found? - // } else { - // wp_cache_delete( 'bp_user_username_' . $user_id ); + $username = bp_is_username_compatibility_mode() ? $user_login : $user_nicename; } /** @@ -395,52 +337,10 @@ function bp_core_get_username( $user_id = 0, $user_nicename = false, $user_login * * @since 1.5.0 * - * @todo Refactor to use a WP core function, if possible. - * * @param int $user_id User ID to check. - * @return string|bool The username of the matched user, or false. + * @return string The username of the matched user or an empty string if no user is found. */ function bp_members_get_user_nicename( $user_id ) { - $bp = buddypress(); - - if ( !$user_nicename = wp_cache_get( 'bp_members_user_nicename_' . $user_id, 'bp' ) ) { - $update_cache = true; - - // User ID matches logged in user. - if ( bp_loggedin_user_id() == $user_id ) { - $userdata = &$bp->loggedin_user->userdata; - - // User ID matches displayed in user. - } elseif ( bp_displayed_user_id() == $user_id ) { - $userdata = &$bp->displayed_user->userdata; - - // No user ID match. - } else { - $userdata = false; - } - - // No match so go dig. - if ( empty( $userdata ) ) { - - // User not found so return false. - if ( !$userdata = bp_core_get_core_userdata( $user_id ) ) { - return false; - } - } - - // User nicename found. - $user_nicename = $userdata->user_nicename; - - // Nicename found in cache so don't update it again. - } else { - $update_cache = false; - } - - // Add this to cache. - if ( true == $update_cache && !empty( $user_nicename ) ) { - wp_cache_set( 'bp_members_user_nicename_' . $user_id, $user_nicename, 'bp' ); - } - /** * Filters the user_nicename based on originally provided user ID. * @@ -448,7 +348,7 @@ function bp_members_get_user_nicename( $user_id ) { * * @param string $username User nice name determined by user ID. */ - return apply_filters( 'bp_members_get_user_nicename', $user_nicename ); + return apply_filters( 'bp_members_get_user_nicename', get_the_author_meta( 'nicename', $user_id ) ); } /** @@ -458,25 +358,9 @@ function bp_members_get_user_nicename( $user_id ) { * * @param int $uid User ID to check. * @return string The email for the matched user. Empty string if no user - * matched the $uid. + * matches the $user_id. */ -function bp_core_get_user_email( $uid ) { - - if ( !$email = wp_cache_get( 'bp_user_email_' . $uid, 'bp' ) ) { - - // User exists. - $ud = bp_core_get_core_userdata( $uid ); - if ( ! empty( $ud ) ) { - $email = $ud->user_email; - - // User was deleted. - } else { - $email = ''; - } - - wp_cache_set( 'bp_user_email_' . $uid, $email, 'bp' ); - } - +function bp_core_get_user_email( $user_id ) { /** * Filters the user email for user based on user ID. * @@ -484,7 +368,7 @@ function bp_core_get_user_email( $uid ) { * * @param string $email Email determined for the user. */ - return apply_filters( 'bp_core_get_user_email', $email ); + return apply_filters( 'bp_core_get_user_email', get_the_author_meta( 'email', $user_id ) ); } /** @@ -543,7 +427,7 @@ function bp_core_get_userlink( $user_id, $no_anchor = false, $just_link = false * @since 2.0.0 * * @param array $user_ids Array of user IDs to get display names for. - * @return array + * @return array Associative array of the format "id" => "displayname". */ function bp_core_get_user_displaynames( $user_ids ) { @@ -557,62 +441,12 @@ function bp_core_get_user_displaynames( $user_ids ) { return array(); } - $uncached_ids = array(); - foreach ( $user_ids as $user_id ) { - if ( false === wp_cache_get( 'bp_user_fullname_' . $user_id, 'bp' ) ) { - $uncached_ids[] = $user_id; - } - } - - // Prime caches. - if ( ! empty( $uncached_ids ) ) { - if ( bp_is_active( 'xprofile' ) ) { - $fullname_data = BP_XProfile_ProfileData::get_value_byid( 1, $uncached_ids ); - - // Key by user_id. - $fullnames = array(); - foreach ( $fullname_data as $fd ) { - if ( ! empty( $fd->value ) ) { - $fullnames[ intval( $fd->user_id ) ] = $fd->value; - } - } - - // If xprofiledata is not found for any users, we'll look - // them up separately. - $no_xprofile_ids = array_diff( $uncached_ids, array_keys( $fullnames ) ); - } else { - $fullnames = array(); - $no_xprofile_ids = $user_ids; - } - - if ( ! empty( $no_xprofile_ids ) ) { - // Use WP_User_Query because we don't need BP information. - $query = new WP_User_Query( array( - 'include' => $no_xprofile_ids, - 'fields' => array( 'ID', 'user_nicename', 'display_name', ), - 'count_total' => false, - 'blog_id' => 0, - ) ); - - foreach ( $query->results as $qr ) { - $fullnames[ $qr->ID ] = ! empty( $qr->display_name ) ? $qr->display_name : $qr->user_nicename; - - // If xprofile is active, set this value as the - // xprofile display name as well. - if ( bp_is_active( 'xprofile' ) ) { - xprofile_set_field_data( 1, $qr->ID, $fullnames[ $qr->ID ] ); - } - } - } - - foreach ( $fullnames as $fuser_id => $fname ) { - wp_cache_set( 'bp_user_fullname_' . $fuser_id, $fname, 'bp' ); - } - } + // Warm the WP users cache with a targeted bulk update. + cache_users( $user_ids ); $retval = array(); foreach ( $user_ids as $user_id ) { - $retval[ $user_id ] = wp_cache_get( 'bp_user_fullname_' . $user_id, 'bp' ); + $retval[ $user_id ] = bp_core_get_user_displayname( $user_id ); } return $retval; @@ -642,14 +476,6 @@ function bp_core_get_user_displayname( $user_id_or_username ) { return false; } - $display_names = bp_core_get_user_displaynames( array( $user_id ) ); - - if ( ! isset( $display_names[ $user_id ] ) ) { - $fullname = false; - } else { - $fullname = $display_names[ $user_id ]; - } - /** * Filters the display name for the passed in user. * @@ -658,7 +484,7 @@ function bp_core_get_user_displayname( $user_id_or_username ) { * @param string $fullname Display name for the user. * @param int $user_id ID of the user to check. */ - return apply_filters( 'bp_core_get_user_displayname', $fullname, $user_id ); + return apply_filters( 'bp_core_get_user_displayname', get_the_author_meta( 'display_name', $user_id ), $user_id ); } add_filter( 'bp_core_get_user_displayname', 'strip_tags', 1 ); add_filter( 'bp_core_get_user_displayname', 'trim' ); @@ -981,6 +807,11 @@ function bp_is_user_spammer( $user_id = 0 ) { case bp_displayed_user_id() : $user = ! empty( $bp->displayed_user->userdata ) ? $bp->displayed_user->userdata : false; break; + + case bp_get_member_user_id() : + global $members_template; + $user = isset( $members_template ) && isset( $members_template->member ) ? $members_template->member : false; + break; } // Manually get userdata if still empty. @@ -1175,7 +1006,7 @@ function bp_update_user_last_activity( $user_id = 0, $time = '' ) { 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, 3 ); + add_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10, 4 ); return BP_Core_User::update_last_activity( $user_id, $time ); } @@ -1189,15 +1020,17 @@ function bp_update_user_last_activity( $user_id = 0, $time = '' ) { * the data from the proper location. * * @since 2.0.0 + * @since 2.9.3 Added the `$single` parameter. * * @access private For internal use only. * * @param null $retval Null retval value. * @param int $object_id ID of the user. * @param string $meta_key Meta key being fetched. + * @param bool $single Whether a single key is being fetched (vs an array). * @return string|null */ -function _bp_get_user_meta_last_activity_warning( $retval, $object_id, $meta_key ) { +function _bp_get_user_meta_last_activity_warning( $retval, $object_id, $meta_key, $single ) { static $warned = false; if ( 'last_activity' === $meta_key ) { @@ -1207,12 +1040,17 @@ function _bp_get_user_meta_last_activity_warning( $retval, $object_id, $meta_key $warned = true; } - return bp_get_user_last_activity( $object_id ); + $user_last_activity = bp_get_user_last_activity( $object_id ); + if ( $single ) { + return $user_last_activity; + } else { + return array( $user_last_activity ); + } } return $retval; } -add_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10, 3 ); +add_filter( 'get_user_metadata', '_bp_get_user_meta_last_activity_warning', 10, 4 ); /** * Backward compatibility for 'last_activity' usermeta setting. @@ -1584,11 +1422,23 @@ function bp_core_get_illegal_names( $value = '', $oldvalue = '' ) { */ $filtered_illegal_names = apply_filters( 'bp_core_illegal_usernames', array_merge( array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' ), $bp_component_slugs ) ); - // Merge the arrays together. - $merged_names = array_merge( (array) $filtered_illegal_names, (array) $db_illegal_names ); + /** + * Filters the list of illegal usernames from WordPress. + * + * @since 3.0 + * + * @param array Array of illegal usernames. + */ + $wp_filtered_illegal_names = apply_filters( 'illegal_user_logins', array() ); + + // First merge BuddyPress illegal names. + $bp_merged_names = array_merge( (array) $filtered_illegal_names, (array) $db_illegal_names ); + + // Then merge WordPress and BuddyPress illegal names. + $merged_names = array_merge( (array) $wp_filtered_illegal_names, (array) $bp_merged_names ); // Remove duplicates. - $illegal_names = array_unique( (array) $merged_names ); + $illegal_names = array_unique( (array) $merged_names ); /** * Filters the array of default illegal names. @@ -2007,9 +1857,6 @@ function bp_core_activate_signup( $key ) { bp_delete_user_meta( $user_id, 'activation_key' ); - $member = get_userdata( $user_id ); - $member->set_role( get_option('default_role') ); - $user_already_created = true; } else { @@ -2041,8 +1888,16 @@ function bp_core_activate_signup( $key ) { 'meta' => $signup->meta, ); - // Notify the site admin of a new user registration. - wp_new_user_notification( $user_id ); + /** + * Maybe notify the site admin of a new user registration. + * + * @since 1.2.2 + * + * @param bool $notification Whether to send the notification or not. + */ + if ( apply_filters( 'bp_core_send_user_registration_admin_notification', true ) ) { + wp_new_user_notification( $user_id ); + } if ( isset( $user_already_created ) ) { @@ -2123,6 +1978,29 @@ function bp_core_activate_signup( $key ) { return $user_id; } +/** + * Add default WordPress role for new signups on the BP root blog. + * + * @since 3.0.0 + * + * @param int $user_id The user ID to add the default role for. + */ +function bp_members_add_role_after_activation( $user_id ) { + // Get default role to add. + $role = bp_get_option( 'default_role' ); + + // Multisite. + if ( is_multisite() && ! is_user_member_of_blog( $user_id, bp_get_root_blog_id() ) ) { + add_user_to_blog( bp_get_root_blog_id(), $user_id, $role ); + + // Single-site. + } elseif ( ! is_multisite() ) { + $member = get_userdata( $user_id ); + $member->set_role( $role ); + } +} +add_action( 'bp_core_activated_user', 'bp_members_add_role_after_activation', 1 ); + /** * Migrate signups from pre-2.0 configuration to wp_signups. * 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 b94cb30331cc26a9b96f1392bcdb33d9f5a0f633..81cf9407563ec5136db99894f05a0e5639a42e6e 100644 --- a/wp-content/plugins/buddypress/bp-members/bp-members-template.php +++ b/wp-content/plugins/buddypress/bp-members/bp-members-template.php @@ -2117,6 +2117,34 @@ function bp_activation_page() { return apply_filters( 'bp_get_activation_page', $page ); } +/** + * Get the activation key from the current request URL. + * + * @since 3.0.0 + * + * @return string + */ +function bp_get_current_activation_key() { + $key = ''; + + if ( bp_is_current_component( 'activate' ) ) { + if ( isset( $_GET['key'] ) ) { + $key = wp_unslash( $_GET['key'] ); + } else { + $key = bp_current_action(); + } + } + + /** + * Filters the activation key from the current request URL. + * + * @since 3.0.0 + * + * @param string $key Activation key. + */ + return apply_filters( 'bp_get_current_activation_key', $key ); +} + /** * Output the username submitted during signup. * 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 e51e912fae85ba6b5b5b8956a03ca41c572f7e93..fe410e5be314193ed006f76e3d79abba0b6f32a0 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 @@ -404,7 +404,7 @@ class BP_Members_Admin { case 2: $notice = array( 'class' => 'error', - 'message' => __( 'Please make sure you fill in all required fields in this profile field group before saving.', 'buddypress' ) + 'message' => __( 'Your changes have not been saved. Please fill in all required fields, and save your changes again.', 'buddypress' ) ); break; case 3: @@ -946,22 +946,46 @@ class BP_Members_Admin { <?php endif; ?> <div class="wrap" id="community-profile-page"> - <h1><?php echo esc_html( $title ); ?> + <?php if ( version_compare( $GLOBALS['wp_version'], '4.8', '>=' ) ) : ?> + + <h1 class="wp-heading-inline"><?php echo esc_html( $title ); ?></h1> <?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> + <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="add-new-h2"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> + <a href="user-new.php" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user', 'buddypress' ); ?></a> <?php endif; ?> <?php endif; ?> - </h1> + + <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; ?> <?php if ( ! empty( $user ) ) : @@ -1201,7 +1225,7 @@ class BP_Members_Admin { check_admin_referer( 'bp-member-type-change-' . $user_id, 'bp-member-type-nonce' ); // Permission check. - if ( ! current_user_can( 'bp_moderate' ) && $user_id != bp_loggedin_user_id() ) { + if ( ! bp_current_user_can( 'bp_moderate' ) && $user_id != bp_loggedin_user_id() ) { return; } @@ -1520,16 +1544,14 @@ class BP_Members_Admin { ); // Add accessible hidden headings and text for the Pending Users screen. - if ( bp_get_major_wp_version() >= 4.4 ) { - get_current_screen()->set_screen_reader_content( array( - /* translators: accessibility text */ - 'heading_views' => __( 'Filter users list', 'buddypress' ), - /* translators: accessibility text */ - 'heading_pagination' => __( 'Pending users list navigation', 'buddypress' ), - /* translators: accessibility text */ - 'heading_list' => __( 'Pending users list', 'buddypress' ), - ) ); - } + get_current_screen()->set_screen_reader_content( array( + /* translators: accessibility text */ + 'heading_views' => __( 'Filter users list', 'buddypress' ), + /* translators: accessibility text */ + 'heading_pagination' => __( 'Pending users list navigation', 'buddypress' ), + /* translators: accessibility text */ + 'heading_list' => __( 'Pending users list', 'buddypress' ), + ) ); } else { if ( ! empty( $_REQUEST['signup_ids' ] ) ) { @@ -1924,24 +1946,49 @@ class BP_Members_Admin { ?> <div class="wrap"> - <h1><?php _e( 'Users', 'buddypress' ); ?> + <?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' ) ) : ?> - <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 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> + <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 ) ); } - ?> - </h1> + + <hr class="wp-header-end"> + + <?php else : ?> + + <h1><?php _e( 'Users', 'buddypress' ); ?> + + <?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; + + if ( $usersearch ) { + printf( '<span class="subtitle">' . __( 'Search results for “%s”', 'buddypress' ) . '</span>', esc_html( $usersearch ) ); + } + + ?> + </h1> + + <?php endif; ?> <?php // Display each signups on its own row. ?> <?php $bp_members_signup_list_table->views(); ?> @@ -2050,15 +2097,16 @@ class BP_Members_Admin { // Prefetch registration field data. $fdata = array(); if ( 'activate' === $action && bp_is_active( 'xprofile' ) ) { - $fields = bp_xprofile_get_groups( array( - 'profile_group_id' => 1, - 'exclude_fields' => 1, + $field_groups = bp_xprofile_get_groups( array( + 'exclude_fields' => 1, 'update_meta_cache' => false, - 'fetch_fields' => true, + 'fetch_fields' => true, ) ); - $fields = $fields[0]->fields; - foreach( $fields as $f ) { - $fdata[ $f->id ] = $f->name; + + foreach( $field_groups as $fg ) { + foreach( $fg->fields as $f ) { + $fdata[ $f->id ] = $f->name; + } } } 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 0bc5a1277b69dec02313ae7e14fbd7513001a4f6..01659b3a28deda31d6c1ffe1010f4b2ca5c8de29 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 @@ -57,9 +57,7 @@ class BP_Members_Component extends BP_Component { // Always include these files. $includes = array( - 'actions', 'filters', - 'screens', 'template', 'adminbar', 'functions', @@ -79,6 +77,55 @@ class BP_Members_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Members. + if ( bp_is_members_component() ) { + // Actions - Random member handler. + if ( isset( $_GET['random-member'] ) ) { + require $this->path . 'bp-members/actions/random.php'; + } + + // Screens - Directory. + if ( bp_is_members_directory() ) { + require $this->path . 'bp-members/screens/directory.php'; + } + } + + // Members - User main nav screen. + if ( bp_is_user() ) { + require $this->path . 'bp-members/screens/profile.php'; + } + + // Members - Theme compatibility. + if ( bp_is_members_component() || bp_is_user() ) { + new BP_Members_Theme_Compat(); + } + + // Registration / Activation. + if ( bp_is_register_page() || bp_is_activation_page() ) { + if ( bp_is_register_page() ) { + require $this->path . 'bp-members/screens/register.php'; + } else { + require $this->path . 'bp-members/screens/activate.php'; + } + + // Theme compatibility. + new BP_Registration_Theme_Compat(); + } + } + /** * Set up bp-members global settings. * diff --git a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-theme-compat.php b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-theme-compat.php index e9a6c4a6889cf1fa32dbf50de768ea1d54bcc85e..d421c33399471dd47bcf1d7c951cf5fcf1d45e63 100644 --- a/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-theme-compat.php +++ b/wp-content/plugins/buddypress/bp-members/classes/class-bp-members-theme-compat.php @@ -41,23 +41,8 @@ class BP_Members_Theme_Compat { return; } - // Members Directory. - if ( ! bp_current_action() && ! bp_current_item() ) { - bp_update_is_directory( true, 'members' ); - - /** - * Fires if looking at Members directory when needing theme compat. - * - * @since 1.5.0 - */ - do_action( 'bp_members_screen_index' ); - - add_filter( 'bp_get_buddypress_template', array( $this, 'directory_template_hierarchy' ) ); - add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'directory_dummy_post' ) ); - add_filter( 'bp_replace_the_content', array( $this, 'directory_content' ) ); - // User page. - } elseif ( bp_is_user() ) { + if ( bp_is_user() ) { // If we're on a single activity permalink page, we shouldn't use the members // template, so stop here! @@ -76,6 +61,20 @@ class BP_Members_Theme_Compat { add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'single_dummy_post' ) ); add_filter( 'bp_replace_the_content', array( $this, 'single_dummy_content' ) ); + // Members Directory. + } elseif ( ! bp_current_action() && ! bp_current_item() ) { + bp_update_is_directory( true, 'members' ); + + /** + * Fires if looking at Members directory when needing theme compat. + * + * @since 1.5.0 + */ + do_action( 'bp_members_screen_index' ); + + add_filter( 'bp_get_buddypress_template', array( $this, 'directory_template_hierarchy' ) ); + add_action( 'bp_template_include_reset_dummy_post_data', array( $this, 'directory_dummy_post' ) ); + add_filter( 'bp_replace_the_content', array( $this, 'directory_content' ) ); } } 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 769ea484146627eb384c03bc44f756948df0c119..c5249359db0735fb5a3e1676bb9f5bf195673109 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 @@ -132,9 +132,11 @@ class BP_Signup { * @type bool $include Whether or not to include more specific query params. * @type string $activation_key Activation key to search for. * @type string $user_login Specific user login to return. + * @type string $fields Which fields to return. Specify 'ids' to fetch a list of signups IDs. + * Default: 'all' (return BP_Signup objects). * } * @return array { - * @type array $signups Located signups. + * @type array $signups Located signups. (IDs only if `fields` is set to `ids`.) * @type int $total Total number of signups matching params. * } */ @@ -151,6 +153,7 @@ class BP_Signup { 'include' => false, 'activation_key' => '', 'user_login' => '', + 'fields' => 'all', ), 'bp_core_signups_get_args' ); @@ -213,46 +216,52 @@ class BP_Signup { return array( 'signups' => false, 'total' => false ); } - // Used to calculate a diff between now & last - // time an activation link has been resent. - $now = current_time( 'timestamp', true ); + // We only want the IDs. + if ( 'ids' === $r['fields'] ) { + $paged_signups = wp_list_pluck( $paged_signups, 'signup_id' ); + } else { - foreach ( (array) $paged_signups as $key => $signup ) { + // Used to calculate a diff between now & last + // time an activation link has been resent. + $now = current_time( 'timestamp', true ); - $signup->id = intval( $signup->signup_id ); + foreach ( (array) $paged_signups as $key => $signup ) { - $signup->meta = ! empty( $signup->meta ) ? maybe_unserialize( $signup->meta ) : false; + $signup->id = intval( $signup->signup_id ); - $signup->user_name = ''; - if ( ! empty( $signup->meta['field_1'] ) ) { - $signup->user_name = wp_unslash( $signup->meta['field_1'] ); - } + $signup->meta = ! empty( $signup->meta ) ? maybe_unserialize( $signup->meta ) : false; - // Sent date defaults to date of registration. - if ( ! empty( $signup->meta['sent_date'] ) ) { - $signup->date_sent = $signup->meta['sent_date']; - } else { - $signup->date_sent = $signup->registered; - } + $signup->user_name = ''; + if ( ! empty( $signup->meta['field_1'] ) ) { + $signup->user_name = wp_unslash( $signup->meta['field_1'] ); + } - $sent_at = mysql2date('U', $signup->date_sent ); - $diff = $now - $sent_at; + // Sent date defaults to date of registration. + if ( ! empty( $signup->meta['sent_date'] ) ) { + $signup->date_sent = $signup->meta['sent_date']; + } else { + $signup->date_sent = $signup->registered; + } - /** - * Add a boolean in case the last time an activation link - * has been sent happened less than a day ago. - */ - if ( $diff < 1 * DAY_IN_SECONDS ) { - $signup->recently_sent = true; - } + $sent_at = mysql2date('U', $signup->date_sent ); + $diff = $now - $sent_at; - if ( ! empty( $signup->meta['count_sent'] ) ) { - $signup->count_sent = absint( $signup->meta['count_sent'] ); - } else { - $signup->count_sent = 1; - } + /** + * Add a boolean in case the last time an activation link + * has been sent happened less than a day ago. + */ + if ( $diff < 1 * DAY_IN_SECONDS ) { + $signup->recently_sent = true; + } + + if ( ! empty( $signup->meta['count_sent'] ) ) { + $signup->count_sent = absint( $signup->meta['count_sent'] ); + } else { + $signup->count_sent = 1; + } - $paged_signups[ $key ] = $signup; + $paged_signups[ $key ] = $signup; + } } unset( $sql['limit'] ); @@ -271,7 +280,6 @@ class BP_Signup { $total_signups = $wpdb->get_var( apply_filters( 'bp_members_signups_count_query', join( ' ', $sql ), $sql, $args, $r ) ); return array( 'signups' => $paged_signups, 'total' => $total_signups ); - } /** diff --git a/wp-content/plugins/buddypress/bp-members/screens/activate.php b/wp-content/plugins/buddypress/bp-members/screens/activate.php new file mode 100644 index 0000000000000000000000000000000000000000..581a6fd7d350c9d0f6abc87e7cc553ac90dedfcd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/screens/activate.php @@ -0,0 +1,110 @@ +<?php +/** + * Members: Activate screen handler + * + * @package BuddyPress + * @subpackage MembersScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of the Activate screen. + * + * @since 1.1.0 + */ +function bp_core_screen_activation() { + + // Bail if not viewing the activation page. + if ( ! bp_is_current_component( 'activate' ) ) { + return false; + } + + // If the user is already logged in, redirect away from here. + if ( is_user_logged_in() ) { + + // If activation page is also front page, set to members directory to + // avoid an infinite loop. Otherwise, set to root domain. + $redirect_to = bp_is_component_front_page( 'activate' ) + ? bp_get_members_directory_permalink() + : bp_get_root_domain(); + + // Trailing slash it, as we expect these URL's to be. + $redirect_to = trailingslashit( $redirect_to ); + + /** + * Filters the URL to redirect logged in users to when visiting activation page. + * + * @since 1.9.0 + * + * @param string $redirect_to URL to redirect user to. + */ + $redirect_to = apply_filters( 'bp_loggedin_activate_page_redirect_to', $redirect_to ); + + // Redirect away from the activation page. + bp_core_redirect( $redirect_to ); + } + + // Get BuddyPress. + $bp = buddypress(); + + /** + * Filters the template to load for the Member activation page screen. + * + * @since 1.1.1 + * + * @param string $value Path to the Member activation template to load. + */ + bp_core_load_template( apply_filters( 'bp_core_template_activate', array( 'activate', 'registration/activate' ) ) ); +} +add_action( 'bp_screens', 'bp_core_screen_activation' ); + + +/** + * Catches and processes account activation requests. + * + * @since 3.0.0 + */ +function bp_members_action_activate_account() { + if ( ! bp_is_current_component( 'activate' ) ) { + return; + } + + if ( is_user_logged_in() ) { + return; + } + + if ( ! empty( $_POST['key'] ) ) { + $key = wp_unslash( $_POST['key'] ); + + // Backward compatibility with templates using `method="get"` in their activation forms. + } elseif ( ! empty( $_GET['key'] ) ) { + $key = wp_unslash( $_GET['key'] ); + } + + if ( empty( $key ) ) { + return; + } + + $bp = buddypress(); + + /** + * Filters the activation signup. + * + * @since 1.1.0 + * + * @param bool|int $value Value returned by activation. + * Integer on success, boolean on failure. + */ + $user = apply_filters( 'bp_core_activate_account', bp_core_activate_signup( $key ) ); + + // If there were errors, add a message and redirect. + if ( ! empty( $user->errors ) ) { + bp_core_add_message( $user->get_error_message(), 'error' ); + bp_core_redirect( trailingslashit( bp_get_root_domain() . '/' . $bp->pages->activate->slug ) ); + } + + bp_core_add_message( __( 'Your account is now active!', 'buddypress' ) ); + bp_core_redirect( add_query_arg( 'activated', '1', bp_get_activation_page() ) ); + +} +add_action( 'bp_actions', 'bp_members_action_activate_account' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/screens/directory.php b/wp-content/plugins/buddypress/bp-members/screens/directory.php new file mode 100644 index 0000000000000000000000000000000000000000..863da81bffaa2a5d8f4f7f70a88c1b8442c5fe67 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/screens/directory.php @@ -0,0 +1,36 @@ +<?php +/** + * Members: Directory screen handler + * + * @package BuddyPress + * @subpackage MembersScreens + * @since 3.0.0 + */ + +/** + * Handle the display of the members directory index. + * + * @since 1.5.0 + */ +function bp_members_screen_index() { + if ( bp_is_members_directory() ) { + bp_update_is_directory( true, 'members' ); + + /** + * Fires right before the loading of the Member directory index screen template file. + * + * @since 1.5.0 + */ + do_action( 'bp_members_screen_index' ); + + /** + * Filters the template to load for the Member directory page screen. + * + * @since 1.5.0 + * + * @param string $value Path to the member directory template to load. + */ + bp_core_load_template( apply_filters( 'bp_members_screen_index', 'members/index' ) ); + } +} +add_action( 'bp_screens', 'bp_members_screen_index' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/screens/profile.php b/wp-content/plugins/buddypress/bp-members/screens/profile.php new file mode 100644 index 0000000000000000000000000000000000000000..79606586f687e9b2d76dbfaadff3d9a48ec92548 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/screens/profile.php @@ -0,0 +1,32 @@ +<?php +/** + * Members: Profile screen handler + * + * @package BuddyPress + * @subpackage MembersScreens + * @since 3.0.0 + */ + +/** + * Handle the display of the profile page by loading the correct template file. + * + * @since 1.5.0 + */ +function bp_members_screen_display_profile() { + + /** + * Fires right before the loading of the Member profile screen template file. + * + * @since 1.5.0 + */ + do_action( 'bp_members_screen_display_profile' ); + + /** + * Filters the template to load for the Member profile page screen. + * + * @since 1.5.0 + * + * @param string $template Path to the Member template to load. + */ + bp_core_load_template( apply_filters( 'bp_members_screen_display_profile', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-members/screens/register.php b/wp-content/plugins/buddypress/bp-members/screens/register.php new file mode 100644 index 0000000000000000000000000000000000000000..fd92a63cd24dbefc87ec0f2f30ea6f06cab2fa13 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-members/screens/register.php @@ -0,0 +1,236 @@ +<?php +/** + * Members: Register screen handler + * + * @package BuddyPress + * @subpackage MembersScreens + * @since 3.0.0 + */ + +/** + * Handle the loading of the signup screen. + * + * @since 1.1.0 + */ +function bp_core_screen_signup() { + $bp = buddypress(); + + if ( ! bp_is_current_component( 'register' ) || bp_current_action() ) + return; + + // Not a directory. + bp_update_is_directory( false, 'register' ); + + // If the user is logged in, redirect away from here. + if ( is_user_logged_in() ) { + + $redirect_to = bp_is_component_front_page( 'register' ) + ? bp_get_members_directory_permalink() + : bp_get_root_domain(); + + /** + * Filters the URL to redirect logged in users to when visiting registration page. + * + * @since 1.5.1 + * + * @param string $redirect_to URL to redirect user to. + */ + bp_core_redirect( apply_filters( 'bp_loggedin_register_page_redirect_to', $redirect_to ) ); + + return; + } + + $bp->signup->step = 'request-details'; + + if ( !bp_get_signup_allowed() ) { + $bp->signup->step = 'registration-disabled'; + + // If the signup page is submitted, validate and save. + } elseif ( isset( $_POST['signup_submit'] ) && bp_verify_nonce_request( 'bp_new_signup' ) ) { + + /** + * Fires before the validation of a new signup. + * + * @since 2.0.0 + */ + do_action( 'bp_signup_pre_validate' ); + + // Check the base account details for problems. + $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'] ) ) + $bp->signup->errors['signup_username'] = $account_details['errors']->errors['user_name'][0]; + + 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' ); + + // 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' ); + + $bp->signup->username = $_POST['signup_username']; + $bp->signup->email = $_POST['signup_email']; + + // Now we've checked account details, we can check profile information. + if ( bp_is_active( 'xprofile' ) ) { + + // Make sure hidden field is passed and populated. + if ( isset( $_POST['signup_profile_field_ids'] ) && !empty( $_POST['signup_profile_field_ids'] ) ) { + + // Let's compact any profile field info into an array. + $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] ); + + // Loop through the posted fields formatting any datebox values then validate the field. + foreach ( (array) $profile_field_ids as $field_id ) { + bp_xprofile_maybe_format_datebox_post_data( $field_id ); + + // Trim post fields. + if ( isset( $_POST[ 'field_' . $field_id ] ) ) { + if ( is_array( $_POST[ 'field_' . $field_id ] ) ) { + $_POST[ 'field_' . $field_id ] = array_map( 'trim', $_POST[ 'field_' . $field_id ] ); + } else { + $_POST[ 'field_' . $field_id ] = trim( $_POST[ 'field_' . $field_id ] ); + } + } + + // Create errors for required fields without values. + if ( xprofile_check_is_required_field( $field_id ) && empty( $_POST[ 'field_' . $field_id ] ) && ! bp_current_user_can( 'bp_moderate' ) ) + $bp->signup->errors['field_' . $field_id] = __( 'This is a required field', 'buddypress' ); + } + + // This situation doesn't naturally occur so bounce to website root. + } else { + bp_core_redirect( bp_get_root_domain() ); + } + } + + // Finally, let's check the blog details, if the user wants a blog and blog creation is enabled. + if ( isset( $_POST['signup_with_blog'] ) ) { + $active_signup = bp_core_get_root_option( 'registration' ); + + if ( 'blog' == $active_signup || 'all' == $active_signup ) { + $blog_details = bp_core_validate_blog_signup( $_POST['signup_blog_url'], $_POST['signup_blog_title'] ); + + // If there are errors with blog details, set them for display. + if ( !empty( $blog_details['errors']->errors['blogname'] ) ) + $bp->signup->errors['signup_blog_url'] = $blog_details['errors']->errors['blogname'][0]; + + if ( !empty( $blog_details['errors']->errors['blog_title'] ) ) + $bp->signup->errors['signup_blog_title'] = $blog_details['errors']->errors['blog_title'][0]; + } + } + + /** + * Fires after the validation of a new signup. + * + * @since 1.1.0 + */ + do_action( 'bp_signup_validate' ); + + // Add any errors to the action for the field in the template for display. + if ( !empty( $bp->signup->errors ) ) { + foreach ( (array) $bp->signup->errors as $fieldname => $error_message ) { + /** + * Filters the error message in the loop. + * + * @since 1.5.0 + * + * @param string $value Error message wrapped in html. + */ + add_action( 'bp_' . $fieldname . '_errors', function() use ( $error_message ) { + echo apply_filters( 'bp_members_signup_error_message', "<div class=\"error\">" . $error_message . "</div>" ); + } ); + } + } else { + $bp->signup->step = 'save-details'; + + // No errors! Let's register those deets. + $active_signup = bp_core_get_root_option( 'registration' ); + + if ( 'none' != $active_signup ) { + + // Make sure the extended profiles module is enabled. + if ( bp_is_active( 'xprofile' ) ) { + // Let's compact any profile field info into usermeta. + $profile_field_ids = explode( ',', $_POST['signup_profile_field_ids'] ); + + /* + * Loop through the posted fields, formatting any + * datebox values, then add to usermeta. + */ + foreach ( (array) $profile_field_ids as $field_id ) { + bp_xprofile_maybe_format_datebox_post_data( $field_id ); + + if ( !empty( $_POST['field_' . $field_id] ) ) + $usermeta['field_' . $field_id] = $_POST['field_' . $field_id]; + + if ( !empty( $_POST['field_' . $field_id . '_visibility'] ) ) + $usermeta['field_' . $field_id . '_visibility'] = $_POST['field_' . $field_id . '_visibility']; + } + + // Store the profile field ID's in usermeta. + $usermeta['profile_field_ids'] = $_POST['signup_profile_field_ids']; + } + + // Hash and store the password. + $usermeta['password'] = wp_hash_password( $_POST['signup_password'] ); + + // If the user decided to create a blog, save those details to usermeta. + if ( 'blog' == $active_signup || 'all' == $active_signup ) + $usermeta['public'] = ( isset( $_POST['signup_blog_privacy'] ) && 'public' == $_POST['signup_blog_privacy'] ) ? true : false; + + /** + * Filters the user meta used for signup. + * + * @since 1.1.0 + * + * @param array $usermeta Array of user meta to add to signup. + */ + $usermeta = apply_filters( 'bp_signup_usermeta', $usermeta ); + + // Finally, sign up the user and/or blog. + if ( isset( $_POST['signup_with_blog'] ) && is_multisite() ) + $wp_user_id = bp_core_signup_blog( $blog_details['domain'], $blog_details['path'], $blog_details['blog_title'], $_POST['signup_username'], $_POST['signup_email'], $usermeta ); + else + $wp_user_id = bp_core_signup_user( $_POST['signup_username'], $_POST['signup_password'], $_POST['signup_email'], $usermeta ); + + if ( is_wp_error( $wp_user_id ) ) { + $bp->signup->step = 'request-details'; + bp_core_add_message( $wp_user_id->get_error_message(), 'error' ); + } else { + $bp->signup->step = 'completed-confirmation'; + } + } + + /** + * Fires after the completion of a new signup. + * + * @since 1.1.0 + */ + do_action( 'bp_complete_signup' ); + } + + } + + /** + * Fires right before the loading of the Member registration screen template file. + * + * @since 1.5.0 + */ + do_action( 'bp_core_screen_signup' ); + + /** + * Filters the template to load for the Member registration page screen. + * + * @since 1.5.0 + * + * @param string $value Path to the Member registration template to load. + */ + 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 diff --git a/wp-content/plugins/buddypress/bp-messages/actions/bulk-delete.php b/wp-content/plugins/buddypress/bp-messages/actions/bulk-delete.php new file mode 100644 index 0000000000000000000000000000000000000000..adf4c9e50b15b995b42bbb88551e55432d469e55 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/bulk-delete.php @@ -0,0 +1,39 @@ +<?php +/** + * Messages: Bulk-delete action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Process a request to bulk delete messages. + * + * @return bool False on failure. + */ +function messages_action_bulk_delete() { + + if ( ! bp_is_messages_component() || ! bp_is_action_variable( 'bulk-delete', 0 ) ) { + return false; + } + + $thread_ids = $_POST['thread_ids']; + + if ( !$thread_ids || !messages_check_thread_access( $thread_ids ) ) { + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ) ); + } else { + if ( !check_admin_referer( 'messages_delete_thread' ) ) { + return false; + } + + if ( !messages_delete_thread( $thread_ids ) ) { + bp_core_add_message( __('There was an error deleting messages.', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Messages deleted.', 'buddypress') ); + } + + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ) ); + } +} +add_action( 'bp_actions', 'messages_action_bulk_delete' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage-star.php b/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage-star.php new file mode 100644 index 0000000000000000000000000000000000000000..204739c94b8377db5149a6057b018f283dd27ea4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage-star.php @@ -0,0 +1,77 @@ +<?php +/** + * Messages: Bulk-manage star action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Bulk manage handler to set the star status for multiple messages. + * + * @since 2.3.0 + */ +function bp_messages_star_bulk_manage_handler() { + if ( empty( $_POST['messages_bulk_nonce' ] ) ) { + return; + } + + // Check the nonce. + if ( ! wp_verify_nonce( $_POST['messages_bulk_nonce'], 'messages_bulk_nonce' ) ) { + return; + } + + // Check capability. + if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { + return; + } + + $action = ! empty( $_POST['messages_bulk_action'] ) ? $_POST['messages_bulk_action'] : ''; + $threads = ! empty( $_POST['message_ids'] ) ? $_POST['message_ids'] : ''; + $threads = wp_parse_id_list( $threads ); + + // Bail if action doesn't match our star actions or no IDs. + if ( false === in_array( $action, array( 'star', 'unstar' ), true ) || empty( $threads ) ) { + return; + } + + // It's star time! + switch ( $action ) { + case 'star' : + $count = count( $threads ); + + // If we're starring a thread, we only star the first message in the thread. + foreach ( $threads as $thread ) { + $thread = new BP_Messages_thread( $thread ); + $mids = wp_list_pluck( $thread->messages, 'id' ); + + bp_messages_star_set_action( array( + 'action' => 'star', + 'message_id' => $mids[0], + ) ); + } + + bp_core_add_message( sprintf( _n( '%s message was successfully starred', '%s messages were successfully starred', $count, 'buddypress' ), $count ) ); + break; + + case 'unstar' : + $count = count( $threads ); + + foreach ( $threads as $thread ) { + bp_messages_star_set_action( array( + 'action' => 'unstar', + 'thread_id' => $thread, + 'bulk' => true + ) ); + } + + bp_core_add_message( sprintf( _n( '%s message was successfully unstarred', '%s messages were successfully unstarred', $count, 'buddypress' ), $count ) ); + break; + } + + // Redirect back to message box. + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); + die(); +} +add_action( 'bp_actions', 'bp_messages_star_bulk_manage_handler', 5 ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage.php b/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage.php new file mode 100644 index 0000000000000000000000000000000000000000..65c1a447bf278d1915f545a4418946190ff78b95 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/bulk-manage.php @@ -0,0 +1,75 @@ +<?php +/** + * Messages: Bulk-manage action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Handle bulk management (mark as read/unread, delete) of message threads. + * + * @since 2.2.0 + * + * @return bool Returns false on failure. Otherwise redirects back to the + * message box URL. + */ +function bp_messages_action_bulk_manage() { + + if ( ! bp_is_messages_component() || bp_is_current_action( 'notices' ) || ! bp_is_action_variable( 'bulk-manage', 0 ) ) { + return false; + } + + $action = ! empty( $_POST['messages_bulk_action'] ) ? $_POST['messages_bulk_action'] : ''; + $nonce = ! empty( $_POST['messages_bulk_nonce'] ) ? $_POST['messages_bulk_nonce'] : ''; + $messages = ! empty( $_POST['message_ids'] ) ? $_POST['message_ids'] : ''; + + $messages = wp_parse_id_list( $messages ); + + // Bail if no action or no IDs. + if ( ( ! in_array( $action, array( 'delete', 'read', 'unread' ) ) ) || empty( $messages ) || empty( $nonce ) ) { + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); + } + + // Check the nonce. + if ( ! wp_verify_nonce( $nonce, 'messages_bulk_nonce' ) ) { + return false; + } + + // Make sure the user has access to all notifications before managing them. + foreach ( $messages as $message ) { + if ( ! messages_check_thread_access( $message ) && ! bp_current_user_can( 'bp_moderate' ) ) { + bp_core_add_message( __( 'There was a problem managing your messages.', 'buddypress' ), 'error' ); + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); + } + } + + // Delete, mark as read or unread depending on the user 'action'. + switch ( $action ) { + case 'delete' : + foreach ( $messages as $message ) { + messages_delete_thread( $message ); + } + bp_core_add_message( __( 'Messages deleted.', 'buddypress' ) ); + break; + + case 'read' : + foreach ( $messages as $message ) { + messages_mark_thread_read( $message ); + } + bp_core_add_message( __( 'Messages marked as read', 'buddypress' ) ); + break; + + case 'unread' : + foreach ( $messages as $message ) { + messages_mark_thread_unread( $message ); + } + bp_core_add_message( __( 'Messages marked as unread.', 'buddypress' ) ); + break; + } + + // Redirect back to message box. + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); +} +add_action( 'bp_actions', 'bp_messages_action_bulk_manage' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/compose.php b/wp-content/plugins/buddypress/bp-messages/actions/compose.php new file mode 100644 index 0000000000000000000000000000000000000000..38f33c54ca42c4f159120b9f0b12f60a368560c4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/compose.php @@ -0,0 +1,120 @@ +<?php +/** + * Messages: Compose action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Handle creating of private messages or sitewide notices + * + * @since 2.4.0 This function was split from messages_screen_compose(). See #6505. + * + * @return boolean + */ +function bp_messages_action_create_message() { + + // Bail if not posting to the compose message screen. + if ( ! bp_is_post_request() || ! bp_is_messages_component() || ! bp_is_current_action( 'compose' ) ) { + return false; + } + + // Check the nonce. + check_admin_referer( 'messages_send_message' ); + + // Define local variables. + $redirect_to = ''; + $feedback = ''; + $success = false; + + // Missing subject or content. + if ( empty( $_POST['subject'] ) || empty( $_POST['content'] ) ) { + $success = false; + + if ( empty( $_POST['subject'] ) ) { + $feedback = __( 'Your message was not sent. Please enter a subject line.', 'buddypress' ); + } else { + $feedback = __( 'Your message was not sent. Please enter some content.', 'buddypress' ); + } + + // Subject and content present. + } else { + + // Setup the link to the logged-in user's messages. + $member_messages = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ); + + // Site-wide notice. + if ( isset( $_POST['send-notice'] ) ) { + + // Attempt to save the notice and redirect to notices. + if ( messages_send_notice( $_POST['subject'], $_POST['content'] ) ) { + $success = true; + $feedback = __( 'Notice successfully created.', 'buddypress' ); + $redirect_to = trailingslashit( $member_messages . 'notices' ); + + // Notice could not be sent. + } else { + $success = false; + $feedback = __( 'Notice was not created. Please try again.', 'buddypress' ); + } + + // Private conversation. + } else { + + // Filter recipients into the format we need - array( 'username/userid', 'username/userid' ). + $autocomplete_recipients = (array) explode( ',', $_POST['send-to-input'] ); + $typed_recipients = (array) explode( ' ', $_POST['send_to_usernames'] ); + $recipients = array_merge( $autocomplete_recipients, $typed_recipients ); + + /** + * Filters the array of recipients to receive the composed message. + * + * @since 1.2.10 + * + * @param array $recipients Array of recipients to receive message. + */ + $recipients = apply_filters( 'bp_messages_recipients', $recipients ); + + // Attempt to send the message. + $send = messages_new_message( array( + 'recipients' => $recipients, + 'subject' => $_POST['subject'], + 'content' => $_POST['content'], + 'error_type' => 'wp_error' + ) ); + + // Send the message and redirect to it. + if ( true === is_int( $send ) ) { + $success = true; + $feedback = __( 'Message successfully sent.', 'buddypress' ); + $view = trailingslashit( $member_messages . 'view' ); + $redirect_to = trailingslashit( $view . $send ); + + // Message could not be sent. + } else { + $success = false; + $feedback = $send->get_error_message(); + } + } + } + + // Feedback. + if ( ! empty( $feedback ) ) { + + // Determine message type. + $type = ( true === $success ) + ? 'success' + : 'error'; + + // Add feedback message. + bp_core_add_message( $feedback, $type ); + } + + // Maybe redirect. + if ( ! empty( $redirect_to ) ) { + bp_core_redirect( $redirect_to ); + } +} +add_action( 'bp_actions', 'bp_messages_action_create_message' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/delete.php b/wp-content/plugins/buddypress/bp-messages/actions/delete.php new file mode 100644 index 0000000000000000000000000000000000000000..6496296623bf64e7f1697e32f0f565bca7ada3af --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/delete.php @@ -0,0 +1,39 @@ +<?php +/** + * Messages: Delete action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Process a request to delete a message. + * + * @return bool False on failure. + */ +function messages_action_delete_message() { + + if ( ! bp_is_messages_component() || bp_is_current_action( 'notices' ) || ! bp_is_action_variable( 'delete', 0 ) ) { + return false; + } + + $thread_id = bp_action_variable( 1 ); + + if ( !$thread_id || !is_numeric( $thread_id ) || !messages_check_thread_access( $thread_id ) ) { + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ) ); + } else { + if ( ! check_admin_referer( 'messages_delete_thread' ) ) { + return false; + } + + // Delete message. + if ( !messages_delete_thread( $thread_id ) ) { + bp_core_add_message( __('There was an error deleting that message.', 'buddypress'), 'error' ); + } else { + bp_core_add_message( __('Message deleted.', 'buddypress') ); + } + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ) ); + } +} +add_action( 'bp_actions', 'messages_action_delete_message' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/notices.php b/wp-content/plugins/buddypress/bp-messages/actions/notices.php new file mode 100644 index 0000000000000000000000000000000000000000..8a70e56cb2fbdd1a8488b7278568afa4fb120ba9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/notices.php @@ -0,0 +1,94 @@ +<?php +/** + * Messages: Edit notice action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Handle editing of sitewide notices. + * + * @since 2.4.0 This function was split from messages_screen_notices(). See #6505. + * + * @return boolean + */ +function bp_messages_action_edit_notice() { + + // Bail if not viewing a single notice URL. + if ( ! bp_is_messages_component() || ! bp_is_current_action( 'notices' ) ) { + return false; + } + + // Get the notice ID (1|2|3). + $notice_id = bp_action_variable( 1 ); + + // Bail if notice ID is not numeric. + if ( empty( $notice_id ) || ! is_numeric( $notice_id ) ) { + return false; + } + + // Bail if the current user doesn't have administrator privileges. + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + return false; + } + + // Get the action (deactivate|activate|delete). + $action = sanitize_key( bp_action_variable( 0 ) ); + + // Check the nonce. + check_admin_referer( "messages_{$action}_notice" ); + + // Get the notice from database. + $notice = new BP_Messages_Notice( $notice_id ); + $success = false; + $feedback = ''; + + // Take action. + switch ( $action ) { + + // Deactivate. + case 'deactivate' : + $success = $notice->deactivate(); + $feedback = true === $success + ? __( 'Notice deactivated successfully.', 'buddypress' ) + : __( 'There was a problem deactivating that notice.', 'buddypress' ); + break; + + // Activate. + case 'activate' : + $success = $notice->activate(); + $feedback = true === $success + ? __( 'Notice activated successfully.', 'buddypress' ) + : __( 'There was a problem activating that notice.', 'buddypress' ); + break; + + // Delete. + case 'delete' : + $success = $notice->delete(); + $feedback = true === $success + ? __( 'Notice deleted successfully.', 'buddypress' ) + : __( 'There was a problem deleting that notice.', 'buddypress' ); + break; + } + + // Feedback. + if ( ! empty( $feedback ) ) { + + // Determine message type. + $type = ( true === $success ) + ? 'success' + : 'error'; + + // Add feedback message. + bp_core_add_message( $feedback, $type ); + } + + // Redirect. + $member_notices = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ); + $redirect_to = trailingslashit( $member_notices . 'notices' ); + + bp_core_redirect( $redirect_to ); +} +add_action( 'bp_actions', 'bp_messages_action_edit_notice' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/read.php b/wp-content/plugins/buddypress/bp-messages/actions/read.php new file mode 100644 index 0000000000000000000000000000000000000000..2e76a437a862a28ac75496350a577ddf4628cd2d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/read.php @@ -0,0 +1,49 @@ +<?php +/** + * Messages: Read action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Handle marking a single message thread as read. + * + * @since 2.2.0 + * + * @return false|null Returns false on failure. Otherwise redirects back to the + * message box URL. + */ +function bp_messages_action_mark_read() { + + if ( ! bp_is_messages_component() || bp_is_current_action( 'notices' ) || ! bp_is_action_variable( 'read', 0 ) ) { + return false; + } + + $action = ! empty( $_GET['action'] ) ? $_GET['action'] : ''; + $nonce = ! empty( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : ''; + $id = ! empty( $_GET['message_id'] ) ? intval( $_GET['message_id'] ) : ''; + + // Bail if no action or no ID. + if ( 'read' !== $action || empty( $id ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce. + if ( ! bp_verify_nonce_request( 'bp_message_thread_mark_read_' . $id ) ) { + return false; + } + + // Check access to the message and mark as read. + if ( messages_check_thread_access( $id ) || bp_current_user_can( 'bp_moderate' ) ) { + messages_mark_thread_read( $id ); + bp_core_add_message( __( 'Message marked as read.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem marking that message.', 'buddypress' ), 'error' ); + } + + // Redirect back to the message box. + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); +} +add_action( 'bp_actions', 'bp_messages_action_mark_read' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/star.php b/wp-content/plugins/buddypress/bp-messages/actions/star.php new file mode 100644 index 0000000000000000000000000000000000000000..ac2d554f6a47f6fbd475c26c6b1bb9573efa46f6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/star.php @@ -0,0 +1,45 @@ +<?php +/** + * Messages: Star action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Action handler to set a message's star status for those not using JS. + * + * @since 2.3.0 + */ +function bp_messages_star_action_handler() { + if ( ! bp_is_user_messages() ) { + return; + } + + if ( false === ( bp_is_current_action( 'unstar' ) || bp_is_current_action( 'star' ) ) ) { + return; + } + + if ( ! wp_verify_nonce( bp_action_variable( 1 ), 'bp-messages-star-' . bp_action_variable( 0 ) ) ) { + wp_die( "Oops! That's a no-no!" ); + } + + // Check capability. + if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { + return; + } + + // Mark the star. + bp_messages_star_set_action( array( + 'action' => bp_current_action(), + 'message_id' => bp_action_variable(), + 'bulk' => (bool) bp_action_variable( 2 ) + ) ); + + // Redirect back to previous screen. + $redirect = wp_get_referer() ? wp_get_referer() : bp_displayed_user_domain() . bp_get_messages_slug(); + bp_core_redirect( $redirect ); + die(); +} +add_action( 'bp_actions', 'bp_messages_star_action_handler' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/unread.php b/wp-content/plugins/buddypress/bp-messages/actions/unread.php new file mode 100644 index 0000000000000000000000000000000000000000..802cd85abcd511ba226464358077a297cdee0e93 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/unread.php @@ -0,0 +1,49 @@ +<?php +/** + * Messages: Unread action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Handle marking a single message thread as unread. + * + * @since 2.2.0 + * + * @return false|null Returns false on failure. Otherwise redirects back to the + * message box URL. + */ +function bp_messages_action_mark_unread() { + + if ( ! bp_is_messages_component() || bp_is_current_action( 'notices' ) || ! bp_is_action_variable( 'unread', 0 ) ) { + return false; + } + + $action = ! empty( $_GET['action'] ) ? $_GET['action'] : ''; + $nonce = ! empty( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : ''; + $id = ! empty( $_GET['message_id'] ) ? intval( $_GET['message_id'] ) : ''; + + // Bail if no action or no ID. + if ( 'unread' !== $action || empty( $id ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce. + if ( ! bp_verify_nonce_request( 'bp_message_thread_mark_unread_' . $id ) ) { + return false; + } + + // Check access to the message and mark unread. + if ( messages_check_thread_access( $id ) || bp_current_user_can( 'bp_moderate' ) ) { + messages_mark_thread_unread( $id ); + bp_core_add_message( __( 'Message marked unread.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem marking that message.', 'buddypress' ), 'error' ); + } + + // Redirect back to the message box URL. + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() ); +} +add_action( 'bp_actions', 'bp_messages_action_mark_unread' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/actions/view.php b/wp-content/plugins/buddypress/bp-messages/actions/view.php new file mode 100644 index 0000000000000000000000000000000000000000..1f4518b98de536832dcfd57425d0f0801bf58828 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/actions/view.php @@ -0,0 +1,64 @@ +<?php +/** + * Messages: View action handler + * + * @package BuddyPress + * @subpackage MessageActions + * @since 3.0.0 + */ + +/** + * Process a request to view a single message thread. + */ +function messages_action_conversation() { + + // Bail if not viewing a single conversation. + if ( ! bp_is_messages_component() || ! bp_is_current_action( 'view' ) ) { + return false; + } + + // Get the thread ID from the action variable. + $thread_id = (int) bp_action_variable( 0 ); + + if ( ! messages_is_valid_thread( $thread_id ) || ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) ) { + return; + } + + // Check if a new reply has been submitted. + if ( isset( $_POST['send'] ) ) { + + // Check the nonce. + check_admin_referer( 'messages_send_message', 'send_message_nonce' ); + + $new_reply = messages_new_message( array( + 'thread_id' => $thread_id, + 'subject' => ! empty( $_POST['subject'] ) ? $_POST['subject'] : false, + 'content' => $_POST['content'] + ) ); + + // Send the reply. + if ( ! empty( $new_reply ) ) { + bp_core_add_message( __( 'Your reply was sent successfully', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem sending your reply. Please try again.', 'buddypress' ), 'error' ); + } + + bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/view/' . $thread_id . '/' ); + } + + /* + * Mark message read, but only run on the logged-in user's profile. + * If an admin visits a thread, it shouldn't change the read status. + */ + if ( bp_is_my_profile() ) { + messages_mark_thread_read( $thread_id ); + } + + /** + * Fires after processing a view request for a single message thread. + * + * @since 1.7.0 + */ + do_action( 'messages_action_conversation' ); +} +add_action( 'bp_actions', 'messages_action_conversation' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-admin.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-admin.php new file mode 100644 index 0000000000000000000000000000000000000000..16bbd6e7a3da9841cf6bbb41e08fc93df14c3405 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-admin.php @@ -0,0 +1,14 @@ +<?php +/** + * BuddyPress Members component admin screens. + * + * @package BuddyPress + * @subpackage Messages + * @since 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +// Load the Sitewide Notices Admin +add_action( bp_core_admin_hook(), array( 'BP_Messages_Notices_Admin', 'register_notices_admin' ), 9 ); 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 8b3404bc2d3631d7c2abda7a696064311ea83ea2..05ca3eee33d91c57aa11aa6013b90853b57a5cbe 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-filters.php @@ -18,16 +18,15 @@ add_filter( 'bp_get_message_thread_subject', 'wp_filter_kses', 1 ); add_filter( 'bp_get_message_thread_excerpt', 'wp_filter_kses', 1 ); add_filter( 'bp_get_messages_subject_value', 'wp_filter_kses', 1 ); add_filter( 'bp_get_messages_content_value', 'wp_filter_kses', 1 ); -add_filter( 'bp_get_the_thread_message_content', 'wp_filter_kses', 1 ); - -add_filter( 'messages_message_content_before_save', 'wp_filter_kses', 1 ); add_filter( 'messages_message_subject_before_save', 'wp_filter_kses', 1 ); -add_filter( 'messages_notice_message_before_save', 'wp_filter_kses', 1 ); add_filter( 'messages_notice_subject_before_save', 'wp_filter_kses', 1 ); - -add_filter( 'bp_get_the_thread_message_content', 'wp_filter_kses', 1 ); add_filter( 'bp_get_the_thread_subject', 'wp_filter_kses', 1 ); +add_filter( 'bp_get_the_thread_message_content', 'bp_messages_filter_kses', 1 ); +add_filter( 'messages_message_content_before_save', 'bp_messages_filter_kses', 1 ); +add_filter( 'messages_notice_message_before_save', 'bp_messages_filter_kses', 1 ); +add_filter( 'bp_get_message_thread_content', 'bp_messages_filter_kses', 1 ); + add_filter( 'messages_message_content_before_save', 'force_balance_tags' ); add_filter( 'messages_message_subject_before_save', 'force_balance_tags' ); add_filter( 'messages_notice_message_before_save', 'force_balance_tags' ); @@ -45,34 +44,40 @@ add_filter( 'bp_get_message_notice_text', 'wptexturize' ); add_filter( 'bp_get_message_thread_subject', 'wptexturize' ); add_filter( 'bp_get_message_thread_excerpt', 'wptexturize' ); add_filter( 'bp_get_the_thread_message_content', 'wptexturize' ); +add_filter( 'bp_get_message_thread_content', 'wptexturize' ); add_filter( 'bp_get_message_notice_subject', 'convert_smilies', 2 ); add_filter( 'bp_get_message_notice_text', 'convert_smilies', 2 ); add_filter( 'bp_get_message_thread_subject', 'convert_smilies', 2 ); add_filter( 'bp_get_message_thread_excerpt', 'convert_smilies', 2 ); add_filter( 'bp_get_the_thread_message_content', 'convert_smilies', 2 ); +add_filter( 'bp_get_message_thread_content', 'convert_smilies', 2 ); add_filter( 'bp_get_message_notice_subject', 'convert_chars' ); add_filter( 'bp_get_message_notice_text', 'convert_chars' ); add_filter( 'bp_get_message_thread_subject', 'convert_chars' ); add_filter( 'bp_get_message_thread_excerpt', 'convert_chars' ); add_filter( 'bp_get_the_thread_message_content', 'convert_chars' ); +add_filter( 'bp_get_message_thread_content', 'convert_chars' ); add_filter( 'bp_get_message_notice_text', 'make_clickable', 9 ); add_filter( 'bp_get_the_thread_message_content', 'make_clickable', 9 ); +add_filter( 'bp_get_message_thread_content', 'make_clickable', 9 ); add_filter( 'bp_get_message_notice_text', 'wpautop' ); add_filter( 'bp_get_the_thread_message_content', 'wpautop' ); +add_filter( 'bp_get_message_thread_content', 'wpautop' ); -add_filter( 'bp_get_message_notice_subject', 'stripslashes_deep' ); -add_filter( 'bp_get_message_notice_text', 'stripslashes_deep' ); -add_filter( 'bp_get_message_thread_subject', 'stripslashes_deep' ); -add_filter( 'bp_get_message_thread_excerpt', 'stripslashes_deep' ); -add_filter( 'bp_get_message_get_recipient_usernames', 'stripslashes_deep' ); -add_filter( 'bp_get_messages_subject_value', 'stripslashes_deep' ); -add_filter( 'bp_get_messages_content_value', 'stripslashes_deep' ); -add_filter( 'bp_get_the_thread_message_content', 'stripslashes_deep' ); -add_filter( 'bp_get_the_thread_subject', 'stripslashes_deep' ); +add_filter( 'bp_get_message_notice_subject', 'stripslashes_deep' ); +add_filter( 'bp_get_message_notice_text', 'stripslashes_deep' ); +add_filter( 'bp_get_message_thread_subject', 'stripslashes_deep' ); +add_filter( 'bp_get_message_thread_excerpt', 'stripslashes_deep' ); +add_filter( 'bp_get_message_get_recipient_usernames', 'stripslashes_deep' ); +add_filter( 'bp_get_messages_subject_value', 'stripslashes_deep' ); +add_filter( 'bp_get_messages_content_value', 'stripslashes_deep' ); +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 ); /** * Enforce limitations on viewing private message contents @@ -98,3 +103,26 @@ function bp_messages_enforce_current_user( $args = array() ) { return $args; } add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_enforce_current_user', 5 ); + +/** + * Custom kses filtering for message content. + * + * @since 3.0.0 + * + * @param string $content The message content. + * @return string The filtered message content. + */ +function bp_messages_filter_kses( $content ) { + $messages_allowedtags = bp_get_allowedtags(); + $messages_allowedtags['p'] = array(); + + /** + * Filters the allowed HTML tags for BuddyPress Messages content. + * + * @since 3.0.0 + * + * @param array $value Array of allowed HTML tags and attributes. + */ + $messages_allowedtags = apply_filters( 'bp_messages_allowed_tags', $messages_allowedtags ); + return wp_kses( $content, $messages_allowedtags ); +} diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php index 39a3c550701c7a69aa166bd9e5bb31a7d9fedb44..1f6bfc206c206982c5c956b9c3481951f08df5de 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-functions.php @@ -315,10 +315,6 @@ function messages_delete_thread( $thread_ids, $user_id = 0 ) { * @return int|null Message ID if the user has access, otherwise null. */ function messages_check_thread_access( $thread_id, $user_id = 0 ) { - if ( empty( $user_id ) ) { - $user_id = bp_loggedin_user_id(); - } - return BP_Messages_Thread::check_access( $thread_id, $user_id ); } @@ -585,6 +581,12 @@ function messages_notification_new_message( $raw_args = array() ) { $sender_name = bp_core_get_user_displayname( $sender_id ); + if ( isset( $message ) ) { + $message = wpautop( $message ); + } else { + $message = ''; + } + // Send an email to each recipient. foreach ( $recipients as $recipient ) { if ( $sender_id == $recipient->user_id || 'no' == bp_get_user_meta( $recipient->user_id, 'notification_messages_new_message', true ) ) { diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php index 2bf095e923af3c8e6c12443abda92814d39c1bf6..6f257d34777e3b7c15040912622025648cecfee8 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-notifications.php @@ -203,6 +203,24 @@ function bp_messages_screen_conversation_mark_notifications() { } add_action( 'thread_loop_start', 'bp_messages_screen_conversation_mark_notifications', 10 ); +/** + * Mark new message notification as read when the corresponding message is mark read. + * + * This callback covers mark-as-read bulk actions. + * + * @since 3.0.0 + * + * @param int $thread_id ID of the thread being marked as read. + */ +function bp_messages_mark_notification_on_mark_thread( $thread_id ) { + $thread_messages = BP_Messages_Thread::get_messages( $thread_id ); + + foreach ( $thread_messages as $thread_message ) { + bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), $thread_message->id, buddypress()->messages->id, 'new_message' ); + } +} +add_action( 'messages_thread_mark_as_read', 'bp_messages_mark_notification_on_mark_thread' ); + /** * When a message is deleted, delete corresponding notifications. * @@ -221,3 +239,58 @@ function bp_messages_message_delete_notifications( $thread_id, $message_ids ) { } } add_action( 'bp_messages_thread_after_delete', 'bp_messages_message_delete_notifications', 10, 2 ); + +/** + * Render the markup for the Messages section of Settings > Notifications. + * + * @since 1.0.0 + */ +function messages_screen_notification_settings() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + if ( !$new_messages = bp_get_user_meta( bp_displayed_user_id(), 'notification_messages_new_message', true ) ) { + $new_messages = 'yes'; + } ?> + + <table class="notification-settings" id="messages-notification-settings"> + <thead> + <tr> + <th class="icon"></th> + <th class="title"><?php _e( 'Messages', 'buddypress' ) ?></th> + <th class="yes"><?php _e( 'Yes', 'buddypress' ) ?></th> + <th class="no"><?php _e( 'No', 'buddypress' )?></th> + </tr> + </thead> + + <tbody> + <tr id="messages-notification-settings-new-message"> + <td></td> + <td><?php _e( 'A member sends you a new message', 'buddypress' ) ?></td> + <td class="yes"><input type="radio" name="notifications[notification_messages_new_message]" id="notification-messages-new-messages-yes" value="yes" <?php checked( $new_messages, 'yes', true ) ?>/><label for="notification-messages-new-messages-yes" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'Yes, send email', 'buddypress' ); + ?></label></td> + <td class="no"><input type="radio" name="notifications[notification_messages_new_message]" id="notification-messages-new-messages-no" value="no" <?php checked( $new_messages, 'no', true ) ?>/><label for="notification-messages-new-messages-no" class="bp-screen-reader-text"><?php + /* translators: accessibility text */ + _e( 'No, do not send email', 'buddypress' ); + ?></label></td> + </tr> + + <?php + + /** + * Fires inside the closing </tbody> tag for messages screen notification settings. + * + * @since 1.0.0 + */ + do_action( 'messages_screen_notification_settings' ); ?> + </tbody> + </table> + +<?php +} +add_action( 'bp_notification_settings', 'messages_screen_notification_settings', 2 ); diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-star.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-star.php index 2184587e496ab0575273199f3640f7e01b9ff8f1..04c716af721ceb89f054f0e0d612cdcc8667368b 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-star.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-star.php @@ -310,168 +310,6 @@ function bp_messages_star_set_action( $args = array() ) { } } -/** SCREENS **************************************************************/ - -/** - * Screen handler to display a user's "Starred" private messages page. - * - * @since 2.3.0 - */ -function bp_messages_star_screen() { - add_action( 'bp_template_content', 'bp_messages_star_content' ); - - /** - * Fires right before the loading of the "Starred" messages box. - * - * @since 2.3.0 - */ - do_action( 'bp_messages_screen_star' ); - - bp_core_load_template( 'members/single/plugins' ); -} - -/** - * Screen content callback to display a user's "Starred" messages page. - * - * @since 2.3.0 - */ -function bp_messages_star_content() { - // Add our message thread filter. - add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); - - // Load the message loop template part. - bp_get_template_part( 'members/single/messages/messages-loop' ); - - // Remove our filter. - remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); -} - -/** - * Filter message threads by those starred by the logged-in user. - * - * @since 2.3.0 - * - * @param array $r Current message thread arguments. - * @return array $r Array of starred message threads. - */ -function bp_messages_filter_starred_message_threads( $r = array() ) { - $r['box'] = 'starred'; - $r['meta_query'] = array( array( - 'key' => 'starred_by_user', - 'value' => $r['user_id'] - ) ); - - return $r; -} - -/** ACTIONS **************************************************************/ - -/** - * Action handler to set a message's star status for those not using JS. - * - * @since 2.3.0 - */ -function bp_messages_star_action_handler() { - if ( ! bp_is_user_messages() ) { - return; - } - - if ( false === ( bp_is_current_action( 'unstar' ) || bp_is_current_action( 'star' ) ) ) { - return; - } - - if ( ! wp_verify_nonce( bp_action_variable( 1 ), 'bp-messages-star-' . bp_action_variable( 0 ) ) ) { - wp_die( "Oops! That's a no-no!" ); - } - - // Check capability. - if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { - return; - } - - // Mark the star. - bp_messages_star_set_action( array( - 'action' => bp_current_action(), - 'message_id' => bp_action_variable(), - 'bulk' => (bool) bp_action_variable( 2 ) - ) ); - - // Redirect back to previous screen. - $redirect = wp_get_referer() ? wp_get_referer() : bp_displayed_user_domain() . bp_get_messages_slug(); - bp_core_redirect( $redirect ); - die(); -} -add_action( 'bp_actions', 'bp_messages_star_action_handler' ); - -/** - * Bulk manage handler to set the star status for multiple messages. - * - * @since 2.3.0 - */ -function bp_messages_star_bulk_manage_handler() { - if ( empty( $_POST['messages_bulk_nonce' ] ) ) { - return; - } - - // Check the nonce. - if ( ! wp_verify_nonce( $_POST['messages_bulk_nonce'], 'messages_bulk_nonce' ) ) { - return; - } - - // Check capability. - if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { - return; - } - - $action = ! empty( $_POST['messages_bulk_action'] ) ? $_POST['messages_bulk_action'] : ''; - $threads = ! empty( $_POST['message_ids'] ) ? $_POST['message_ids'] : ''; - $threads = wp_parse_id_list( $threads ); - - // Bail if action doesn't match our star actions or no IDs. - if ( false === in_array( $action, array( 'star', 'unstar' ), true ) || empty( $threads ) ) { - return; - } - - // It's star time! - switch ( $action ) { - case 'star' : - $count = count( $threads ); - - // If we're starring a thread, we only star the first message in the thread. - foreach ( $threads as $thread ) { - $thread = new BP_Messages_thread( $thread ); - $mids = wp_list_pluck( $thread->messages, 'id' ); - - bp_messages_star_set_action( array( - 'action' => 'star', - 'message_id' => $mids[0], - ) ); - } - - bp_core_add_message( sprintf( _n( '%s message was successfully starred', '%s messages were successfully starred', $count, 'buddypress' ), $count ) ); - break; - - case 'unstar' : - $count = count( $threads ); - - foreach ( $threads as $thread ) { - bp_messages_star_set_action( array( - 'action' => 'unstar', - 'thread_id' => $thread, - 'bulk' => true - ) ); - } - - bp_core_add_message( sprintf( _n( '%s message was successfully unstarred', '%s messages were successfully unstarred', $count, 'buddypress' ), $count ) ); - break; - } - - // Redirect back to message box. - bp_core_redirect( bp_displayed_user_domain() . bp_get_messages_slug() . '/' . bp_current_action() . '/' ); - die(); -} -add_action( 'bp_actions', 'bp_messages_star_bulk_manage_handler', 5 ); - /** HOOKS ****************************************************************/ /** @@ -526,3 +364,21 @@ function bp_messages_star_message_css_class( $retval = array() ) { return $retval; } add_filter( 'bp_get_the_thread_message_css_class', 'bp_messages_star_message_css_class' ); + +/** + * Filter message threads by those starred by the logged-in user. + * + * @since 2.3.0 + * + * @param array $r Current message thread arguments. + * @return array $r Array of starred message threads. + */ +function bp_messages_filter_starred_message_threads( $r = array() ) { + $r['box'] = 'starred'; + $r['meta_query'] = array( array( + 'key' => 'starred_by_user', + 'value' => $r['user_id'] + ) ); + + return $r; +} diff --git a/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php b/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php index 12ec655c7c1c9b811f2b562e95c2e40044141e32..b04b6292514e02ea89b31f13010f6c8b9f5470e9 100644 --- a/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php +++ b/wp-content/plugins/buddypress/bp-messages/bp-messages-template.php @@ -1223,7 +1223,7 @@ function bp_message_notice_delete_link() { * @param string $value URL for deleting the current notice. * @param string $value Text indicating action being executed. */ - return apply_filters( 'bp_get_message_notice_delete_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices/delete/' . $messages_template->thread->id ), 'messages_delete_thread' ) ); + return apply_filters( 'bp_get_message_notice_delete_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() . '/notices/delete/' . $messages_template->thread->id ), 'messages_delete_notice' ) ); } /** @@ -1337,7 +1337,7 @@ function bp_message_get_notices() { <p> <strong><?php echo stripslashes( wp_filter_kses( $notice->subject ) ) ?></strong><br /> <?php echo stripslashes( wp_filter_kses( $notice->message) ) ?> - <button type="button" id="close-notice" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'Dismiss this notice', 'buddypress' ) ?>"><span class="bp-screen-reader-text"><?php _e( 'Dismiss this notice', 'buddypress' ) ?>"></span> <span aria-hidden="true">Χ</span></button> + <button type="button" id="close-notice" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'Dismiss this notice', 'buddypress' ) ?>"><span class="bp-screen-reader-text"><?php _e( 'Dismiss this notice', 'buddypress' ) ?></span> <span aria-hidden="true">Χ</span></button> <?php wp_nonce_field( 'bp_messages_close_notice', 'close-notice-nonce' ); ?> </p> </div> @@ -1387,16 +1387,50 @@ function bp_send_private_message_button() { /** * Output the 'Private Message' button for member profile headers. + * + * @since 1.2.0 + * @since 3.0.0 Added `$args` parameter. + * + * @param array|string $args See {@link bp_get_send_message_button()}. */ -function bp_send_message_button() { - echo bp_get_send_message_button(); +function bp_send_message_button( $args = '' ) { + echo bp_get_send_message_button( $args ); } /** * Generate the 'Private Message' button for member profile headers. * + * @since 1.2.0 + * @since 3.0.0 Added `$args` parameter. + * + * @param array|string $args { + * All arguments are optional. See {@link BP_Button} for complete + * descriptions. + * @type string $id Default: 'private_message'. + * @type string $component Default: 'messages'. + * @type bool $must_be_logged_in Default: true. + * @type bool $block_self Default: true. + * @type string $wrapper_id Default: 'send-private-message'. + * @type string $link_href Default: the private message link for + * the current member in the loop. + * @type string $link_text Default: 'Private Message'. + * @type string $link_class Default: 'send-message'. + * } * @return string */ - function bp_get_send_message_button() { + function bp_get_send_message_button( $args = '' ) { + + $r = bp_parse_args( $args, array( + 'id' => 'private_message', + 'component' => 'messages', + 'must_be_logged_in' => true, + 'block_self' => true, + 'wrapper_id' => 'send-private-message', + 'link_href' => bp_get_send_private_message_link(), + 'link_text' => __( 'Private Message', 'buddypress' ), + 'link_class' => 'send-message', + ) ); + + // Note: 'bp_get_send_message_button' is a legacy filter. Use // 'bp_get_send_message_button_args' instead. See #4536. return apply_filters( 'bp_get_send_message_button', @@ -1408,16 +1442,7 @@ function bp_send_message_button() { * * @param array $value See {@link BP_Button}. */ - bp_get_button( apply_filters( 'bp_get_send_message_button_args', array( - 'id' => 'private_message', - 'component' => 'messages', - 'must_be_logged_in' => true, - 'block_self' => true, - 'wrapper_id' => 'send-private-message', - 'link_href' => bp_get_send_private_message_link(), - 'link_text' => __( 'Private Message', 'buddypress' ), - 'link_class' => 'send-message', - ) ) ) + bp_get_button( apply_filters( 'bp_get_send_message_button_args', $r ) ) ); } diff --git a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-component.php b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-component.php index 704956368629ccff506a7c8d9b8a6f6ce817b8ce..b9ccc35ee1112f6ae23d9047eb48b68d246abed3 100644 --- a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-component.php +++ b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-component.php @@ -58,8 +58,6 @@ class BP_Messages_Component extends BP_Component { $includes = array( 'cssjs', 'cache', - 'actions', - 'screens', 'filters', 'template', 'functions', @@ -73,10 +71,75 @@ class BP_Messages_Component extends BP_Component { if ( bp_is_active( $this->id, 'star' ) ) { $includes[] = 'star'; } + if ( is_admin() ) { + $includes[] = 'admin'; + } parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + if ( bp_is_messages_component() ) { + // Authenticated actions. + if ( is_user_logged_in() && + in_array( bp_current_action(), array( 'compose', 'notices', 'view' ), true ) + ) { + require $this->path . 'bp-messages/actions/' . bp_current_action() . '.php'; + } + + // Authenticated action variables. + if ( is_user_logged_in() && bp_action_variable( 0 ) && + in_array( bp_action_variable( 0 ), array( 'delete', 'read', 'unread', 'bulk-manage', 'bulk-delete' ), true ) + ) { + require $this->path . 'bp-messages/actions/' . bp_action_variable( 0 ) . '.php'; + } + + // Authenticated actions - Star. + if ( is_user_logged_in() && bp_is_active( $this->id, 'star' ) ) { + // Single action. + if ( in_array( bp_current_action(), array( 'star', 'unstar' ), true ) ) { + require $this->path . 'bp-messages/actions/star.php'; + } + + // Bulk-manage. + if ( bp_is_action_variable( 'bulk-manage' ) ) { + require $this->path . 'bp-messages/actions/bulk-manage-star.php'; + } + } + + // Screens - User profile integration. + if ( bp_is_user() ) { + require $this->path . 'bp-messages/screens/inbox.php'; + + /* + * Nav items. + * + * 'view' is not a registered nav item, but we add a screen handler manually. + */ + if ( bp_is_user_messages() && in_array( bp_current_action(), array( 'sentbox', 'compose', 'notices', 'view' ), true ) ) { + require $this->path . 'bp-messages/screens/' . bp_current_action() . '.php'; + } + + // Nav item - Starred. + if ( bp_is_active( $this->id, 'star' ) && bp_is_current_action( bp_get_messages_starred_slug() ) ) { + require $this->path . 'bp-messages/screens/starred.php'; + } + } + } + } + /** * Set up globals for the Messages component. * @@ -320,7 +383,7 @@ class BP_Messages_Component extends BP_Component { $wp_admin_nav[] = array( 'parent' => 'my-account-' . $this->id, 'id' => 'my-account-' . $this->id . '-notices', - 'title' => __( 'All Member Notices', 'buddypress' ), + 'title' => __( 'Site Notices', 'buddypress' ), 'href' => trailingslashit( $messages_link . 'notices' ), 'position' => 90 ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..845306508d49893fec48caaa9e2a607ad37838e8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-admin.php @@ -0,0 +1,252 @@ +<?php +/** + * BuddyPress messages component Site-wide Notices admin screen. + * + * + * @package BuddyPress + * @subpackage Messages + * @since 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +class BP_Messages_Notices_Admin { + + /** + * The ID returned by `add_users_page()`. + * + * @since 3.0.0 + * @var string + */ + public $screen_id = ''; + + /** + * The URL of the admin screen. + * + * @since 3.0.0 + * @var string + */ + public $url = ''; + + /** + * The current instance of the BP_Messages_Notices_List_Table class. + * + * @since 3.0.0 + * @var object + */ + public $list_table = ''; + + + /** + * Create a new instance or access the current instance of this class. + * + * @since 3.0.0 + */ + public static function register_notices_admin() { + + if ( ! is_admin() || ! bp_is_active( 'messages' ) || ! bp_current_user_can( 'bp_moderate' ) ) { + return; + } + + $bp = buddypress(); + + if ( empty( $bp->messages->admin ) ) { + $bp->messages->admin = new self; + } + + return $bp->messages->admin; + } + + /** + * Constructor method. + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->setup_actions(); + } + + /** + * Populate the classs variables. + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->url = add_query_arg( array( 'page' => 'bp-notices' ), bp_get_admin_url( 'users.php' ) ); + } + + /** + * Add action hooks. + * + * @since 3.0.0 + */ + protected function setup_actions() { + add_action( bp_core_admin_hook(), array( $this, 'admin_menu' ) ); + } + + /** + * Add the 'Site Notices' admin menu item. + * + * @since 3.0.0 + */ + public function admin_menu() { + // Bail if current user cannot moderate community. + if ( ! bp_current_user_can( 'bp_moderate' ) || ! bp_is_active( 'messages' ) ) { + return false; + } + + $this->screen_id = add_users_page( + _x( 'Site Notices', 'Notices admin page title', 'buddypress' ), + _x( 'Site Notices', 'Admin Users menu', 'buddypress' ), + 'manage_options', + 'bp-notices', + array( $this, 'admin_index' ) + ); + + add_action( 'load-' . $this->screen_id, array( $this, 'admin_load' ) ); + } + + /** + * Catch save/update requests or load the screen. + * + * @since 3.0.0 + */ + public function admin_load() { + $redirect_to = false; + + // Catch new notice saves. + if ( ! empty( $_POST['bp_notice']['send'] ) ) { + + check_admin_referer( 'new-notice', 'ns-nonce' ); + + $notice = wp_parse_args( $_POST['bp_notice'], array( + 'subject' => '', + 'content' => '' + ) ); + + if ( messages_send_notice( $notice['subject'], $notice['content'] ) ) { + $redirect_to = add_query_arg( 'success', 'create', $this->url ); + + // Notice could not be sent. + } else { + $redirect_to = add_query_arg( 'error', 'create', $this->url ); + } + } + + // Catch activation/deactivation/delete requests + if ( ! empty( $_GET['notice_id'] ) && ! empty( $_GET['notice_action'] ) ) { + $notice_id = absint( $_GET['notice_id'] ); + + check_admin_referer( 'messages-' . $_GET['notice_action'] . '-notice-' . $notice_id ); + + $success = false; + switch ( $_GET['notice_action'] ) { + case 'activate': + $notice = new BP_Messages_Notice( $notice_id ); + $success = $notice->activate(); + break; + case 'deactivate': + $notice = new BP_Messages_Notice( $notice_id ); + $success = $notice->deactivate(); + break; + case 'delete': + $notice = new BP_Messages_Notice( $notice_id ); + $success = $notice->delete(); + break; + } + if ( $success ) { + $redirect_to = add_query_arg( 'success', 'update', $this->url ); + + // Notice could not be updated. + } else { + $redirect_to = add_query_arg( 'error', 'update', $this->url ); + } + + } + + if ( $redirect_to ) { + wp_safe_redirect( $redirect_to ); + exit(); + } + + $this->list_table = new BP_Messages_Notices_List_Table( array( 'screen' => get_current_screen()->id ) ); + } + + /** + * Generate content for the bp-notices admin screen. + * + * @since 3.0.0 + */ + public function admin_index() { + $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; ?> + + <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> + + <div class="bp-new-notice-panel"> + + <h2 class="bp-new-notice"><?php esc_html_e( 'Add New Notice', 'buddypress' ); ?></h2> + + <form action="<?php echo esc_url( wp_nonce_url( $this->url, 'new-notice', 'ns-nonce' ) ); ?>" method="post"> + + <div> + <label for="bp_notice_subject"><?php esc_html_e( 'Subject', 'buddypress' ); ?></label> + <input type="text" class="bp-panel-input" id="bp_notice_subject" name="bp_notice[subject]"/> + + <label for="bp_notice_content"><?php esc_html_e( 'Content', 'buddypress' ); ?></label> + <textarea class="bp-panel-textarea" id="bp_notice_content" name="bp_notice[content]"></textarea> + </div> + + <input type="submit" value="<?php esc_attr_e( 'Publish Notice', 'buddypress' ); ?>" name="bp_notice[send]" class="button button-primary save alignleft"> + + </form> + + </div> + + <?php if ( isset( $_GET['success'] ) || isset( $_GET['error'] ) ) : ?> + + <div id="message" class="<?php echo isset( $_GET['success'] ) ? 'updated' : 'error'; ?>"> + + <p> + <?php + if ( isset( $_GET['error'] ) ) { + if ( 'create' === $_GET['error'] ) { + esc_html_e( 'Notice was not created. Please try again.', 'buddypress' ); + } else { + esc_html_e( 'Notice was not updated. Please try again.', 'buddypress' ); + } + } else { + if ( 'create' === $_GET['success'] ) { + esc_html_e( 'Notice successfully created.', 'buddypress' ); + } else { + esc_html_e( 'Notice successfully updated.', 'buddypress' ); + } + } + ?> + </p> + + </div> + + <?php endif; ?> + + <h2 class="bp-notices-list"><?php esc_html_e( 'Notices List', 'buddypress' ); ?></h2> + + <?php $this->list_table->display(); ?> + + </div> + <?php + } +} diff --git a/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-list-table.php b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-list-table.php new file mode 100644 index 0000000000000000000000000000000000000000..da601d3c65c7619ae3dfc732924b8c8d71eeed18 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/classes/class-bp-messages-notices-list-table.php @@ -0,0 +1,166 @@ +<?php +/** + * BuddyPress messages admin site-wide notices list table class. + * + * @package BuddyPress + * @subpackage Messages + * @since 3.0.0 + */ + +// Exit if accessed directly. +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' ); +} + +class BP_Messages_Notices_List_Table extends WP_List_Table { + + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct( $args = array() ) { + parent::__construct( + array( + 'plural' => 'notices', + 'singular' => 'notice', + 'ajax' => true, + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, + ) + ); + } + + /** + * Checks the current user's permissions + * + * @since 3.0.0 + */ + public function ajax_user_can() { + return bp_current_user_can( 'bp_moderate' ); + } + + /** + * Set up items for display in the list table. + * + * Handles filtering of data, sorting, pagination, and any other data + * manipulation required prior to rendering. + * + * @since 3.0.0 + */ + public function prepare_items() { + $page = $this->get_pagenum(); + $per_page = $this->get_items_per_page( 'bp_notices_per_page' ); + + $this->items = BP_Messages_Notice::get_notices( array( + 'pag_num' => $per_page, + 'pag_page' => $page + ) ); + + $this->set_pagination_args( array( + 'total_items' => BP_Messages_Notice::get_total_notice_count(), + 'per_page' => $per_page, + ) ); + } + + /** + * Get a list of columns. The format is: + * 'internal-name' => 'Title' + * + * @since 3.0.0 + * + * @return array + */ + public function get_columns() { + return apply_filters( 'bp_notices_list_table_get_columns', array( + 'subject' => _x( 'Subject', 'Admin Notices column header', 'buddypress' ), + 'message' => _x( 'Content', 'Admin Notices column header', 'buddypress' ), + 'date_sent' => _x( 'Created', 'Admin Notices column header', 'buddypress' ), + ) ); + } + + /** + * Generates content for a single row of the table + * + * @since 3.0.0 + * + * @param object $item The current item + */ + public function single_row( $item ) { + $class = ''; + + if ( ! empty( $item->is_active ) ) { + $class = ' class="notice-active"'; + } + + echo "<tr{$class}>"; + $this->single_row_columns( $item ); + echo '</tr>'; + } + + /** + * Generates content for the "subject" column. + * + * @since 3.0.0 + * + * @param object $item The current item + */ + public function column_subject( $item ) { + $actions = array( + 'activate_deactivate' => sprintf( '<a href="%s" data-bp-notice-id="%d" data-bp-action="activate">%s</a>', + esc_url( wp_nonce_url( add_query_arg( array( + 'page' => 'bp-notices', + 'notice_action' => 'activate', + 'notice_id' => $item->id + ), bp_get_admin_url( 'users.php' ) ), 'messages-activate-notice-' . $item->id ) ), + (int) $item->id, + esc_html__( 'Activate Notice', 'buddypress' ) ), + 'delete' => sprintf( '<a href="%s" data-bp-notice-id="%d" data-bp-action="delete">%s</a>', + esc_url( wp_nonce_url( add_query_arg( array( + 'page' => 'bp-notices', + 'notice_action' => 'delete', + 'notice_id' => $item->id + ), bp_get_admin_url( 'users.php' ) ), 'messages-delete-notice-' . $item->id ) ), + (int) $item->id, + esc_html__( 'Delete Notice', 'buddypress' ) ) + ); + + if ( ! empty( $item->is_active ) ) { + $item->subject = sprintf( _x( 'Active: %s', 'Tag prepended to active site-wide notice titles on WP Admin notices list table', 'buddypress' ), $item->subject ); + $actions['activate_deactivate'] = sprintf( '<a href="%s" data-bp-notice-id="%d" data-bp-action="deactivate">%s</a>', + esc_url( wp_nonce_url( add_query_arg( array( + 'page' => 'bp-notices', + 'notice_action' => 'deactivate', + 'notice_id' => $item->id + ), bp_get_admin_url( 'users.php' ) ), 'messages-deactivate-notice-' . $item->id ) ), + (int) $item->id, + esc_html__( 'Deactivate Notice', 'buddypress' ) ); + } + + echo '<strong>' . apply_filters( 'bp_get_message_notice_subject', $item->subject ) . '</strong> ' . $this->row_actions( $actions ); + } + + /** + * Generates content for the "message" column. + * + * @since 3.0.0 + * + * @param object $item The current item + */ + public function column_message( $item ) { + echo apply_filters( 'bp_get_message_notice_text', $item->message ); + } + + /** + * Generates content for the "date_sent" column. + * + * @since 3.0.0 + * + * @param object $item The current item + */ + public function column_date_sent( $item ) { + echo apply_filters( 'bp_get_message_notice_post_date', bp_format_time( strtotime( $item->date_sent ) ) ); + } +} diff --git a/wp-content/plugins/buddypress/bp-messages/screens/compose.php b/wp-content/plugins/buddypress/bp-messages/screens/compose.php new file mode 100644 index 0000000000000000000000000000000000000000..c8b58bb3940e9f77d546e83fcb330c7de797e632 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/compose.php @@ -0,0 +1,40 @@ +<?php +/** + * Messages: User's "Messages > Compose" screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Load the Messages > Compose screen. + * + * @since 1.0.0 + */ +function messages_screen_compose() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Remove any saved message data from a previous session. + messages_remove_callback_values(); + + /** + * Fires right before the loading of the Messages compose screen template file. + * + * @since 1.0.0 + */ + do_action( 'messages_screen_compose' ); + + /** + * Filters the template to load for the Messages compose screen. + * + * @since 1.0.0 + * + * @param string $template Path to the messages template to load. + */ + bp_core_load_template( apply_filters( 'messages_template_compose', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/screens/inbox.php b/wp-content/plugins/buddypress/bp-messages/screens/inbox.php new file mode 100644 index 0000000000000000000000000000000000000000..84bd4e230a03afc961f244d259fc76e9714d69f5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/inbox.php @@ -0,0 +1,37 @@ +<?php +/** + * Messages: User's "Messages" screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Load the Messages > Inbox screen. + * + * @since 1.0.0 + */ +function messages_screen_inbox() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Fires right before the loading of the Messages inbox screen template file. + * + * @since 1.0.0 + */ + do_action( 'messages_screen_inbox' ); + + /** + * Filters the template to load for the Messages inbox screen. + * + * @since 1.0.0 + * + * @param string $template Path to the messages template to load. + */ + bp_core_load_template( apply_filters( 'messages_template_inbox', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/screens/notices.php b/wp-content/plugins/buddypress/bp-messages/screens/notices.php new file mode 100644 index 0000000000000000000000000000000000000000..0607cf27080f2d613e38827699e29fcef5c98dfe --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/notices.php @@ -0,0 +1,39 @@ +<?php +/** + * Messages: User's "Messages > Notices" screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Load the Messages > Notices screen. + * + * @since 1.0.0 + * + * @return false|null False on failure. + */ +function messages_screen_notices() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Fires right before the loading of the Messages notices screen template file. + * + * @since 1.0.0 + */ + do_action( 'messages_screen_notices' ); + + /** + * Filters the template to load for the Messages notices screen. + * + * @since 1.0.0 + * + * @param string $template Path to the messages template to load. + */ + bp_core_load_template( apply_filters( 'messages_template_notices', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/screens/sentbox.php b/wp-content/plugins/buddypress/bp-messages/screens/sentbox.php new file mode 100644 index 0000000000000000000000000000000000000000..5fd15a36add3fd2c04d4cd09164cdc3b3bfd9cfa --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/sentbox.php @@ -0,0 +1,37 @@ +<?php +/** + * Messages: User's "Messages > Sent" screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Load the Messages > Sent screen. + * + * @since 1.0.0 + */ +function messages_screen_sentbox() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Fires right before the loading of the Messages sentbox screen template file. + * + * @since 1.0.0 + */ + do_action( 'messages_screen_sentbox' ); + + /** + * Filters the template to load for the Messages sentbox screen. + * + * @since 1.0.0 + * + * @param string $template Path to the messages template to load. + */ + bp_core_load_template( apply_filters( 'messages_template_sentbox', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-messages/screens/starred.php b/wp-content/plugins/buddypress/bp-messages/screens/starred.php new file mode 100644 index 0000000000000000000000000000000000000000..13b1a7ec6e19b9aa5037a266de18b3d5a03ba943 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/starred.php @@ -0,0 +1,42 @@ +<?php +/** + * Messages: User's "Messages > Starred" screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Screen handler to display a user's "Starred" private messages page. + * + * @since 2.3.0 + */ +function bp_messages_star_screen() { + add_action( 'bp_template_content', 'bp_messages_star_content' ); + + /** + * Fires right before the loading of the "Starred" messages box. + * + * @since 2.3.0 + */ + do_action( 'bp_messages_screen_star' ); + + bp_core_load_template( 'members/single/plugins' ); +} + +/** + * Screen content callback to display a user's "Starred" messages page. + * + * @since 2.3.0 + */ +function bp_messages_star_content() { + // Add our message thread filter. + add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); + + // Load the message loop template part. + bp_get_template_part( 'members/single/messages/messages-loop' ); + + // Remove our filter. + remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); +} diff --git a/wp-content/plugins/buddypress/bp-messages/screens/view.php b/wp-content/plugins/buddypress/bp-messages/screens/view.php new file mode 100644 index 0000000000000000000000000000000000000000..885bce8f8668722d2ab6b6abb33768a95ee9760d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-messages/screens/view.php @@ -0,0 +1,77 @@ +<?php +/** + * Messages: Conversation thread screen handler + * + * @package BuddyPress + * @subpackage MessageScreens + * @since 3.0.0 + */ + +/** + * Load an individual conversation screen. + * + * @since 1.0.0 + * + * @return false|null False on failure. + */ +function messages_screen_conversation() { + + // Bail if not viewing a single message. + if ( ! bp_is_messages_component() || ! bp_is_current_action( 'view' ) ) { + return false; + } + + $thread_id = (int) bp_action_variable( 0 ); + + if ( empty( $thread_id ) || ! messages_is_valid_thread( $thread_id ) ) { + if ( is_user_logged_in() ) { + bp_core_add_message( __( 'The conversation you tried to access is no longer available', 'buddypress' ), 'error' ); + } + + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() ) ); + } + + // No access. + if ( ( ! messages_check_thread_access( $thread_id ) || ! bp_is_my_profile() ) && ! bp_current_user_can( 'bp_moderate' ) ) { + // If not logged in, prompt for login. + if ( ! is_user_logged_in() ) { + bp_core_no_access(); + return; + + // Redirect away. + } else { + bp_core_add_message( __( 'You do not have access to that conversation.', 'buddypress' ), 'error' ); + bp_core_redirect( trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ) ); + } + } + + // Load up BuddyPress one time. + $bp = buddypress(); + + // Decrease the unread count in the nav before it's rendered. + $count = bp_get_total_unread_messages_count(); + $class = ( 0 === $count ) ? 'no-count' : 'count'; + $nav_name = sprintf( __( 'Messages <span class="%s">%s</span>', 'buddypress' ), esc_attr( $class ), bp_core_number_format( $count ) ); + + // Edit the Navigation name. + $bp->members->nav->edit_nav( array( + 'name' => $nav_name, + ), $bp->messages->slug ); + + /** + * Fires right before the loading of the Messages view screen template file. + * + * @since 1.7.0 + */ + do_action( 'messages_screen_conversation' ); + + /** + * Filters the template to load for the Messages view screen. + * + * @since 1.0.0 + * + * @param string $template Path to the messages template to load. + */ + bp_core_load_template( apply_filters( 'messages_template_view_message', 'members/single/home' ) ); +} +add_action( 'bp_screens', 'messages_screen_conversation' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-notifications/actions/bulk-manage.php b/wp-content/plugins/buddypress/bp-notifications/actions/bulk-manage.php new file mode 100644 index 0000000000000000000000000000000000000000..02b03068a1df36c8315cd308923f28500ff51391 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-notifications/actions/bulk-manage.php @@ -0,0 +1,69 @@ +<?php +/** + * Notifications: Bulk-manage action handler + * + * @package BuddyPress + * @subpackage NotificationsActions + * @since 3.0.0 + */ + +/** + * Handles bulk management (mark as read/unread, delete) of notifications. + * + * @since 2.2.0 + * + * @return bool + */ +function bp_notifications_action_bulk_manage() { + + // Bail if not the read or unread screen. + if ( ! bp_is_notifications_component() || ! ( bp_is_current_action( 'read' ) || bp_is_current_action( 'unread' ) ) ) { + return false; + } + + // Get the action. + $action = !empty( $_POST['notification_bulk_action'] ) ? $_POST['notification_bulk_action'] : ''; + $nonce = !empty( $_POST['notifications_bulk_nonce'] ) ? $_POST['notifications_bulk_nonce'] : ''; + $notifications = !empty( $_POST['notifications'] ) ? $_POST['notifications'] : ''; + + // Bail if no action or no IDs. + if ( ( ! in_array( $action, array( 'delete', 'read', 'unread' ) ) ) || empty( $notifications ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce. + if ( ! wp_verify_nonce( $nonce, 'notifications_bulk_nonce' ) ) { + bp_core_add_message( __( 'There was a problem managing your notifications.', 'buddypress' ), 'error' ); + return false; + } + + $notifications = wp_parse_id_list( $notifications ); + + // Delete, mark as read or unread depending on the user 'action'. + switch ( $action ) { + case 'delete' : + foreach ( $notifications as $notification ) { + bp_notifications_delete_notification( $notification ); + } + bp_core_add_message( __( 'Notifications deleted.', 'buddypress' ) ); + break; + + case 'read' : + foreach ( $notifications as $notification ) { + bp_notifications_mark_notification( $notification, false ); + } + bp_core_add_message( __( 'Notifications marked as read', 'buddypress' ) ); + break; + + case 'unread' : + foreach ( $notifications as $notification ) { + bp_notifications_mark_notification( $notification, true ); + } + bp_core_add_message( __( 'Notifications marked as unread.', 'buddypress' ) ); + break; + } + + // Redirect. + bp_core_redirect( bp_displayed_user_domain() . bp_get_notifications_slug() . '/' . bp_current_action() . '/' ); +} +add_action( 'bp_actions', 'bp_notifications_action_bulk_manage' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-notifications/actions/delete.php b/wp-content/plugins/buddypress/bp-notifications/actions/delete.php new file mode 100644 index 0000000000000000000000000000000000000000..42aede5dc0ca4ca04511cbd5e52487b1e0331114 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-notifications/actions/delete.php @@ -0,0 +1,44 @@ +<?php +/** + * Notifications: Delete action handler + * + * @package BuddyPress + * @subpackage NotificationsActions + * @since 3.0.0 + */ + +/** + * Handle deleting single notifications. + * + * @since 1.9.0 + * + * @return bool + */ +function bp_notifications_action_delete() { + + // Bail if not the read or unread screen. + if ( ! bp_is_notifications_component() || ! ( bp_is_current_action( 'read' ) || bp_is_current_action( 'unread' ) ) ) { + return false; + } + + // Get the action. + $action = !empty( $_GET['action'] ) ? $_GET['action'] : ''; + $nonce = !empty( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : ''; + $id = !empty( $_GET['notification_id'] ) ? $_GET['notification_id'] : ''; + + // Bail if no action or no ID. + if ( ( 'delete' !== $action ) || empty( $id ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce and delete the notification. + if ( bp_verify_nonce_request( 'bp_notification_delete_' . $id ) && bp_notifications_delete_notification( $id ) ) { + bp_core_add_message( __( 'Notification successfully deleted.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem deleting that notification.', 'buddypress' ), 'error' ); + } + + // Redirect. + bp_core_redirect( bp_displayed_user_domain() . bp_get_notifications_slug() . '/' . bp_current_action() . '/' ); +} +add_action( 'bp_actions', 'bp_notifications_action_delete' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-cache.php b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-cache.php index 3d59e770fdc8301bcbc40722068a0dafe1c31d40..09f140a8af34729fed57f05079bcc7332818ff68 100644 --- a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-cache.php +++ b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-cache.php @@ -43,6 +43,8 @@ function bp_notifications_update_meta_cache( $notification_ids = false ) { */ function bp_notifications_clear_all_for_user_cache( $user_id = 0 ) { wp_cache_delete( 'all_for_user_' . $user_id, 'bp_notifications' ); + wp_cache_delete( $user_id, 'bp_notifications_unread_count' ); + wp_cache_delete( $user_id, 'bp_notifications_grouped_notifications' ); } /** diff --git a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-functions.php b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-functions.php index 09831f9f11cc920f2b9b1f7d554f910548b089ad..5ea05c8d58fa64e00a9c52885cc6c9f0a0ba9979 100644 --- a/wp-content/plugins/buddypress/bp-notifications/bp-notifications-functions.php +++ b/wp-content/plugins/buddypress/bp-notifications/bp-notifications-functions.php @@ -162,6 +162,32 @@ function bp_notifications_get_all_notifications_for_user( $user_id = 0 ) { return apply_filters( 'bp_notifications_get_all_notifications_for_user', $notifications, $user_id ); } +/** + * Get a user's unread notifications, grouped by component and action. + * + * This function returns a list of notifications collapsed by component + action. + * See BP_Notifications_Notification::get_grouped_notifications_for_user() for + * more details. + * + * @since 3.0.0 + * + * @param int $user_id ID of the user whose notifications are being fetched. + * @return array $notifications + */ +function bp_notifications_get_grouped_notifications_for_user( $user_id = 0 ) { + if ( empty( $user_id ) ) { + $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id(); + } + + $notifications = wp_cache_get( $user_id, 'bp_notifications_grouped_notifications' ); + if ( false === $notifications ) { + $notifications = BP_Notifications_Notification::get_grouped_notifications_for_user( $user_id ); + wp_cache_set( $user_id, $notifications, 'bp_notifications_grouped_notifications' ); + } + + return $notifications; +} + /** * Get notifications for a specific user. * @@ -173,160 +199,119 @@ function bp_notifications_get_all_notifications_for_user( $user_id = 0 ) { * @return mixed Object or array on success, false on failure. */ function bp_notifications_get_notifications_for_user( $user_id, $format = 'string' ) { - - // Setup local variables. $bp = buddypress(); - // Get notifications (out of the cache, or query if necessary). - $notifications = bp_notifications_get_all_notifications_for_user( $user_id ); - $grouped_notifications = array(); // Notification groups. - $renderable = array(); // Renderable notifications. - - // Group notifications by component and component_action and provide totals. - for ( $i = 0, $count = count( $notifications ); $i < $count; ++$i ) { - $notification = $notifications[$i]; - $grouped_notifications[$notification->component_name][$notification->component_action][] = $notification; - } - - // Bail if no notification groups. - if ( empty( $grouped_notifications ) ) { - return false; - } + $notifications = bp_notifications_get_grouped_notifications_for_user( $user_id ); // Calculate a renderable output for each notification type. - foreach ( $grouped_notifications as $component_name => $action_arrays ) { + foreach ( $notifications as $notification_item ) { + $component_name = $notification_item->component_name; // We prefer that extended profile component-related notifications use // the component_name of 'xprofile'. However, the extended profile child // object in the $bp object is keyed as 'profile', which is where we need // to look for the registered notification callback. - if ( 'xprofile' == $component_name ) { + if ( 'xprofile' == $notification_item->component_name ) { $component_name = 'profile'; } - // Skip if group is empty. - if ( empty( $action_arrays ) ) { - continue; - } - - // Loop through each actionable item and try to map it to a component. - foreach ( (array) $action_arrays as $component_action_name => $component_action_items ) { + // Callback function exists. + if ( isset( $bp->{$component_name}->notification_callback ) && is_callable( $bp->{$component_name}->notification_callback ) ) { - // Get the number of actionable items. - $action_item_count = count( $component_action_items ); + // Function should return an object. + if ( 'object' === $format ) { - // Skip if the count is less than 1. - if ( $action_item_count < 1 ) { - continue; - } + // Retrieve the content of the notification using the callback. + $content = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'array', $notification_item->id ); - // Callback function exists. - if ( isset( $bp->{$component_name}->notification_callback ) && is_callable( $bp->{$component_name}->notification_callback ) ) { - - // Function should return an object. - if ( 'object' === $format ) { - - // Retrieve the content of the notification using the callback. - $content = call_user_func( - $bp->{$component_name}->notification_callback, - $component_action_name, - $component_action_items[0]->item_id, - $component_action_items[0]->secondary_item_id, - $action_item_count, - 'array', - $component_action_items[0]->id - ); - - // Create the object to be returned. - $notification_object = $component_action_items[0]; - - // Minimal backpat with non-compatible notification - // callback functions. - if ( is_string( $content ) ) { - $notification_object->content = $content; - $notification_object->href = bp_loggedin_user_domain(); - } else { - $notification_object->content = $content['text']; - $notification_object->href = $content['link']; - } - - $renderable[] = $notification_object; + // Create the object to be returned. + $notification_object = $notification_item; - // Return an array of content strings. + // Minimal backpat with non-compatible notification + // callback functions. + if ( is_string( $content ) ) { + $notification_object->content = $content; + $notification_object->href = bp_loggedin_user_domain(); } else { - $content = call_user_func( $bp->{$component_name}->notification_callback, $component_action_name, $component_action_items[0]->item_id, $component_action_items[0]->secondary_item_id, $action_item_count, 'string', $component_action_items[0]->id ); - $renderable[] = $content; + $notification_object->content = $content['text']; + $notification_object->href = $content['link']; } + $renderable[] = $notification_object; + + // Return an array of content strings. + } else { + $content = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count, 'string', $notification_item->id ); + $renderable[] = $content; + } + // @deprecated format_notification_function - 1.5 - } elseif ( isset( $bp->{$component_name}->format_notification_function ) && function_exists( $bp->{$component_name}->format_notification_function ) ) { - $renderable[] = call_user_func( $bp->{$component_name}->format_notification_function, $component_action_name, $component_action_items[0]->item_id, $component_action_items[0]->secondary_item_id, $action_item_count ); + } elseif ( isset( $bp->{$component_name}->format_notification_function ) && function_exists( $bp->{$component_name}->format_notification_function ) ) { + $renderable[] = call_user_func( $bp->{$component_name}->notification_callback, $notification_item->component_action, $notification_item->item_id, $notification_item->secondary_item_id, $notification_item->total_count ); // Allow non BuddyPress components to hook in. - } else { + } else { + + // The array to reference with apply_filters_ref_array(). + $ref_array = array( + $notification_item->component_action, + $notification_item->item_id, + $notification_item->secondary_item_id, + $notification_item->total_count, + $format, + $notification_item->component_action, // Duplicated so plugins can check the canonical action name. + $component_name, + $notification_item->id, + ); + + // Function should return an object. + if ( 'object' === $format ) { + + /** + * Filters the notification content for notifications created by plugins. + * If your plugin extends the {@link BP_Component} class, you should use the + * 'notification_callback' parameter in your extended + * {@link BP_Component::setup_globals()} method instead. + * + * @since 1.9.0 + * @since 2.6.0 Added $component_action_name, $component_name, $id as parameters. + * + * @param string $content Component action. Deprecated. Do not do checks against this! Use + * the 6th parameter instead - $component_action_name. + * @param int $item_id Notification item ID. + * @param int $secondary_item_id Notification secondary item ID. + * @param int $action_item_count Number of notifications with the same action. + * @param string $format Format of return. Either 'string' or 'object'. + * @param string $component_action_name Canonical notification action. + * @param string $component_name Notification component ID. + * @param int $id Notification ID. + * + * @return string|array If $format is 'string', return a string of the notification content. + * If $format is 'object', return an array formatted like: + * array( 'text' => 'CONTENT', 'link' => 'LINK' ) + */ + $content = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); + + // Create the object to be returned. + $notification_object = $notification_item; + + // Minimal backpat with non-compatible notification + // callback functions. + if ( is_string( $content ) ) { + $notification_object->content = $content; + $notification_object->href = bp_loggedin_user_domain(); + } else { + $notification_object->content = $content['text']; + $notification_object->href = $content['link']; + } - // The array to reference with apply_filters_ref_array(). - $ref_array = array( - $component_action_name, - $component_action_items[0]->item_id, - $component_action_items[0]->secondary_item_id, - $action_item_count, - $format, - $component_action_name, // Duplicated so plugins can check the canonical action name. - $component_name, - $component_action_items[0]->id - ); - - // Function should return an object. - if ( 'object' === $format ) { - - /** - * Filters the notification content for notifications created by plugins. - * - * If your plugin extends the {@link BP_Component} class, you should use the - * 'notification_callback' parameter in your extended - * {@link BP_Component::setup_globals()} method instead. - * - * @since 1.9.0 - * @since 2.6.0 Added $component_action_name, $component_name, $id as parameters. - * - * @param string $content Component action. Deprecated. Do not do checks against this! Use - * the 6th parameter instead - $component_action_name. - * @param int $item_id Notification item ID. - * @param int $secondary_item_id Notification secondary item ID. - * @param int $action_item_count Number of notifications with the same action. - * @param string $format Format of return. Either 'string' or 'object'. - * @param string $component_action_name Canonical notification action. - * @param string $component_name Notification component ID. - * @param int $id Notification ID. - * - * @return string|array If $format is 'string', return a string of the notification content. - * If $format is 'object', return an array formatted like: - * array( 'text' => 'CONTENT', 'link' => 'LINK' ) - */ - $content = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); - - // Create the object to be returned. - $notification_object = $component_action_items[0]; - - // Minimal backpat with non-compatible notification - // callback functions. - if ( is_string( $content ) ) { - $notification_object->content = $content; - $notification_object->href = bp_loggedin_user_domain(); - } else { - $notification_object->content = $content['text']; - $notification_object->href = $content['link']; - } - - $renderable[] = $notification_object; + $renderable[] = $notification_object; // Return an array of content strings. - } else { + } else { - /** This filters is documented in bp-notifications/bp-notifications-functions.php */ - $renderable[] = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); - } + /** This filters is documented in bp-notifications/bp-notifications-functions.php */ + $renderable[] = apply_filters_ref_array( 'bp_notifications_get_notifications_for_user', $ref_array ); } } } @@ -607,8 +592,18 @@ function bp_notifications_check_notification_access( $user_id, $notification_id * @return int Unread notification count. */ function bp_notifications_get_unread_notification_count( $user_id = 0 ) { - $notifications = bp_notifications_get_all_notifications_for_user( $user_id ); - $count = ! empty( $notifications ) ? count( $notifications ) : 0; + if ( empty( $user_id ) ) { + $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id(); + } + + $count = wp_cache_get( $user_id, 'bp_notifications_unread_count' ); + if ( false === $count ) { + $count = BP_Notifications_Notification::get_total_count( array( + 'user_id' => $user_id, + 'is_new' => true, + ) ); + wp_cache_set( $user_id, $count, 'bp_notifications_unread_count' ); + } /** * Filters the count of unread notification items for a user. @@ -666,6 +661,15 @@ function bp_notifications_get_registered_components() { return apply_filters( 'bp_notifications_get_registered_components', $component_names, $active_components ); } +/** + * Catch and route the 'settings' notifications screen. + * + * This is currently unused. + * + * @since 1.9.0 + */ +function bp_notifications_screen_settings() {} + /** Meta **********************************************************************/ /** 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 8eaffe4db2df73d2dfc8e63be2751feea502fffb..5a4c1261bab914a60151adf1067e957c74636e1f 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 @@ -44,8 +44,6 @@ class BP_Notifications_Component extends BP_Component { */ public function includes( $includes = array() ) { $includes = array( - 'actions', - 'screens', 'adminbar', 'template', 'functions', @@ -55,6 +53,38 @@ class BP_Notifications_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Bail if not on a notifications page or logged in. + if ( ! bp_is_user_notifications() || ! is_user_logged_in() ) { + return; + } + + // Actions. + if ( bp_is_post_request() ) { + require $this->path . 'bp-notifications/actions/bulk-manage.php'; + } elseif ( bp_is_get_request() ) { + require $this->path . 'bp-notifications/actions/delete.php'; + } + + // Screens. + require $this->path . 'bp-notifications/screens/unread.php'; + if ( bp_is_current_action( 'read' ) ) { + require $this->path . 'bp-notifications/screens/read.php'; + } + } + /** * Set up component global data. * 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 b96de80fae997e3aefb12d1483d1378c1810a391..45fbe41234469167dd3f43b4201b76fab20fe4a1 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 @@ -816,7 +816,7 @@ class BP_Notifications_Notification { } // Date query. - $date_query = new BP_Date_Query( $date_query, 'date_recorded' ); + $date_query = new BP_Date_Query( $date_query, 'date_notified' ); // Strip the leading AND - it's handled in get(). return preg_replace( '/^\sAND/', '', $date_query->get_sql() ); @@ -1131,4 +1131,50 @@ class BP_Notifications_Notification { return self::update( $update_args, $where_args ); } + + /** + * Get a user's unread notifications, grouped by component and action. + * + * Multiple notifications of the same type (those that share the same component_name + * and component_action) are collapsed for formatting as "You have 5 pending + * friendship requests", etc. See bp_notifications_get_notifications_for_user(). + * For a full-fidelity list of user notifications, use + * bp_notifications_get_all_notifications_for_user(). + * + * @since 3.0.0 + * + * @param int $user_id ID of the user whose notifications are being fetched. + * @return array Notifications items for formatting into a list. + */ + public static function get_grouped_notifications_for_user( $user_id ) { + global $wpdb; + + // Load BuddyPress. + $bp = buddypress(); + + // SELECT. + $select_sql = "SELECT id, user_id, item_id, secondary_item_id, component_name, component_action, date_notified, is_new, COUNT(id) as total_count "; + + // FROM. + $from_sql = "FROM {$bp->notifications->table_name} n "; + + // WHERE. + $where_sql = self::get_where_sql( array( + 'user_id' => $user_id, + 'is_new' => 1, + 'component_name' => bp_notifications_get_registered_components(), + ), $select_sql, $from_sql ); + + // GROUP + $group_sql = "GROUP BY user_id, component_name, component_action"; + + // SORT + $order_sql = "ORDER BY date_notified desc"; + + // Concatenate query parts. + $sql = "{$select_sql} {$from_sql} {$where_sql} {$group_sql} {$order_sql}"; + + // Return the queried results. + return $wpdb->get_results( $sql ); + } } diff --git a/wp-content/plugins/buddypress/bp-notifications/screens/read.php b/wp-content/plugins/buddypress/bp-notifications/screens/read.php new file mode 100644 index 0000000000000000000000000000000000000000..49ff6d4da5a9b7cc8683ff73d519378a10d6c769 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-notifications/screens/read.php @@ -0,0 +1,68 @@ +<?php +/** + * Notifications: User's "Notifications > Read" screen handler + * + * @package BuddyPress + * @subpackage NotificationsScreens + * @since 3.0.0 + */ + +/** + * Catch and route the 'read' notifications screen. + * + * @since 1.9.0 + */ +function bp_notifications_screen_read() { + + /** + * Fires right before the loading of the notifications read screen template file. + * + * @since 1.9.0 + */ + do_action( 'bp_notifications_screen_read' ); + + /** + * Filters the template to load for the notifications read screen. + * + * @since 1.9.0 + * + * @param string $template Path to the notifications read template to load. + */ + bp_core_load_template( apply_filters( 'bp_notifications_template_read', 'members/single/home' ) ); +} + +/** + * Handle marking single notifications as unread. + * + * @since 1.9.0 + * + * @return bool + */ +function bp_notifications_action_mark_unread() { + + // Bail if not the read screen. + if ( ! bp_is_notifications_component() || ! bp_is_current_action( 'read' ) ) { + return false; + } + + // Get the action. + $action = !empty( $_GET['action'] ) ? $_GET['action'] : ''; + $nonce = !empty( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : ''; + $id = !empty( $_GET['notification_id'] ) ? $_GET['notification_id'] : ''; + + // Bail if no action or no ID. + if ( ( 'unread' !== $action ) || empty( $id ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce and mark the notification. + if ( bp_verify_nonce_request( 'bp_notification_mark_unread_' . $id ) && bp_notifications_mark_notification( $id, true ) ) { + bp_core_add_message( __( 'Notification successfully marked unread.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem marking that notification.', 'buddypress' ), 'error' ); + } + + // Redirect. + bp_core_redirect( bp_displayed_user_domain() . bp_get_notifications_slug() . '/read/' ); +} +add_action( 'bp_actions', 'bp_notifications_action_mark_unread' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-notifications/screens/unread.php b/wp-content/plugins/buddypress/bp-notifications/screens/unread.php new file mode 100644 index 0000000000000000000000000000000000000000..d324afa935967730ea8d0a12033f06b3e968f693 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-notifications/screens/unread.php @@ -0,0 +1,68 @@ +<?php +/** + * Notifications: User's "Notifications" screen handler + * + * @package BuddyPress + * @subpackage NotificationsScreens + * @since 3.0.0 + */ + +/** + * Catch and route the 'unread' notifications screen. + * + * @since 1.9.0 + */ +function bp_notifications_screen_unread() { + + /** + * Fires right before the loading of the notifications unread screen template file. + * + * @since 1.9.0 + */ + do_action( 'bp_notifications_screen_unread' ); + + /** + * Filters the template to load for the notifications unread screen. + * + * @since 1.9.0 + * + * @param string $template Path to the notifications unread template to load. + */ + bp_core_load_template( apply_filters( 'bp_notifications_template_unread', 'members/single/home' ) ); +} + +/** + * Handle marking single notifications as read. + * + * @since 1.9.0 + * + * @return bool + */ +function bp_notifications_action_mark_read() { + + // Bail if not the unread screen. + if ( ! bp_is_notifications_component() || ! bp_is_current_action( 'unread' ) ) { + return false; + } + + // Get the action. + $action = !empty( $_GET['action'] ) ? $_GET['action'] : ''; + $nonce = !empty( $_GET['_wpnonce'] ) ? $_GET['_wpnonce'] : ''; + $id = !empty( $_GET['notification_id'] ) ? $_GET['notification_id'] : ''; + + // Bail if no action or no ID. + if ( ( 'read' !== $action ) || empty( $id ) || empty( $nonce ) ) { + return false; + } + + // Check the nonce and mark the notification. + if ( bp_verify_nonce_request( 'bp_notification_mark_read_' . $id ) && bp_notifications_mark_notification( $id, false ) ) { + bp_core_add_message( __( 'Notification successfully marked read.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem marking that notification.', 'buddypress' ), 'error' ); + } + + // Redirect. + bp_core_redirect( bp_displayed_user_domain() . bp_get_notifications_slug() . '/unread/' ); +} +add_action( 'bp_actions', 'bp_notifications_action_mark_read' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/actions/capabilities.php b/wp-content/plugins/buddypress/bp-settings/actions/capabilities.php new file mode 100644 index 0000000000000000000000000000000000000000..322c8688b0edca6c58d569c2350cafa7dcd31464 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/actions/capabilities.php @@ -0,0 +1,83 @@ +<?php +/** + * Settings: Capabilities action handler + * + * @package BuddyPress + * @subpackage SettingsActions + * @since 3.0.0 + */ + +/** + * Handles the setting of user capabilities, spamming, hamming, role, etc... + * + * @since 1.6.0 + */ +function bp_settings_action_capabilities() { + if ( ! bp_is_post_request() ) { + return; + } + + // Bail if no submit action. + if ( ! isset( $_POST['capabilities-submit'] ) ) { + return; + } + + // Bail if not in settings. + if ( ! bp_is_settings_component() || ! bp_is_current_action( 'capabilities' ) ) { + return false; + } + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Only super admins can currently spam users (but they can't spam + // themselves). + if ( ! is_super_admin() || bp_is_my_profile() ) { + return; + } + + // Nonce check. + check_admin_referer( 'capabilities' ); + + /** + * Fires before the capabilities settings have been saved. + * + * @since 1.6.0 + */ + do_action( 'bp_settings_capabilities_before_save' ); + + /* Spam **************************************************************/ + + $is_spammer = !empty( $_POST['user-spammer'] ) ? true : false; + + if ( bp_is_user_spammer( bp_displayed_user_id() ) != $is_spammer ) { + $status = ( true == $is_spammer ) ? 'spam' : 'ham'; + bp_core_process_spammer_status( bp_displayed_user_id(), $status ); + + /** + * Fires after processing a user as a spammer. + * + * @since 1.1.0 + * + * @param int $value ID of the currently displayed user. + * @param string $status Determined status of "spam" or "ham" for the displayed user. + */ + do_action( 'bp_core_action_set_spammer_status', bp_displayed_user_id(), $status ); + } + + /* Other *************************************************************/ + + /** + * Fires after the capabilities settings have been saved and before redirect. + * + * @since 1.6.0 + */ + do_action( 'bp_settings_capabilities_after_save' ); + + // Redirect to the root domain. + bp_core_redirect( bp_displayed_user_domain() . bp_get_settings_slug() . '/capabilities/' ); +} +add_action( 'bp_actions', 'bp_settings_action_capabilities' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/actions/delete-account.php b/wp-content/plugins/buddypress/bp-settings/actions/delete-account.php new file mode 100644 index 0000000000000000000000000000000000000000..d180fd99cfa3f51ace192cacb0381d8c3dfa98de --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/actions/delete-account.php @@ -0,0 +1,57 @@ +<?php +/** + * Settings: Account deletion action handler + * + * @package BuddyPress + * @subpackage SettingsActions + * @since 3.0.0 + */ + +/** + * Handles the deleting of a user. + * + * @since 1.6.0 + */ +function bp_settings_action_delete_account() { + if ( ! bp_is_post_request() ) { + return; + } + + // Bail if no submit action. + if ( ! isset( $_POST['delete-account-understand'] ) ) { + return; + } + + // Bail if not in settings. + if ( ! bp_is_settings_component() || ! bp_is_current_action( 'delete-account' ) ) { + return false; + } + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Bail if account deletion is disabled. + if ( bp_disable_account_deletion() && ! bp_current_user_can( 'delete_users' ) ) { + return false; + } + + // Nonce check. + check_admin_referer( 'delete-account' ); + + // Get username now because it might be gone soon! + $username = bp_get_displayed_user_fullname(); + + // Delete the users account. + if ( bp_core_delete_account( bp_displayed_user_id() ) ) { + + // Add feedback after deleting a user. + bp_core_add_message( sprintf( __( '%s was successfully deleted.', 'buddypress' ), $username ), 'success' ); + + // Redirect to the root domain. + bp_core_redirect( bp_get_root_domain() ); + } +} +add_action( 'bp_actions', 'bp_settings_action_delete_account' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/actions/general.php b/wp-content/plugins/buddypress/bp-settings/actions/general.php new file mode 100644 index 0000000000000000000000000000000000000000..62a6c9e9cbae849beb94f20e0499a2f386940cc1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/actions/general.php @@ -0,0 +1,311 @@ +<?php +/** + * Settings: Email address and password action handler + * + * @package BuddyPress + * @subpackage SettingsActions + * @since 3.0.0 + */ + +/** + * Handles the changing and saving of user email addresses and passwords. + * + * We do quite a bit of logic and error handling here to make sure that users + * do not accidentally lock themselves out of their accounts. We also try to + * provide as accurate of feedback as possible without exposing anyone else's + * information to them. + * + * Special considerations are made for super admins that are able to edit any + * users accounts already, without knowing their existing password. + * + * @since 1.6.0 + * + * @global BuddyPress $bp + */ +function bp_settings_action_general() { + if ( ! bp_is_post_request() ) { + return; + } + + // Bail if no submit action. + if ( ! isset( $_POST['submit'] ) ) { + return; + } + + // Bail if not in settings. + if ( ! bp_is_settings_component() || ! bp_is_current_action( 'general' ) ) { + return; + } + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Define local defaults + $bp = buddypress(); // The instance + $email_error = false; // invalid|blocked|taken|empty|nochange + $pass_error = false; // invalid|mismatch|empty|nochange + $pass_changed = false; // true if the user changes their password + $email_changed = false; // true if the user changes their email + $feedback_type = 'error'; // success|error + $feedback = array(); // array of strings for feedback. + + // Nonce check. + check_admin_referer('bp_settings_general'); + + // Validate the user again for the current password when making a big change. + if ( ( is_super_admin() ) || ( !empty( $_POST['pwd'] ) && wp_check_password( $_POST['pwd'], $bp->displayed_user->userdata->user_pass, bp_displayed_user_id() ) ) ) { + + $update_user = get_userdata( bp_displayed_user_id() ); + + /* Email Change Attempt ******************************************/ + + if ( !empty( $_POST['email'] ) ) { + + // What is missing from the profile page vs signup - + // let's double check the goodies. + $user_email = sanitize_email( esc_html( trim( $_POST['email'] ) ) ); + $old_user_email = $bp->displayed_user->userdata->user_email; + + // User is changing email address. + if ( $old_user_email != $user_email ) { + + // Run some tests on the email address. + $email_checks = bp_core_validate_email_address( $user_email ); + + if ( true !== $email_checks ) { + if ( isset( $email_checks['invalid'] ) ) { + $email_error = 'invalid'; + } + + if ( isset( $email_checks['domain_banned'] ) || isset( $email_checks['domain_not_allowed'] ) ) { + $email_error = 'blocked'; + } + + if ( isset( $email_checks['in_use'] ) ) { + $email_error = 'taken'; + } + } + + // Store a hash to enable email validation. + if ( false === $email_error ) { + $hash = wp_generate_password( 32, false ); + + $pending_email = array( + 'hash' => $hash, + 'newemail' => $user_email, + ); + + bp_update_user_meta( bp_displayed_user_id(), 'pending_email_change', $pending_email ); + $verify_link = bp_displayed_user_domain() . bp_get_settings_slug() . '/?verify_email_change=' . $hash; + + // Send the verification email. + $args = array( + 'tokens' => array( + 'displayname' => bp_core_get_user_displayname( bp_displayed_user_id() ), + 'old-user.email' => $old_user_email, + 'user.email' => $user_email, + 'verify.url' => esc_url( $verify_link ), + ), + ); + bp_send_email( 'settings-verify-email-change', bp_displayed_user_id(), $args ); + + // We mark that the change has taken place so as to ensure a + // success message, even though verification is still required. + $_POST['email'] = $update_user->user_email; + $email_changed = true; + } + + // No change. + } else { + $email_error = false; + } + + // Email address cannot be empty. + } else { + $email_error = 'empty'; + } + + /* Password Change Attempt ***************************************/ + + if ( !empty( $_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) { + + if ( ( $_POST['pass1'] == $_POST['pass2'] ) && !strpos( " " . wp_unslash( $_POST['pass1'] ), "\\" ) ) { + + // Password change attempt is successful. + if ( ( ! empty( $_POST['pwd'] ) && $_POST['pwd'] != $_POST['pass1'] ) || is_super_admin() ) { + $update_user->user_pass = $_POST['pass1']; + $pass_changed = true; + + // The new password is the same as the current password. + } else { + $pass_error = 'same'; + } + + // Password change attempt was unsuccessful. + } else { + $pass_error = 'mismatch'; + } + + // Both password fields were empty. + } elseif ( empty( $_POST['pass1'] ) && empty( $_POST['pass2'] ) ) { + $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'; + } + + // The structure of the $update_user object changed in WP 3.3, but + // wp_update_user() still expects the old format. + if ( isset( $update_user->data ) && is_object( $update_user->data ) ) { + $update_user = $update_user->data; + $update_user = get_object_vars( $update_user ); + + // Unset the password field to prevent it from emptying out the + // user's user_pass field in the database. + // @see wp_update_user(). + if ( false === $pass_changed ) { + unset( $update_user['user_pass'] ); + } + } + + // Clear cached data, so that the changed settings take effect + // on the current page load. + if ( ( false === $email_error ) && ( false === $pass_error ) && ( wp_update_user( $update_user ) ) ) { + $bp->displayed_user->userdata = bp_core_get_core_userdata( bp_displayed_user_id() ); + } + + // Password Error. + } else { + $pass_error = 'invalid'; + } + + // Email feedback. + switch ( $email_error ) { + case 'invalid' : + $feedback['email_invalid'] = __( 'That email address is invalid. Check the formatting and try again.', 'buddypress' ); + break; + case 'blocked' : + $feedback['email_blocked'] = __( 'That email address is currently unavailable for use.', 'buddypress' ); + break; + case 'taken' : + $feedback['email_taken'] = __( 'That email address is already taken.', 'buddypress' ); + break; + case 'empty' : + $feedback['email_empty'] = __( 'Email address cannot be empty.', 'buddypress' ); + break; + case false : + // No change. + 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; + } + + // No errors so show a simple success message. + if ( ( ( false === $email_error ) || ( false == $pass_error ) ) && ( ( true === $pass_changed ) || ( true === $email_changed ) ) ) { + $feedback[] = __( 'Your settings have been saved.', 'buddypress' ); + $feedback_type = 'success'; + + // Some kind of errors occurred. + } elseif ( ( ( false === $email_error ) || ( false === $pass_error ) ) && ( ( false === $pass_changed ) || ( false === $email_changed ) ) ) { + if ( bp_is_my_profile() ) { + $feedback['nochange'] = __( 'No changes were made to your account.', 'buddypress' ); + } else { + $feedback['nochange'] = __( 'No changes were made to this account.', 'buddypress' ); + } + } + + // Set the feedback. + bp_core_add_message( implode( "\n", $feedback ), $feedback_type ); + + /** + * Fires after the general settings have been saved, and before redirect. + * + * @since 1.5.0 + */ + do_action( 'bp_core_general_settings_after_save' ); + + // Redirect to prevent issues with browser back button. + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ) ); +} +add_action( 'bp_actions', 'bp_settings_action_general' ); + +/** + * Process email change verification or cancel requests. + * + * @since 2.1.0 + */ +function bp_settings_verify_email_change() { + if ( ! bp_is_settings_component() ) { + return; + } + + if ( ! bp_is_my_profile() ) { + return; + } + + $redirect_to = trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() ); + + // Email change is being verified. + if ( isset( $_GET['verify_email_change'] ) ) { + $pending_email = bp_get_user_meta( bp_displayed_user_id(), 'pending_email_change', true ); + + // Bail if the hash provided doesn't match the one saved in the database. + if ( ! hash_equals( urldecode( $_GET['verify_email_change'] ), $pending_email['hash'] ) ) { + return; + } + + $email_changed = wp_update_user( array( + 'ID' => bp_displayed_user_id(), + 'user_email' => trim( $pending_email['newemail'] ), + ) ); + + if ( $email_changed ) { + + // Delete the pending email change key. + bp_delete_user_meta( bp_displayed_user_id(), 'pending_email_change' ); + + // Post a success message and redirect. + bp_core_add_message( __( 'You have successfully verified your new email address.', 'buddypress' ) ); + } else { + // Unknown error. + bp_core_add_message( __( 'There was a problem verifying your new email address. Please try again.', 'buddypress' ), 'error' ); + } + + bp_core_redirect( $redirect_to ); + die(); + + // Email change is being dismissed. + } elseif ( ! empty( $_GET['dismiss_email_change'] ) ) { + $nonce_check = isset( $_GET['_wpnonce'] ) && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), 'bp_dismiss_email_change' ); + + if ( $nonce_check ) { + bp_delete_user_meta( bp_displayed_user_id(), 'pending_email_change' ); + bp_core_add_message( __( 'You have successfully dismissed your pending email change.', 'buddypress' ) ); + } + + bp_core_redirect( $redirect_to ); + die(); + } +} +add_action( 'bp_actions', 'bp_settings_verify_email_change' ); diff --git a/wp-content/plugins/buddypress/bp-settings/actions/notifications.php b/wp-content/plugins/buddypress/bp-settings/actions/notifications.php new file mode 100644 index 0000000000000000000000000000000000000000..f7e3ea4126c708fca872d0ae75e471ae99b1c841 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/actions/notifications.php @@ -0,0 +1,56 @@ +<?php +/** + * Settings: Email notifications action handler + * + * @package BuddyPress + * @subpackage SettingsActions + * @since 3.0.0 + */ + +/** + * Handles the changing and saving of user notification settings. + * + * @since 1.6.0 + */ +function bp_settings_action_notifications() { + if ( ! bp_is_post_request() ) { + return; + } + + // Bail if no submit action. + if ( ! isset( $_POST['submit'] ) ) { + return; + } + + // Bail if not in settings. + if ( ! bp_is_settings_component() || ! bp_is_current_action( 'notifications' ) ) { + return false; + } + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + check_admin_referer( 'bp_settings_notifications' ); + + bp_settings_update_notification_settings( bp_displayed_user_id(), (array) $_POST['notifications'] ); + + // Switch feedback for super admins. + if ( bp_is_my_profile() ) { + bp_core_add_message( __( 'Your notification settings have been saved.', 'buddypress' ), 'success' ); + } else { + bp_core_add_message( __( "This user's notification settings have been saved.", 'buddypress' ), 'success' ); + } + + /** + * Fires after the notification settings have been saved, and before redirect. + * + * @since 1.5.0 + */ + do_action( 'bp_core_notification_settings_after_save' ); + + bp_core_redirect( bp_displayed_user_domain() . bp_get_settings_slug() . '/notifications/' ); +} +add_action( 'bp_actions', 'bp_settings_action_notifications' ); \ No newline at end of file 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 7d5bb110fe3b62beb7456cede098fb9e57908f55..6439ab9802436b114d8381a87249cec478bdb5fc 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 @@ -42,13 +42,53 @@ class BP_Settings_Component extends BP_Component { */ public function includes( $includes = array() ) { parent::includes( array( - 'actions', - 'screens', 'template', 'functions', ) ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Bail if not on Settings component. + if ( ! bp_is_settings_component() ) { + return; + } + + $actions = array( 'notifications', 'capabilities', 'delete-account' ); + + // Authenticated actions. + if ( is_user_logged_in() ) { + if ( ! bp_current_action() || bp_is_current_action( 'general' ) ) { + require $this->path . 'bp-settings/actions/general.php'; + + // Specific to post requests. + } elseif ( bp_is_post_request() && in_array( bp_current_action(), $actions, true ) ) { + require $this->path . 'bp-settings/actions/' . bp_current_action() . '.php'; + } + } + + // Screens - User profile integration. + if ( bp_is_user() ) { + require $this->path . 'bp-settings/screens/general.php'; + + // Sub-nav items. + if ( in_array( bp_current_action(), $actions, true ) ) { + require $this->path . 'bp-settings/screens/' . bp_current_action() . '.php'; + } + } + } + /** * Setup globals. * diff --git a/wp-content/plugins/buddypress/bp-settings/screens/capabilities.php b/wp-content/plugins/buddypress/bp-settings/screens/capabilities.php new file mode 100644 index 0000000000000000000000000000000000000000..7d64cbc405632f19badc93d7fd94ae4fb5ffb282 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/screens/capabilities.php @@ -0,0 +1,30 @@ +<?php +/** + * Settings: User's "Settings > Capabilities" screen handler + * + * @package BuddyPress + * @subpackage SettingsScreens + * @since 3.0.0 + */ + +/** + * Show the capabilities settings template. + * + * @since 1.6.0 + */ +function bp_settings_screen_capabilities() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Filters the template file path to use for the capabilities settings screen. + * + * @since 1.6.0 + * + * @param string $value Directory path to look in for the template file. + */ + bp_core_load_template( apply_filters( 'bp_settings_screen_capabilities', 'members/single/settings/capabilities' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/screens/delete-account.php b/wp-content/plugins/buddypress/bp-settings/screens/delete-account.php new file mode 100644 index 0000000000000000000000000000000000000000..9258044c259fc56417a23f0499307ffb1640e97c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/screens/delete-account.php @@ -0,0 +1,30 @@ +<?php +/** + * Settings: User's "Settings > Delete Account" screen handler + * + * @package BuddyPress + * @subpackage SettingsScreens + * @since 3.0.0 + */ + +/** + * Show the delete-account settings template. + * + * @since 1.5.0 + */ +function bp_settings_screen_delete_account() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Filters the template file path to use for the delete-account settings screen. + * + * @since 1.6.0 + * + * @param string $value Directory path to look in for the template file. + */ + bp_core_load_template( apply_filters( 'bp_settings_screen_delete_account', 'members/single/settings/delete-account' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/screens/general.php b/wp-content/plugins/buddypress/bp-settings/screens/general.php new file mode 100644 index 0000000000000000000000000000000000000000..9fef185d895a7e6d7f3ee58ad00d03f187e92fc2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/screens/general.php @@ -0,0 +1,42 @@ +<?php +/** + * Settings: User's "Settings" screen handler + * + * @package BuddyPress + * @subpackage SettingsScreens + * @since 3.0.0 + */ + +/** + * Show the general settings template. + * + * @since 1.5.0 + */ +function bp_settings_screen_general() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Filters the template file path to use for the general settings screen. + * + * @since 1.6.0 + * + * @param string $value Directory path to look in for the template file. + */ + bp_core_load_template( apply_filters( 'bp_settings_screen_general_settings', 'members/single/settings/general' ) ); +} + +/** + * Removes 'Email' sub nav, if no component has registered options there. + * + * @since 2.2.0 + */ +function bp_settings_remove_email_subnav() { + if ( ! has_action( 'bp_notification_settings' ) ) { + bp_core_remove_subnav_item( BP_SETTINGS_SLUG, 'notifications' ); + } +} +add_action( 'bp_actions', 'bp_settings_remove_email_subnav' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-settings/screens/notifications.php b/wp-content/plugins/buddypress/bp-settings/screens/notifications.php new file mode 100644 index 0000000000000000000000000000000000000000..5fa66f87809302bd42ee1c037232ed554233aeaf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-settings/screens/notifications.php @@ -0,0 +1,30 @@ +<?php +/** + * Settings: User's "Settings > Email" screen handler + * + * @package BuddyPress + * @subpackage SettingsScreens + * @since 3.0.0 + */ + +/** + * Show the notifications settings template. + * + * @since 1.5.0 + */ +function bp_settings_screen_notification() { + + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + /** + * Filters the template file path to use for the notification settings screen. + * + * @since 1.6.0 + * + * @param string $value Directory path to look in for the template file. + */ + bp_core_load_template( apply_filters( 'bp_settings_screen_notification_settings', 'members/single/settings/notifications' ) ); +} \ No newline at end of file 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 ade8604a185828e4a8074e001179c41de1d45d1b..0743b60b4dddfee19779fb18755992559f5fcb6a 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 @@ -6,6 +6,7 @@ * * @package BuddyPress * @subpackage BP_Theme_Compat + * @version 3.1.0 */ // Exit if accessed directly. @@ -106,7 +107,6 @@ class BP_Legacy extends BP_Theme_Compat { // Group buttons. if ( bp_is_active( 'groups' ) ) { add_action( 'bp_group_header_actions', 'bp_group_join_button', 5 ); - add_action( 'bp_group_header_actions', 'bp_group_new_topic_button', 20 ); add_action( 'bp_directory_groups_actions', 'bp_group_join_button' ); add_action( 'bp_groups_directory_group_filter', 'bp_legacy_theme_group_create_nav', 999 ); add_action( 'bp_after_group_admin_content', 'bp_legacy_groups_admin_screen_hidden_input' ); @@ -383,20 +383,30 @@ class BP_Legacy extends BP_Theme_Compat { // No need to check child if template == stylesheet. if ( is_child_theme() ) { - $locations['bp-child'] = array( + $locations[] = array( + 'type' => 'bp-child', + 'dir' => get_stylesheet_directory(), + 'uri' => get_stylesheet_directory_uri(), + 'file' => $file, + ); + + $locations[] = array( + 'type' => 'bp-child', 'dir' => get_stylesheet_directory(), 'uri' => get_stylesheet_directory_uri(), 'file' => str_replace( '.min', '', $file ), ); } - $locations['bp-parent'] = array( + $locations[] = array( + 'type' => 'bp-parent', 'dir' => get_template_directory(), 'uri' => get_template_directory_uri(), 'file' => str_replace( '.min', '', $file ), ); - $locations['bp-legacy'] = array( + $locations[] = array( + 'type' => 'bp-legacy', 'dir' => bp_get_theme_compat_dir(), 'uri' => bp_get_theme_compat_url(), 'file' => $file, @@ -411,11 +421,11 @@ class BP_Legacy extends BP_Theme_Compat { $retval = array(); - foreach ( $locations as $location_type => $location ) { + foreach ( $locations as $location ) { foreach ( $subdirs as $subdir ) { if ( file_exists( trailingslashit( $location['dir'] ) . trailingslashit( $subdir ) . $location['file'] ) ) { $retval['location'] = trailingslashit( $location['uri'] ) . trailingslashit( $subdir ) . $location['file']; - $retval['handle'] = ( $script_handle ) ? $script_handle : "{$location_type}-{$type}"; + $retval['handle'] = ( $script_handle ) ? $script_handle : "{$location['type']}-{$type}"; break 2; } @@ -730,7 +740,7 @@ function bp_legacy_theme_ajax_querystring( $query_string, $object ) { } $object_search_text = bp_get_search_default_text( $object ); - if ( ! empty( $_POST['search_terms'] ) && $object_search_text != $_POST['search_terms'] && 'false' != $_POST['search_terms'] && 'undefined' != $_POST['search_terms'] ) + if ( ! empty( $_POST['search_terms'] ) && is_string( $_POST['search_terms'] ) && $object_search_text != $_POST['search_terms'] && 'false' != $_POST['search_terms'] && 'undefined' != $_POST['search_terms'] ) $qs[] = 'search_terms=' . urlencode( $_POST['search_terms'] ); // Now pass the querystring to override default values. @@ -780,20 +790,22 @@ function bp_legacy_theme_ajax_querystring( $query_string, $object ) { * @return string|null Prints template loop for the specified object */ function bp_legacy_theme_object_template_loader() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Bail if no object passed. - if ( empty( $_POST['object'] ) ) + if ( empty( $_POST['object'] ) ) { return; + } // Sanitize the object. $object = sanitize_title( $_POST['object'] ); // Bail if object is not an active component to prevent arbitrary file inclusion. - if ( ! bp_is_active( $object ) ) + if ( ! bp_is_active( $object ) ) { return; + } /** * AJAX requests happen too early to be seen by bp_update_is_directory() @@ -804,15 +816,18 @@ function bp_legacy_theme_object_template_loader() { if ( ! bp_current_action() ) bp_update_is_directory( true, bp_current_component() ); - $template_part = $object . '/' . $object . '-loop'; - // The template part can be overridden by the calling JS function. - if ( ! empty( $_POST['template'] ) ) { - $template_part = sanitize_option( 'upload_path', $_POST['template'] ); + if ( ! empty( $_POST['template'] ) && 'groups/single/members' === $_POST['template'] ) { + $template_part = 'groups/single/members.php'; + } else { + $template_part = $object . '/' . $object . '-loop.php'; } - // Locate the object template. - bp_get_template_part( $template_part ); + $template_path = bp_locate_template( array( $template_part ), false ); + + $template_path = apply_filters( 'bp_legacy_object_template_path', $template_path ); + + load_template( $template_path ); exit(); } @@ -857,9 +872,9 @@ function bp_legacy_theme_requests_template_loader() { * for the Activity component) and 'feed_url' (URL to the relevant RSS feed). */ function bp_legacy_theme_activity_template_loader() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } $scope = ''; if ( ! empty( $_POST['scope'] ) ) @@ -918,9 +933,9 @@ function bp_legacy_theme_activity_template_loader() { function bp_legacy_theme_post_update() { $bp = buddypress(); - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Check the nonce. check_admin_referer( 'post_update', '_wpnonce_post_update' ); @@ -1007,8 +1022,7 @@ function bp_legacy_theme_new_activity_comment() { $bp = buddypress(); - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) { + if ( ! bp_is_post_request() ) { return; } @@ -1076,9 +1090,9 @@ function bp_legacy_theme_new_activity_comment() { * @return mixed String on error, void on success. */ function bp_legacy_theme_delete_activity() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Check the nonce. check_admin_referer( 'bp_activity_delete_link' ); @@ -1114,9 +1128,9 @@ function bp_legacy_theme_delete_activity() { * @return mixed String on error, void on success. */ function bp_legacy_theme_delete_activity_comment() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Check the nonce. check_admin_referer( 'bp_activity_delete_link' ); @@ -1156,9 +1170,9 @@ function bp_legacy_theme_delete_activity_comment() { function bp_legacy_theme_spam_activity() { $bp = buddypress(); - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Check that user is logged in, Activity Streams are enabled, and Akismet is present. if ( ! is_user_logged_in() || ! bp_is_active( 'activity' ) || empty( $bp->activity->akismet ) ) @@ -1201,8 +1215,9 @@ function bp_legacy_theme_spam_activity() { */ function bp_legacy_theme_mark_activity_favorite() { // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } if ( ! isset( $_POST['nonce'] ) ) { return; @@ -1230,9 +1245,9 @@ function bp_legacy_theme_mark_activity_favorite() { * @return string|null HTML */ function bp_legacy_theme_unmark_activity_favorite() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } if ( ! isset( $_POST['nonce'] ) ) { return; @@ -1261,9 +1276,9 @@ function bp_legacy_theme_unmark_activity_favorite() { * @return string|null HTML */ function bp_legacy_theme_get_single_activity_content() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } $activity_array = bp_activity_get_specific( array( 'activity_ids' => $_POST['activity_id'], @@ -1301,9 +1316,9 @@ function bp_legacy_theme_get_single_activity_content() { * @todo Audit return types */ function bp_legacy_theme_ajax_invite_user() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } check_ajax_referer( 'groups_invite_uninvite_user' ); @@ -1313,13 +1328,14 @@ function bp_legacy_theme_ajax_invite_user() { if ( ! bp_groups_user_can_send_invites( $_POST['group_id'] ) ) return; - if ( ! friends_check_friendship( bp_loggedin_user_id(), $_POST['friend_id'] ) ) - return; - $group_id = (int) $_POST['group_id']; $friend_id = (int) $_POST['friend_id']; if ( 'invite' == $_POST['friend_action'] ) { + if ( ! friends_check_friendship( bp_loggedin_user_id(), $_POST['friend_id'] ) ) { + return; + } + $group = groups_get_group( $group_id ); // Users who have previously requested membership do not need @@ -1384,14 +1400,18 @@ function bp_legacy_theme_ajax_invite_user() { * @return string|null HTML */ function bp_legacy_theme_ajax_addremove_friend() { - - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Cast fid as an integer. $friend_id = (int) $_POST['fid']; + $user = get_user_by( 'id', $friend_id ); + if ( ! $user ) { + die( __( 'No member found by that ID.', 'buddypress' ) ); + } + // Trying to cancel friendship. if ( 'is_friend' == BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $friend_id ) ) { check_ajax_referer( 'friends_remove_friend' ); @@ -1399,7 +1419,7 @@ function bp_legacy_theme_ajax_addremove_friend() { if ( ! friends_remove_friend( bp_loggedin_user_id(), $friend_id ) ) { echo __( 'Friendship could not be canceled.', 'buddypress' ); } else { - echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="add" rel="add" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $friend_id, 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>'; + echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="friendship-button not_friends add" rel="add" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $friend_id, 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>'; } // Trying to request friendship. @@ -1409,7 +1429,7 @@ function bp_legacy_theme_ajax_addremove_friend() { if ( ! friends_add_friend( bp_loggedin_user_id(), $friend_id ) ) { echo __(' Friendship could not be requested.', 'buddypress' ); } else { - echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="remove" rel="remove" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . $friend_id . '/', 'friends_withdraw_friendship' ) . '" class="requested">' . __( 'Cancel Friendship Request', 'buddypress' ) . '</a>'; + echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="remove friendship-button pending_friend requested" rel="remove" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/requests/cancel/' . $friend_id . '/', 'friends_withdraw_friendship' ) . '" class="requested">' . __( 'Cancel Friendship Request', 'buddypress' ) . '</a>'; } // Trying to cancel pending request. @@ -1417,7 +1437,7 @@ function bp_legacy_theme_ajax_addremove_friend() { check_ajax_referer( 'friends_withdraw_friendship' ); if ( friends_withdraw_friendship( bp_loggedin_user_id(), $friend_id ) ) { - echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="add" rel="add" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $friend_id, 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>'; + echo '<a id="friend-' . esc_attr( $friend_id ) . '" class="friendship-button not_friends add" rel="add" href="' . wp_nonce_url( bp_loggedin_user_domain() . bp_get_friends_slug() . '/add-friend/' . $friend_id, 'friends_add_friend' ) . '">' . __( 'Add Friend', 'buddypress' ) . '</a>'; } else { echo __("Friendship request could not be cancelled.", 'buddypress'); } @@ -1438,9 +1458,9 @@ function bp_legacy_theme_ajax_addremove_friend() { * @return mixed String on error, void on success. */ function bp_legacy_theme_ajax_accept_friendship() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } check_admin_referer( 'friends_accept_friendship' ); @@ -1458,9 +1478,9 @@ function bp_legacy_theme_ajax_accept_friendship() { * @return mixed String on error, void on success. */ function bp_legacy_theme_ajax_reject_friendship() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } check_admin_referer( 'friends_reject_friendship' ); @@ -1478,9 +1498,9 @@ function bp_legacy_theme_ajax_reject_friendship() { * @return string|null HTML */ function bp_legacy_theme_ajax_joinleave_group() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } // Cast gid as integer. $group_id = (int) $_POST['gid']; @@ -1492,7 +1512,7 @@ function bp_legacy_theme_ajax_joinleave_group() { return; if ( ! groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { - if ( 'public' == $group->status ) { + if ( bp_current_user_can( 'groups_join_group', array( 'group_id' => $group->id ) ) ) { check_ajax_referer( 'groups_join_group' ); if ( ! groups_join_group( $group->id ) ) { @@ -1501,7 +1521,7 @@ function bp_legacy_theme_ajax_joinleave_group() { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button leave-group" rel="leave" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; } - } elseif ( 'private' == $group->status ) { + } elseif ( bp_current_user_can( 'groups_request_membership', array( 'group_id' => $group->id ) ) ) { // If the user has already been invited, then this is // an Accept Invitation button. @@ -1531,9 +1551,9 @@ function bp_legacy_theme_ajax_joinleave_group() { if ( ! groups_leave_group( $group->id ) ) { _e( 'Error leaving group', 'buddypress' ); - } elseif ( 'public' == $group->status ) { + } elseif ( bp_current_user_can( 'groups_join_group', array( 'group_id' => $group->id ) ) ) { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button join-group" rel="join" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; - } elseif ( 'private' == $group->status ) { + } elseif ( bp_current_user_can( 'groups_request_membership', array( 'group_id' => $group->id ) ) ) { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button request-membership" rel="join" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; } } @@ -1549,9 +1569,9 @@ function bp_legacy_theme_ajax_joinleave_group() { * @return mixed String on error, void on success. */ function bp_legacy_theme_ajax_close_notice() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } $nonce_check = isset( $_POST['nonce'] ) && wp_verify_nonce( wp_unslash( $_POST['nonce'] ), 'bp_messages_close_notice' ); @@ -1581,9 +1601,9 @@ function bp_legacy_theme_ajax_close_notice() { * @return string|null HTML */ function bp_legacy_theme_ajax_messages_send_reply() { - // Bail if not a POST action. - if ( 'POST' !== strtoupper( $_SERVER['REQUEST_METHOD'] ) ) + if ( ! bp_is_post_request() ) { return; + } check_ajax_referer( 'messages_send_message' ); @@ -1611,10 +1631,10 @@ function bp_legacy_theme_ajax_messages_send_reply() { bp_messages_embed(); // Add new-message css class. - add_filter( 'bp_get_the_thread_message_css_class', create_function( '$retval', ' - $retval[] = "new-message"; + add_filter( 'bp_get_the_thread_message_css_class', function( $retval ) { + $retval[] = 'new-message'; return $retval; - ' ) ); + } ); // Output single message template part. bp_get_template_part( 'members/single/messages/message' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/activity-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/activity-loop.php index 62dfbbd65e090b52d8352e1489ec0e1b40ddf130..c5f3d9df1c2dd0180652075c0225d014b6bf1045 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/activity-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/activity-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/comment.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/comment.php index 637b14b5c2f89194bce223e54393b60b65098237..ae3b4bd7423f60cd4916ac44f03dba2d02c11af4 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/comment.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/comment.php @@ -7,6 +7,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** 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 8e80a5b315cbac5d848cf04fec02b44b306ff045..c8510e7c4008784b52438812133e172ea976da11 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 @@ -7,6 +7,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/index.php index 6ae19bf8fe4f41fbed4fa92421c5b5beaf619e7e..145545f3635d8c667394cc342dc55090d7e04b0d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/index.php @@ -6,6 +6,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** @@ -91,7 +92,17 @@ do_action( 'bp_before_directory_activity' ); ?> <?php if ( bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) : ?> - <li id="activity-groups"><a href="<?php echo bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/'; ?>"><?php printf( __( 'My Groups %s', 'buddypress' ), '<span>' . bp_get_total_group_count_for_user( bp_loggedin_user_id() ) . '</span>' ); ?></a></li> + <?php + printf( + '<li id="activity-groups"><a href="%1$s">%2$s</a></li>', + esc_url( bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/' ), + sprintf( + /* translators: %s: total joined groups count for the current user */ + __( 'My Groups %s', 'buddypress' ), + '<span>' . bp_get_total_group_count_for_user( bp_loggedin_user_id() ) . '</span>' + ) + ); + ?> <?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/post-form.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/post-form.php index f5bbe758d4012c30fd62f4ed237e8995b1831a62..9c926dbf2ef491145c186a991d65a47ae381403a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/post-form.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/post-form.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/single/home.php index 7a4b9326b0800cba26587337e36ed839a11809fd..220d796ace3bef4569cbfa08cbc4f93c8f8684bf 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/single/home.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/activity/single/home.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php index a9fb56db6730b352bce245b3c32b9d77550e524b..4b28a69ec13705c1b1a78c956d2e3b7c14a46912 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php @@ -8,6 +8,7 @@ * * @package BuddyPress * @subpackage bp-attachments + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php index b1b3775c280388841f58e58acc55259bee27b64e..ee7d34989fe79750fbc4a833e6c8fc06f12b64b6 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php @@ -8,6 +8,7 @@ * * @package BuddyPress * @subpackage bp-attachments + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php index f083abd4a34e7cc44cf2180a48f10aa74fcfcfeb..ec8fda93d9f4a35aaadc4835da600162232697fd 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php @@ -11,6 +11,7 @@ * * @package BuddyPress * @subpackage bp-attachments + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php index f772ac2f29e0366af8c5b8e109267ce04fc2c5cb..fd0749cfe1d24942d8d64c15388b1a87ca0bf470 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php @@ -11,6 +11,7 @@ * * @package BuddyPress * @subpackage bp-attachments + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php index 8d18792d62752687a4d9caa1fa7ec2c6f0e06a6e..c32357be23185cc8bf1343bf6ee9213426795682 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php @@ -8,6 +8,7 @@ * * @package BuddyPress * @subpackage bp-attachments + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php index 265fe08bdde825aabcef041022c614ce3eaa4dc7..fe6dc9bbb44486190f9c9ebaf502dc711d33220b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php @@ -10,6 +10,7 @@ * * @package BuddyPress * @subpackage Core + * @version 3.0.0 */ /* @@ -19,7 +20,7 @@ License for the original template: The MIT License (MIT) -Copyright (c) 2013 Ted Goas +Copyright (c) 2017 Ted Goas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -44,12 +45,14 @@ defined( 'ABSPATH' ) || exit; $settings = bp_email_get_appearance_settings(); -?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> +?><!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> <head> <meta charset="<?php echo esc_attr( get_bloginfo( 'charset' ) ); ?>"> <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary --> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine --> + <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely --> + <title></title> <!-- The title tag shows in email notifications, like Android 4.4. --> <!-- CSS Reset --> <style type="text/css"> @@ -69,11 +72,6 @@ $settings = bp_email_get_appearance_settings(); -webkit-text-size-adjust: 100%; } - /* What it does: Forces Outlook.com to display emails full width. */ - .ExternalClass { - width: 100%; - } - /* What is does: Centers email on Android 4.4 */ div[style*="margin: 16px 0"] { margin: 0 !important; @@ -105,22 +103,42 @@ $settings = bp_email_get_appearance_settings(); max-width: 100%; } - /* What it does: Overrides styles added when Yahoo's auto-senses a link. */ - .yshortcuts a { - border-bottom: none !important; + /* What it does: A work-around for email clients meddling in triggered links. */ + *[x-apple-data-detectors], /* iOS */ + .x-gmail-data-detectors, /* Gmail */ + .x-gmail-data-detectors *, + .aBn { + border-bottom: 0 !important; + cursor: default !important; + color: inherit !important; + text-decoration: none !important; + font-size: inherit !important; + font-family: inherit !important; + font-weight: inherit !important; + line-height: inherit !important; } - /* What it does: A work-around for iOS meddling in triggered links. */ - a[x-apple-data-detectors] { - color: inherit !important; - text-decoration: underline !important; + /* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */ + .a6S { + display: none !important; + opacity: 0.01 !important; + } + + /* If the above doesn't work, add a .g-img class to any image in question. */ + img.g-img + div { + display: none !important; + } + + /* What it does: Prevents underlining the button text in Windows 10 */ + .button-link { + text-decoration: none !important; } </style> </head> -<body class="email_bg" width="100%" height="100%" bgcolor="<?php echo esc_attr( $settings['email_bg'] ); ?>" style="Margin: 0;"> +<body class="email_bg" width="100%" bgcolor="<?php echo esc_attr( $settings['email_bg'] ); ?>" style="margin: 0; mso-line-height-rule: exactly;"> <table cellpadding="0" cellspacing="0" border="0" height="100%" width="100%" bgcolor="<?php echo esc_attr( $settings['email_bg'] ); ?>" style="border-collapse:collapse;" class="email_bg"><tr><td valign="top"> - <center style="width: 100%;"> + <center style="width: 100%; text-align: <?php echo esc_attr( $settings['direction'] ); ?>;"> <!-- Visually Hidden Preheader Text : BEGIN --> <div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;"> @@ -128,15 +146,15 @@ $settings = bp_email_get_appearance_settings(); </div> <!-- Visually Hidden Preheader Text : END --> - <div style="max-width: 600px;"> - <!--[if (gte mso 9)|(IE)]> - <table cellspacing="0" cellpadding="0" border="0" width="600" align="center"> + <div style="max-width: 600px; margin: auto;" class="email-container"> + <!--[if mso]> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="600" align="center"> <tr> <td> <![endif]--> <!-- Email Header : BEGIN --> - <table cellspacing="0" cellpadding="0" border="0" align="center" width="100%" style="max-width: 600px; border-top: 7px solid <?php echo esc_attr( $settings['highlight_color'] ); ?>" bgcolor="<?php echo esc_attr( $settings['header_bg'] ); ?>" class="header_bg"> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" width="100%" style="max-width: 600px; border-top: 7px solid <?php echo esc_attr( $settings['highlight_color'] ); ?>" bgcolor="<?php echo esc_attr( $settings['header_bg'] ); ?>" class="header_bg"> <tr> <td style="text-align: center; padding: 15px 0; font-family: sans-serif; mso-height-rule: exactly; font-weight: bold; color: <?php echo esc_attr( $settings['header_text_color'] ); ?>; font-size: <?php echo esc_attr( $settings['header_text_size'] . 'px' ); ?>" class="header_text_color header_text_size"> <?php @@ -162,19 +180,19 @@ $settings = bp_email_get_appearance_settings(); <!-- Email Header : END --> <!-- Email Body : BEGIN --> - <table cellspacing="0" cellpadding="0" border="0" align="center" bgcolor="<?php echo esc_attr( $settings['body_bg'] ); ?>" width="100%" style="max-width: 600px; border-radius: 5px;" class="body_bg"> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" bgcolor="<?php echo esc_attr( $settings['body_bg'] ); ?>" width="100%" style="max-width: 600px; border-radius: 5px;" class="body_bg"> <!-- 1 Column Text : BEGIN --> <tr> <td> - <table cellspacing="0" cellpadding="0" border="0" width="100%"> - <tr> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%"> + <tr> <td style="padding: 20px; font-family: sans-serif; mso-height-rule: exactly; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.618 ) . 'px' ) ?>; color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>" class="body_text_color body_text_size"> <span style="font-weight: bold; font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.35 ) . 'px' ); ?>" class="welcome"><?php bp_email_the_salutation( $settings ); ?></span> <hr color="<?php echo esc_attr( $settings['email_bg'] ); ?>"><br> {{{content}}} </td> - </tr> + </tr> </table> </td> </tr> @@ -185,9 +203,9 @@ $settings = bp_email_get_appearance_settings(); <!-- Email Footer : BEGIN --> <br> - <table cellspacing="0" cellpadding="0" border="0" align="left" width="100%" style="max-width: 600px; border-radius: 5px;" bgcolor="<?php echo esc_attr( $settings['footer_bg'] ); ?>" class="footer_bg"> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="<?php echo esc_attr( $settings['direction'] ); ?>" width="100%" style="max-width: 600px; border-radius: 5px;" bgcolor="<?php echo esc_attr( $settings['footer_bg'] ); ?>" class="footer_bg"> <tr> - <td style="padding: 20px; width: 100%; font-size: <?php echo esc_attr( $settings['footer_text_size'] . 'px' ); ?>; font-family: sans-serif; mso-height-rule: exactly; line-height: <?php echo esc_attr( floor( $settings['footer_text_size'] * 1.618 ) . 'px' ) ?>; text-align: left; color: <?php echo esc_attr( $settings['footer_text_color'] ); ?>;" class="footer_text_color footer_text_size"> + <td style="padding: 20px; width: 100%; font-size: <?php echo esc_attr( $settings['footer_text_size'] . 'px' ); ?>; font-family: sans-serif; mso-height-rule: exactly; line-height: <?php echo esc_attr( floor( $settings['footer_text_size'] * 1.618 ) . 'px' ) ?>; text-align: <?php echo esc_attr( $settings['direction'] ); ?>; color: <?php echo esc_attr( $settings['footer_text_color'] ); ?>;" class="footer_text_color footer_text_size"> <?php /** * Fires before the display of the email template footer. @@ -214,7 +232,7 @@ $settings = bp_email_get_appearance_settings(); </table> <!-- Email Footer : END --> - <!--[if (gte mso 9)|(IE)]> + <!--[if mso]> </td> </tr> </table> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php index 00cb3b113ee553b6893500d5ae66dc477676cae3..79bfe98b270301b70fb54115d6b9443a218508b6 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/activity.php @@ -1,4 +1,8 @@ - +<?php +/** + * @version 3.0.0 + */ +?> <?php if ( bp_activity_embed_has_activity( bp_current_action() ) ) : ?> <?php while ( bp_activities() ) : bp_the_activity(); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/footer.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/footer.php index 143625a2b6f08fa6732868489bd851483e0a5f25..62ae3d501b9b3fa49804b16752c8ce4fba56fdc6 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/footer.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/footer.php @@ -1,3 +1,8 @@ +<?php +/** + * @version 3.0.0 + */ +?> <div class="wp-embed-footer"> <?php the_embed_site_title() ?> @@ -6,4 +11,4 @@ /** This action is documented in wp-includes/theme-compat/embed-content.php */ do_action( 'embed_content_meta'); ?> </div> - </div> \ No newline at end of file + </div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header-activity.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header-activity.php index d668707fcb0dfcb3659f8561b80bace0f4cf8d67..82b7198ee3991da2375e3d47f5fbfedfa1c0ae30 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header-activity.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header-activity.php @@ -1,3 +1,8 @@ +<?php +/** + * @version 3.0.0 + */ +?> <div id="bp-embed-header"> <div class="bp-embed-avatar"> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header.php index e3d012ebdfa0ebffc4267ab9709098e80781d59d..ce025affbd09556fa43941c61496b454597907af 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/assets/embeds/header.php @@ -1,4 +1,8 @@ - +<?php +/** + * @version 3.0.0 + */ +?> <div id="bp-embed-header"> <div class="bp-embed-avatar"> <a href="<?php bp_displayed_user_link(); ?>"> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php index 9b240af9ca373a877ca2246ffbda693dbd10fbac..6592bab0a873753d53f0ba90831ef89d69bf240d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php @@ -6,6 +6,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** 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 df883a03310c7bd4c0ccc5de55ab6ecad44e8062..eb5e216c591f7137000acd49d6205c1ae815469c 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 @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/index.php index 0447dfe0228837f5004526bd5f6651e40a808071..6ea1ddf30769f83c0a4e6d1e60f95e8e49acb41b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/blogs/index.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php index f59ef5e15f70a0a92b321c96743464d9b8e77e60..f35abb83827910b25870eee2068c8cf15c096760 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php @@ -3,6 +3,7 @@ * Output the search form markup. * * @since 2.7.0 + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php index 9e97192d48a01a798cad68e065d42606d91a0b0a..3a662309f918288f299b935b62dd09eb6eb04250 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/create.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** @@ -189,25 +190,6 @@ do_action( 'bp_before_create_group_page' ); ?> </fieldset> - <?php if ( bp_is_active( 'forums' ) ) : ?> - - <h4><?php _e( 'Group Forums', 'buddypress' ); ?></h4> - - <?php if ( bp_forums_is_installed_correctly() ) : ?> - - <p><?php _e( 'Should this group have a forum?', 'buddypress' ); ?></p> - - <div class="checkbox"> - <label for="group-show-forum"><input type="checkbox" name="group-show-forum" id="group-show-forum" value="1"<?php checked( bp_get_new_group_enable_forum(), true, true ); ?> /> <?php _e( 'Enable discussion forum', 'buddypress' ); ?></label> - </div> - <?php elseif ( is_super_admin() ) : ?> - - <p><?php printf( __( '<strong>Attention Site Admin:</strong> Group forums require the <a href="%s">correct setup and configuration</a> of a bbPress installation.', 'buddypress' ), bp_core_do_network_admin() ? network_admin_url( 'settings.php?page=bb-forums-setup' ) : admin_url( 'admin.php?page=bb-forums-setup' ) ); ?></p> - - <?php endif; ?> - - <?php endif; ?> - <?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 b618a9b39500f25e46f4756e600005a7caa5ead0..b52165e8a1c1844cc900c3793130492c439a525f 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 @@ -6,6 +6,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/index.php index bea025ab40cc69a8cbfc3834e52cd5d7289d9cac..bdd65db8c1118a9e2e57d590c65e785284a6bb65 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/index.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/activity.php index ddf7ad8ca31a889071487e49036fab1e8c215e76..5d66f439639b6940d92ca1a6499796fc8dd31b97 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/activity.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/activity.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php index 24e46c20f289048bfbc0dba213f6c0543376ed32..b3eaf4bd302d221704e38a54fc5d75a74de75b19 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php index 05fb6f0a8bebe7fc0fb91d3cfa86cfe1d2a66282..f2eb0908c8e9795cf010dbf42021f357760ecbbb 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php index ed2375a3d7c54dfad1e022630b6c04ef9aba9ef0..bd89c4c29d481648ecf441336908e2a492fdd064 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php index 7a19a62e9643cac67d8a379b899fae504067c87a..7056eb7a6a76d27fccce494db2111542f8ed307a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php index cb7f92b198dae2ea2f646444a522eba7d3f8026e..7fce91fd627f59a4fa01c34877f1be80a12d0762 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php index 0fec8c080a224d0ccd31205c6ab6cc788747cdfb..0961da5e8441f6c0e05788d56925f9069b99ab4d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> @@ -19,20 +20,6 @@ */ do_action( 'bp_before_group_settings_admin' ); ?> -<?php if ( bp_is_active( 'forums' ) ) : ?> - - <?php if ( bp_forums_is_installed_correctly() ) : ?> - - <div class="checkbox"> - <label for="group-show-forum"><input type="checkbox" name="group-show-forum" id="group-show-forum" value="1"<?php bp_group_show_forum_setting(); ?> /> <?php _e( 'Enable discussion forum', 'buddypress' ); ?></label> - </div> - - <hr /> - - <?php endif; ?> - -<?php endif; ?> - <fieldset class="group-create-privacy"> <legend><?php _e( 'Privacy Options', 'buddypress' ); ?></legend> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php index 048e7af3f2f6ac7f8d553343004581e40250a6a1..6cec6741f5c7636454e2fb5a4b8fb8e6e01dbe65 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php index b437a61357e8684ab4786e71b5edd2b2ead9a9fb..051cf14a17c0fd5e4189644b6d38d5acda6e90df 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> 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 e46793f77638d7a08c1c8804b39580b932bc362d..34f5c361b06442fec45d755453e54f2828023768 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 @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** 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 19913cc174e9ae479ed4f31b258119347afc5df3..409e5d13b40eba2f50767f44c75006b58c104ec9 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 @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/home.php index c8063b3a6d945e065741171358119c0f678ba3c3..2545478307088a16081c7498352967bfb73fcea2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/home.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/home.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> @@ -119,9 +120,6 @@ // Group Invitations elseif ( bp_is_group_invites() ) : bp_get_template_part( 'groups/single/send-invites' ); - // Old group forums - elseif ( bp_is_group_forum() ) : bp_get_template_part( 'groups/single/forum' ); - // Membership request elseif ( bp_is_group_membership_request() ) : bp_get_template_part( 'groups/single/request-membership' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php index 5c7887d9fe7ab153191c3ae4840fcff245ebed7a..1a220f10e34e49d1817021a79d36e4f83cf074aa 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/members.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/members.php index 25f269438a2464503b088903434cd5ff182f1639..c12058b031c437d3678de0c3656d88484c2acfdb 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/members.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/members.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/plugins.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/plugins.php index 03d95de52d4f49186b642f67d68804d5f124bfe1..6dcc16f511bf0afefda8f085dd65057e05496ed8 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/plugins.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/plugins.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php index 5b255eff6135ff47ac3d2cc25659d35c1a06df26..fc7069c3b29326c50ca9854c357d4b37135cd6a4 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/request-membership.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.1.0 */ /** @@ -14,15 +15,22 @@ do_action( 'bp_before_group_request_membership_content' ); ?> <?php if ( !bp_group_has_requested_membership() ) : ?> - <h2 class="bp-screen-reader-text"><?php - /* translators: accessibility text */ - _e( 'Request form', 'buddypress' ); - ?></h2> + <h2 class="bp-screen-reader-text"><?php esc_html_e( 'Group membership request form', 'buddypress' ); ?></h2> - <p><?php printf( __( "You are requesting to become a member of the group '%s'.", 'buddypress' ), bp_get_group_name( false ) ); ?></p> + <p> + <?php + echo esc_html( + sprintf( + /* translators: %s =group name */ + __( 'You are requesting to become a member of the group "%s".', 'buddypress' ), + bp_get_group_name() + ) + ); + ?> + </p> <form action="<?php bp_group_form_action('request-membership' ); ?>" method="post" name="request-membership-form" id="request-membership-form" class="standard-form"> - <label for="group-request-membership-comments"><?php _e( 'Comments (optional)', 'buddypress' ); ?></label> + <label for="group-request-membership-comments"><?php esc_html_e( 'Comments (optional)', 'buddypress' ); ?></label> <textarea name="group-request-membership-comments" id="group-request-membership-comments"></textarea> <?php @@ -34,7 +42,7 @@ do_action( 'bp_before_group_request_membership_content' ); ?> */ do_action( 'bp_group_request_membership_content' ); ?> - <p><input type="submit" name="group-request-send" id="group-request-send" value="<?php esc_attr_e( 'Send Request', 'buddypress' ); ?>" /> + <p><input type="submit" name="group-request-send" id="group-request-send" value="<?php echo esc_attr_x( 'Send Request', 'button', 'buddypress' ); ?>" /> <?php wp_nonce_field( 'groups_request_membership' ); ?> </form><!-- #request-membership-form --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php index 3a1a38b5fb2e7a33dde2b5ac3d526531f5e08f38..46ea98ed936886ffd9982d3921e5bf87a560df2c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/send-invites.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/send-invites.php index b79b9b1b9a54141c1ec0442a34ed11f565e45a50..94a4854f393ac06e6db1b0c0b17e70f4dde9f8e8 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/send-invites.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/groups/single/send-invites.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/activate.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/activate.php index 975006d0a08a1fbd5a1f32d046a2282dc120d4a3..332d6a3d47f33ca1063da89f101719720a91b7c7 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/activate.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/activate.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> @@ -50,10 +51,10 @@ <p><?php _e( 'Please provide a valid activation key.', 'buddypress' ); ?></p> - <form action="" method="get" class="standard-form" id="activation-form"> + <form action="" method="post" class="standard-form" id="activation-form"> <label for="key"><?php _e( 'Activation Key:', 'buddypress' ); ?></label> - <input type="text" name="key" id="key" value="" /> + <input type="text" name="key" id="key" value="<?php echo esc_attr( bp_get_current_activation_key() ); ?>" /> <p class="submit"> <input type="submit" name="submit" value="<?php esc_attr_e( 'Activate', 'buddypress' ); ?>" /> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/index.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/index.php index eb11d37600f25787f0146e1eec7dd95a50ab740d..65afa0d6ffc9155f8308ce993f7f970c02f194c3 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/index.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/index.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/members-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/members-loop.php index df1cb67b698bf1ef77c4425409dfe4dcba9364e6..d0c15fb0a5d98b3dc5ecb4062dfae11165c37df2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/members-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/members-loop.php @@ -6,6 +6,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/register.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/register.php index 1d4126ff82e16f4c23d5ca7df7457a0cbeb40400..2c3c914cb524e7b69be9f91676d61444c8004c4a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/register.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/register.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/activity.php index a954432fa111d178159d3f7f4bf3c843688b5145..1c2f8cba08609214480f43bec645832f38a4de18 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/activity.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/activity.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/blogs.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/blogs.php index 16095114d8d66de0714481142c7e8380ced11e76..9d6e9fb104caf90d4245c36027737e98819824be 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/blogs.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/blogs.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/cover-image-header.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/cover-image-header.php index 292957c5d84ad7e99c8468d7478424c00dab849c..55268e7f2bce4959bcbf142b68785eb2dd9e4cac 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/cover-image-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/cover-image-header.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends.php index d62106d15c1a35b21e3e708a01382fc4236bc886..f1432547948b21a4763b31e89e40d2b34b3ec1cf 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends/requests.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends/requests.php index 5da6e874f409e98162b00b0728e07426c9e18cdd..8026b5a66fbfdd8727a15eb79043e3924cba6273 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends/requests.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/friends/requests.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups.php index edb7a5d0a039260f144ba0f3574a66bd675ece74..f9b457b3bfed9a40394ae45ccb94ef6c4ff74031 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups/invites.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups/invites.php index 6fd0c1d3b10f4a2923345c7918adba47dc1f30dd..d79545f48e298cf2a7f85717640d5fbbf20e0656 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups/invites.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/groups/invites.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/home.php index e4454f218ef3e139d979f3995aa496d9160a5ff8..f56af6e9c20123e3bbd83864d336355cfc8e3f06 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/home.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/home.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> @@ -85,9 +86,6 @@ elseif ( bp_is_user_profile() ) : bp_get_template_part( 'members/single/profile' ); - elseif ( bp_is_user_forums() ) : - bp_get_template_part( 'members/single/forums' ); - elseif ( bp_is_user_notifications() ) : bp_get_template_part( 'members/single/notifications' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/member-header.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/member-header.php index f965ba4e334d6e8fed4307255662a3d8684c51a4..26ba28d8bdf208ede9787f336bc3f1fac880f779 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/member-header.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/member-header.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages.php index ed67c17d0a0bd2b2dc0a4b99fcda9f7e51b48c79..15a5b252c95a37ebc3f0f37e58b16b2a5e61be94 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/compose.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/compose.php index 5c88961876076e034b9bf2288c5c806ecfb1fe4c..41de06e5c5ce9dd7296dcaabcefde2b3a4b6f20d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/compose.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/compose.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/message.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/message.php index 70ab06d54a6a4a5c0c53a61a6066c99c9dbf150c..69c3ec2d1c521b1b812fd68a8f3315184750591b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/message.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/message.php @@ -9,6 +9,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php index 7720e99fc44cee1f9747495aa7211cd1e10273fc..6b78ec54894a62cdeef5ef1f7713b000a131ffb3 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php index 7dd9d0ac6a83587e6848db9337a2fabc7728557e..0e53a64fdf3ee8e92490969f9b368a4f2cb2545d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** @@ -74,7 +75,7 @@ do_action( 'bp_before_notices_loop' ); ?> <td width="10%"> <a class="button" href="<?php bp_message_activate_deactivate_link(); ?>" class="confirm"><?php bp_message_activate_deactivate_text(); ?></a> - <a class="button" href="<?php bp_message_notice_delete_link(); ?>" class="confirm" aria-label="<?php esc_attr_e( "Delete Message", 'buddypress' ); ?>">x</a> + <a class="button" href="<?php bp_message_notice_delete_link(); ?>" class="confirm"><?php esc_html_e( "Delete Message", 'buddypress' ); ?></a> </td> </tr> <?php endwhile; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/single.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/single.php index 90cd38887643e17c0de3ae53f49882d6c6368168..127456ce042abba49776d4d313b3ba5e4d1b1575 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/single.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/messages/single.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications.php index f8adc477b6c4b11e8d475e2fa1e5613bec5851bb..36e0c3def9e014d8136e63a1c7db3cb9dfb46b0d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php index 4d7eeaa7442fd1c0d190fa87ebcf2a692ea9cd1d..06c013c4c2c5e85d246a473c0146c502c654d0be 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php index d699a4fa3bc5ab717d85242fccc1f410e2302830..5df476e34a24c828683237077d0a88ab03d016ca 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/read.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/read.php index 563077f386a7fca518c2ade7b4e17b869a17cbb1..2421f8a45594480747a323ba2a04d79d5ae89010 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/read.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/read.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php index 002d30ee790ecdedf06acf5ba736fead87ee8dc3..732766e53cff7d742c614b1bd3140e01a1578730 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/plugins.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/plugins.php index 8c0c5fbc1d40c19a6c3592752a42ef73988d1675..bb0c74fde98ff493384c9106ac200fbd527fc88d 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/plugins.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/plugins.php @@ -7,6 +7,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile.php index 948728b7b2e7872d377f7cef754d4fab24f6fadc..481cb36e078bb3a6186034c611cf59d4ebaea15a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php index dd156c6006fdac3a11a755cf703bec6a63ed54c1..4b4289aa5a2960d18627c3ef6b0c5419976e05f4 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php index 33000422c69202b51e54b8757fe510b2d033e63e..5e894339cd724627613e268be8c8e44440b55699 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php index 6f4ec8f01d876cd43fe380ae63630c4c21056414..7ea1d4644d9287f9bcb2d8964218d800a126e2ef 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/edit.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-loop.php index d2aa93a813d13a6b04448b10c5bb8ae57b906b27..4f21850517246e138a3de12aaf53b208cd66f81c 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-loop.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-loop.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php */ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php index 7bd50b3c0f7e9ae1284bea14a12f06ea1a67d066..644c5e7d0535bb0b03cb524245bd2a6f48fb78ff 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings.php index 496816872797dbc8d8a294b926b804a978e0919e..17eaf9fdb6be988d1a77ee78d79f2d540959b0cd 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php index e8637538089c916d1ca540cb85cf3a0652a2caff..71a97ca4bd5fd222e31e0427d8422000bab37809 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php index 4120bde086a777127506652a32dc0f071d6d39bd..513806d117c0702824be24bfd2e509653eb7b7f5 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/general.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/general.php index 90ab9b55516c20530e133fef21a72f115e4b22a1..3ce8415c84923a05654db16df77921eda146af9a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/general.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/general.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php index 7311a7f2d92a9c95af1f4d1a1337180980f8a55d..52d7403a3b07407cf51e56a57c7ec52a145c6699 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** This action is documented in bp-templates/bp-legacy/buddypress/members/single/settings/profile.php */ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/profile.php b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/profile.php index 3b2032ec8169bab6951f7d29b6da9779a7136a58..8d04ac2c0fec9109f0a40add34dde60bf0e35fff 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/profile.php +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/buddypress/members/single/settings/profile.php @@ -4,6 +4,7 @@ * * @package BuddyPress * @subpackage bp-legacy + * @version 3.0.0 */ /** 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 62181ed0b76ddc3cc638daf4b8dca98a0390c697..821905d5abc996d9266a9d80412e6cef24c7d3df 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 @@ -1,6 +1,8 @@ /*-------------------------------------------------------------- Hello, this is the BuddyPress Legacy stylesheet. +@version 3.0.0 + ---------------------------------------------------------------- >>> TABLE OF CONTENTS: ---------------------------------------------------------------- @@ -786,6 +788,10 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content { width: auto; } +#buddypress label.xprofile-field-label { + display: inline; +} + #buddypress .standard-form p label, #buddypress .standard-form #invite-list label { font-weight: 400; 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 ca2294f1052223502d3f21099fb9c04f50579c7d..2cba710095dd9ae89131b17ee034ea4a9c182b5b 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{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 .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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}#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}#buddypress div#message p,#sitewide-notice p{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;position:relative}.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{-webkit-box-shadow:none;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%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{right:0;left:auto;text-align:right;-webkit-transform:translateX(0);-ms-transform:translateX(0);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{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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}#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}#buddypress div#message p,#sitewide-notice p{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;position:relative}.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{-webkit-box-shadow:none;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%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{right:0;left:auto;text-align:right;-webkit-transform:translateX(0);-ms-transform:translateX(0);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 3b35edb564cabfd9ceba52a5479b636c9f8ce9e8..dc0c65d61a704168cf94bca333f9e3b6c6fd35db 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 @@ -1,6 +1,8 @@ /*-------------------------------------------------------------- Hello, this is the BuddyPress Legacy stylesheet. +@version 3.0.0 + ---------------------------------------------------------------- >>> TABLE OF CONTENTS: ---------------------------------------------------------------- @@ -786,6 +788,10 @@ body.activity-permalink #buddypress div.activity-comments div.acomment-content { width: auto; } +#buddypress label.xprofile-field-label { + display: inline; +} + #buddypress .standard-form p label, #buddypress .standard-form #invite-list label { font-weight: 400; 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 9c51fb70c086792831970b15ff6158dc0b62b306..f963585760a13e34e37d1336107d027bf692ee5c 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{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 .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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}#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}#buddypress div#message p,#sitewide-notice p{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;position:relative}.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{-webkit-box-shadow:none;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%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{left:0;right:auto;text-align:left;-webkit-transform:translateX(0);-ms-transform:translateX(0);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{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;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);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}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}#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}#buddypress div#message p,#sitewide-notice p{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;position:relative}.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{-webkit-box-shadow:none;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%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);-webkit-transition:opacity 2s ease-out;-ms-transition:opacity 2s ease-out;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;-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.feed .bp-tooltip:after,.item-list .bp-tooltip:after,.messages-notices .bp-tooltip:after{left:0;right:auto;text-align:left;-webkit-transform:translateX(0);-ms-transform:translateX(0);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/css/embeds-activity-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity-rtl.css index 177c8df6b179bcfa73053b7f089b3ea665bb188f..ac6fda0eec11e55e837ee44253738038bc1c5b63 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity-rtl.css @@ -1,3 +1,6 @@ +/* + * @version 3.0.0 + */ #bp-embed-header:after { clear: both; content: ""; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity.css index 274c9a20febf80d128c2014d5ecd3c7657c97bdb..9e0b465d9c9377a514847d5b45bc16b570872ff3 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/embeds-activity.css @@ -1,3 +1,6 @@ +/* + * @version 3.0.0 + */ #bp-embed-header:after { clear: both; content: ""; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.css index 94496b6b22bfb63adc98cd87b80e7561255942ea..156915f2603602cb93932c679262e5ee5295c75b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyeleven theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyeleven this stylesheet will be @@ -1691,12 +1693,6 @@ body.buddypress:not(.page-template-sidebar-page) #content .entry-content { text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.min.css index c1d20a4c3ba2eecbe8b0050e3422783f49140c74..c5419f2bc5472e8b59b1c80bf439bc88852004e9 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven-rtl.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}body.buddypress:not(.page-template-sidebar-page) #content{margin:0 10%;width:auto}body.buddypress:not(.page-template-sidebar-page) #content .entry-content,body.buddypress:not(.page-template-sidebar-page) #content .entry-header{width:auto}.buddypress.singular.page .hentry{padding-top:0}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:450px){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:5px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:active:before,.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:active ul,.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{min-height:320px;opacity:1;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:650px){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}@media screen and (max-width:450px){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (max-width:450px){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:right;float:none;margin-right:10px;text-align:right}}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.bp-user #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 25px 0 0;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 -25px 0 0}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:650px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media screen and (min-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:450px){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:right}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin:0;margin-right:0;padding:15px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37em){#buddypress ul.item-list li div.action div{margin:0 0 5px 15px;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:650px){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:15px 0 25px;padding:15px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;max-width:220px;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:15px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:800px){#buddypress #item-header-cover-image #item-header-content .user-nicename{color:#555;text-shadow:none}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:450px){.groups.group-members #subnav li{background:#fff;padding:25px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}@media screen and (max-width:450px){.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:0 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}body.buddypress:not(.page-template-sidebar-page) #content{margin:0 10%;width:auto}body.buddypress:not(.page-template-sidebar-page) #content .entry-content,body.buddypress:not(.page-template-sidebar-page) #content .entry-header{width:auto}.buddypress.singular.page .hentry{padding-top:0}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:450px){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:5px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:active:before,.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:active ul,.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{min-height:320px;opacity:1;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:650px){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}@media screen and (max-width:450px){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (max-width:450px){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:right;float:none;margin-right:10px;text-align:right}}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.bp-user #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 25px 0 0;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 -25px 0 0}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:650px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media screen and (min-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:450px){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:right}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin:0;margin-right:0;padding:15px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37em){#buddypress ul.item-list li div.action div{margin:0 0 5px 15px;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:650px){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:15px 0 25px;padding:15px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;max-width:220px;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:15px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:800px){#buddypress #item-header-cover-image #item-header-content .user-nicename{color:#555;text-shadow:none}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:450px){.groups.group-members #subnav li{background:#fff;padding:25px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}@media screen and (max-width:450px){.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:0 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.css index fc418e960ee8c938a6ec9a8c03b3e4f588a397b8..cef6158e607d700b68ec1e9480c4803662654bf8 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyeleven theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyeleven this stylesheet will be @@ -1691,12 +1693,6 @@ body.buddypress:not(.page-template-sidebar-page) #content .entry-content { text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.min.css index 9ab6caf6f98d5e6a73dc009e3706d04e1189c9e9..c56ea887374a289f2eec193ed5ae2d559facea37 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}body.buddypress:not(.page-template-sidebar-page) #content{margin:0 10%;width:auto}body.buddypress:not(.page-template-sidebar-page) #content .entry-content,body.buddypress:not(.page-template-sidebar-page) #content .entry-header{width:auto}.buddypress.singular.page .hentry{padding-top:0}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:450px){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:5px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:active:before,.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:active ul,.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{min-height:320px;opacity:1;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:650px){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}@media screen and (max-width:450px){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (max-width:450px){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:left;float:none;margin-left:10px;text-align:left}}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.bp-user #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 25px;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 0 0 -25px}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:650px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media screen and (min-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:450px){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:left}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin:0;margin-left:0;padding:15px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37em){#buddypress ul.item-list li div.action div{margin:0 15px 5px 0;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:650px){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:15px 0 25px;padding:15px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;max-width:220px;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:15px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:800px){#buddypress #item-header-cover-image #item-header-content .user-nicename{color:#555;text-shadow:none}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:450px){.groups.group-members #subnav li{background:#fff;padding:25px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}@media screen and (max-width:450px){.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:0 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}body.buddypress:not(.page-template-sidebar-page) #content{margin:0 10%;width:auto}body.buddypress:not(.page-template-sidebar-page) #content .entry-content,body.buddypress:not(.page-template-sidebar-page) #content .entry-header{width:auto}.buddypress.singular.page .hentry{padding-top:0}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:450px){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:5px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:active:before,.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:active ul,.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{min-height:320px;opacity:1;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:650px){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}@media screen and (max-width:450px){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (max-width:450px){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:left;float:none;margin-left:10px;text-align:left}}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.bp-user #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 25px;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 0 0 -25px}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:650px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media screen and (min-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:450px){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:left}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin:0;margin-left:0;padding:15px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37em){#buddypress ul.item-list li div.action div{margin:0 15px 5px 0;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:650px){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:15px 0 25px;padding:15px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;max-width:220px;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:15px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:800px){#buddypress #item-header-cover-image #item-header-content .user-nicename{color:#555;text-shadow:none}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:450px){.groups.group-members #subnav li{background:#fff;padding:25px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}@media screen and (max-width:450px){.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:0 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.scss index 5abefde3c76750404255eb7ec19863fca60e6618..b387a47d9f01ee5b3f4cb791c48c43e83d871229 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyeleven.scss @@ -118,13 +118,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -180,9 +173,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -230,6 +220,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentyeleven theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyeleven this stylesheet will be @@ -2400,13 +2392,6 @@ body.buddypress:not(.page-template-sidebar-page) { padding-bottom: 1em; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.css index 1cb67f472d1aa1647cac2abacb1b4c0481c3867b..cd3c6450f896724f567cb45f1507111209dfe618 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyfifteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be @@ -1640,12 +1642,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.min.css index 44119afabe174742ccaf85117506826b4db573b2..ef91cf0de38ced468e87af5d2fda2b00eb47ae24 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen-rtl.min.css @@ -1 +1 @@ -#buddypress h1,#buddypress h2,#buddypress h3,#buddypress h4,#buddypress h5,#buddypress h6{clear:none}.buddypress div.clear{display:none}.buddypress main{padding-top:4%}@media screen and (min-width:59.6875em){.buddypress main{padding-top:0}}.buddypress main article{margin:0 4%;padding-top:8.3333%}@media screen and (min-width:59.6875em){.buddypress main article{margin:0 1px 0 0}}@media screen and (min-width:87.6875em){.buddypress main article{margin:0 8.3333% 0 4.3333%}}.buddypress main article .entry-content,.buddypress main article .entry-header{padding:0 3rem 3rem}.buddypress main article #buddypress{margin-bottom:40px}.buddypress .site-footer{margin:0 4%}@media screen and (min-width:59.6875em){.buddypress .site-footer{margin:0 35.2941% 0 0;width:61.8235%}}.buddypress #buddypress #latest-update a,.buddypress #buddypress .activity-comments a,.buddypress #buddypress .activity-header a,.buddypress #buddypress .activity-inner a,.buddypress #buddypress .avatar-nav-items a,.buddypress #buddypress .field-visibility-settings-toggle a,.buddypress #buddypress .item-list-tabs a,.buddypress #buddypress .item-title a,.buddypress #buddypress .load-more a,.buddypress #buddypress table a{border-bottom:0}.buddypress #buddypress .pagination-links a,.buddypress #buddypress .pagination-links span{border-bottom:0}#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f7f7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:5px 0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}#buddypress #object-nav ul li:not(.selected) a{opacity:.7}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1.4rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}@media screen and (min-width:55em){.bp-user #buddypress,.single-item.groups #buddypress{background:#f7f7f7}#buddypress #item-body,#buddypress #item-header{background:#fff}#buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}#buddypress #object-nav ul{border-bottom:0;padding:0}#buddypress #object-nav ul li{float:none;overflow:hidden}#buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}#buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}#buddypress #item-body #subnav{margin:0 -20px 0 0}}#buddypress div.pagination{box-shadow:none}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Noto Sans",sans-serif}#buddypress .item-list a.activity-time-since{color:#717171}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:25%}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:70%}@media screen and (min-width:59.6875em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:10%;margin-right:0;position:relative;width:55%}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:30em){#buddypress form#whats-new-form #whats-new-post-in-box select{font-size:14px;font-size:1.4rem;max-width:120px}}@media screen and (max-width:38.75em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 40px;padding:10px 0 0}#buddypress form#whats-new-form #whats-new-content #whats-new-submit{float:none}#buddypress form#whats-new-form #whats-new-content #whats-new-submit input{width:100%}#buddypress form#whats-new-form #whats-new-options{display:flex;flex-direction:column}#buddypress form#whats-new-form #whats-new-options #whats-new-submit{order:2}#buddypress form#whats-new-form #whats-new-options #whats-new-post-in-box{order:1}}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(153,153,153,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;outline:0;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:1.4rem}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.6rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:13px;font-size:1.3rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#717171;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin:0 0 5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress{background:0 0}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px 0}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.6rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:2rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{margin:10px 0 0}#buddypress #activity-stream .activity-comments a{color:#717171}#buddypress #activity-stream .activity-comments.has-comments{border-right:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form{padding:20px 0 0}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments>ul{margin-right:70px}}#buddypress #activity-stream .activity-comments>ul ul{margin-right:1%;padding-right:0}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments>ul ul{margin-right:1%;padding-right:1em}}#buddypress #activity-stream .activity-comments>ul ul li{border-right:1px solid #eaeaea;border-top:0;padding-right:.2em}#buddypress #activity-stream .activity-comments>ul .acomment-meta{border-bottom:1px solid #eaeaea;color:#737373;font-style:italic}@media screen and (max-width:38.75em){#buddypress #activity-stream .activity-comments>ul .acomment-avatar{display:block;text-align:center}#buddypress #activity-stream .activity-comments>ul .acomment-avatar a,#buddypress #activity-stream .activity-comments>ul .acomment-avatar img.avatar{display:inline;float:none}#buddypress #activity-stream .activity-comments>ul .acomment-content,#buddypress #activity-stream .activity-comments>ul .acomment-meta,#buddypress #activity-stream .activity-comments>ul .acomment-options{margin:5px}#buddypress #activity-stream .activity-comments>ul .acomment-content{padding:0 10px}}#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:none}#buddypress #activity-stream .activity-comments .ac-reply-content{margin-right:0;padding-right:0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:block}#buddypress #activity-stream .activity-comments .ac-reply-content{overflow:hidden}}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:1.2rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(153,153,153,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:59.6875em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{clear:none;float:left;width:50%}}.single-item.groups #buddypress div#item-header div#item-actions h2{background:#555;color:#fff;font-size:14px;font-size:1.4rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1.6rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}#item-body h1,#item-body h2,#item-body h3,#item-body h4,#item-body h5,#item-body h6{margin:1em 0}#item-body h1 a,#item-body h2 a,#item-body h3 a,#item-body h4 a,#item-body h5 a,#item-body h6 a{border-bottom:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups #group-settings-form #request-list h4{background:0 0;color:inherit}.groups.edit-details #group-settings-form label{background:#555;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;color:#fff;display:inline-block;margin-bottom:0;padding:.2em;width:80%}@media screen and (min-width:38.75em){.groups.edit-details #group-settings-form label{width:60%}}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1.4rem;width:auto}.groups.group-settings #create-group-form div.radio label,.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #create-group-form div.radio ul,.groups.group-settings #group-settings-form div.radio ul{color:#767676;font-size:14px;font-size:1.4rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}@media screen and (max-width:30em){.groups.group-members #buddypress #members-group-list li>a{border-bottom:0;display:block;margin-bottom:10px;text-align:center}.groups.group-members #buddypress #members-group-list li>a img.avatar{display:inline;float:none}}.groups.group-members #buddypress #members-group-list li h5{display:inline-block;font-size:14px;font-size:1.4rem;margin:0}@media screen and (min-width:59.6875em){.groups.group-members #buddypress #members-group-list li h5{font-size:16px;font-size:1.6rem}}.groups.group-members #buddypress #members-group-list li h5 a{border-bottom:0}.groups.group-members #buddypress #members-group-list li span.activity{font-size:12px;font-size:1.2rem}.groups.group-members #buddypress #members-group-list li .action{top:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.groups.group-invites #item-body .item-list .action{margin-bottom:0}@media screen and (min-width:46.25em){.groups.group-invites #buddypress #item-body #message{margin-top:0}}@media screen and (min-width:55em){.groups.group-invites #buddypress #send-invite-form{margin-top:0}}@media screen and (max-width:46.25em){.groups.group-invites #item-body .left-menu{float:none;margin:10px 0}.groups.group-invites #item-body .left-menu #invite-list{height:auto;width:auto}.groups.group-invites #item-body .main-column{margin-right:0}.groups.group-invites #item-body .submit input{display:inline-block;width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:1.4rem}.bp-user #buddypress table td{font-size:12px;font-size:1.2rem}@media screen and (min-width:46.25em){.bp-user #buddypress table th{font-size:16px;font-size:1.6rem}.bp-user #buddypress table td{font-size:14px;font-size:1.4rem}}@media screen and (min-width:77.5em){.bp-user #buddypress table th{font-size:18px;font-size:1.8rem}.bp-user #buddypress table td{font-size:16px;font-size:1.6rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:50%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1.4rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:"Noto Serif",serif;line-height:1.5;margin-top:10px;width:100%}.bp-user #buddypress .messages-options-nav input[disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled]:hover{background:0 0}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{margin-top:0;width:38%}}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.8rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1.4rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#b7b7b7;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:2.6em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:1.2rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:1.1rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d1d0d0;border-bottom-color:#b7b7b7}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:2rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings th.title{width:75%}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(153,153,153,.3)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{border:1px solid rgba(153,153,153,.5)}#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 5px 1px}#buddypress .group-create-form li,#buddypress .standard-form li{float:none;list-style:none}#buddypress .group-create-form input[type=text],#buddypress .group-create-form textarea,#buddypress .standard-form input[type=text],#buddypress .standard-form textarea{width:100%}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(153,153,153,.4);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:80%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:80%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1.4rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(153,153,153,.4);padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:20%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:77.5em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.6rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.6rem}}#buddypress table{font-size:14px;font-size:1.4rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1.6rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress #item-body div#message{margin-top:20px}@media screen and (min-width:55em){#buddypress #item-body div#message{margin-left:20px}}#buddypress div#message p{font-size:18px;font-size:1.8rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +#buddypress h1,#buddypress h2,#buddypress h3,#buddypress h4,#buddypress h5,#buddypress h6{clear:none}.buddypress div.clear{display:none}.buddypress main{padding-top:4%}@media screen and (min-width:59.6875em){.buddypress main{padding-top:0}}.buddypress main article{margin:0 4%;padding-top:8.3333%}@media screen and (min-width:59.6875em){.buddypress main article{margin:0 1px 0 0}}@media screen and (min-width:87.6875em){.buddypress main article{margin:0 8.3333% 0 4.3333%}}.buddypress main article .entry-content,.buddypress main article .entry-header{padding:0 3rem 3rem}.buddypress main article #buddypress{margin-bottom:40px}.buddypress .site-footer{margin:0 4%}@media screen and (min-width:59.6875em){.buddypress .site-footer{margin:0 35.2941% 0 0;width:61.8235%}}.buddypress #buddypress #latest-update a,.buddypress #buddypress .activity-comments a,.buddypress #buddypress .activity-header a,.buddypress #buddypress .activity-inner a,.buddypress #buddypress .avatar-nav-items a,.buddypress #buddypress .field-visibility-settings-toggle a,.buddypress #buddypress .item-list-tabs a,.buddypress #buddypress .item-title a,.buddypress #buddypress .load-more a,.buddypress #buddypress table a{border-bottom:0}.buddypress #buddypress .pagination-links a,.buddypress #buddypress .pagination-links span{border-bottom:0}#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f7f7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:5px 0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}#buddypress #object-nav ul li:not(.selected) a{opacity:.7}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1.4rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}@media screen and (min-width:55em){.bp-user #buddypress,.single-item.groups #buddypress{background:#f7f7f7}#buddypress #item-body,#buddypress #item-header{background:#fff}#buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}#buddypress #object-nav ul{border-bottom:0;padding:0}#buddypress #object-nav ul li{float:none;overflow:hidden}#buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}#buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}#buddypress #item-body #subnav{margin:0 -20px 0 0}}#buddypress div.pagination{box-shadow:none}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Noto Sans",sans-serif}#buddypress .item-list a.activity-time-since{color:#717171}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:25%}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:70%}@media screen and (min-width:59.6875em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:10%;margin-right:0;position:relative;width:55%}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:30em){#buddypress form#whats-new-form #whats-new-post-in-box select{font-size:14px;font-size:1.4rem;max-width:120px}}@media screen and (max-width:38.75em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 40px;padding:10px 0 0}#buddypress form#whats-new-form #whats-new-content #whats-new-submit{float:none}#buddypress form#whats-new-form #whats-new-content #whats-new-submit input{width:100%}#buddypress form#whats-new-form #whats-new-options{display:flex;flex-direction:column}#buddypress form#whats-new-form #whats-new-options #whats-new-submit{order:2}#buddypress form#whats-new-form #whats-new-options #whats-new-post-in-box{order:1}}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(153,153,153,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;outline:0;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:1.4rem}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.6rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:13px;font-size:1.3rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#717171;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin:0 0 5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress{background:0 0}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px 0}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.6rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:2rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{margin:10px 0 0}#buddypress #activity-stream .activity-comments a{color:#717171}#buddypress #activity-stream .activity-comments.has-comments{border-right:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form{padding:20px 0 0}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments>ul{margin-right:70px}}#buddypress #activity-stream .activity-comments>ul ul{margin-right:1%;padding-right:0}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments>ul ul{margin-right:1%;padding-right:1em}}#buddypress #activity-stream .activity-comments>ul ul li{border-right:1px solid #eaeaea;border-top:0;padding-right:.2em}#buddypress #activity-stream .activity-comments>ul .acomment-meta{border-bottom:1px solid #eaeaea;color:#737373;font-style:italic}@media screen and (max-width:38.75em){#buddypress #activity-stream .activity-comments>ul .acomment-avatar{display:block;text-align:center}#buddypress #activity-stream .activity-comments>ul .acomment-avatar a,#buddypress #activity-stream .activity-comments>ul .acomment-avatar img.avatar{display:inline;float:none}#buddypress #activity-stream .activity-comments>ul .acomment-content,#buddypress #activity-stream .activity-comments>ul .acomment-meta,#buddypress #activity-stream .activity-comments>ul .acomment-options{margin:5px}#buddypress #activity-stream .activity-comments>ul .acomment-content{padding:0 10px}}#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:none}#buddypress #activity-stream .activity-comments .ac-reply-content{margin-right:0;padding-right:0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:block}#buddypress #activity-stream .activity-comments .ac-reply-content{overflow:hidden}}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:1.2rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(153,153,153,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:59.6875em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{clear:none;float:left;width:50%}}.single-item.groups #buddypress div#item-header div#item-actions h2{background:#555;color:#fff;font-size:14px;font-size:1.4rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1.6rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}#item-body h1,#item-body h2,#item-body h3,#item-body h4,#item-body h5,#item-body h6{margin:1em 0}#item-body h1 a,#item-body h2 a,#item-body h3 a,#item-body h4 a,#item-body h5 a,#item-body h6 a{border-bottom:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups #group-settings-form #request-list h4{background:0 0;color:inherit}.groups.edit-details #group-settings-form label{background:#555;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;color:#fff;display:inline-block;margin-bottom:0;padding:.2em;width:80%}@media screen and (min-width:38.75em){.groups.edit-details #group-settings-form label{width:60%}}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1.4rem;width:auto}.groups.group-settings #create-group-form div.radio label,.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #create-group-form div.radio ul,.groups.group-settings #group-settings-form div.radio ul{color:#767676;font-size:14px;font-size:1.4rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}@media screen and (max-width:30em){.groups.group-members #buddypress #members-group-list li>a{border-bottom:0;display:block;margin-bottom:10px;text-align:center}.groups.group-members #buddypress #members-group-list li>a img.avatar{display:inline;float:none}}.groups.group-members #buddypress #members-group-list li h5{display:inline-block;font-size:14px;font-size:1.4rem;margin:0}@media screen and (min-width:59.6875em){.groups.group-members #buddypress #members-group-list li h5{font-size:16px;font-size:1.6rem}}.groups.group-members #buddypress #members-group-list li h5 a{border-bottom:0}.groups.group-members #buddypress #members-group-list li span.activity{font-size:12px;font-size:1.2rem}.groups.group-members #buddypress #members-group-list li .action{top:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.groups.group-invites #item-body .item-list .action{margin-bottom:0}@media screen and (min-width:46.25em){.groups.group-invites #buddypress #item-body #message{margin-top:0}}@media screen and (min-width:55em){.groups.group-invites #buddypress #send-invite-form{margin-top:0}}@media screen and (max-width:46.25em){.groups.group-invites #item-body .left-menu{float:none;margin:10px 0}.groups.group-invites #item-body .left-menu #invite-list{height:auto;width:auto}.groups.group-invites #item-body .main-column{margin-right:0}.groups.group-invites #item-body .submit input{display:inline-block;width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:1.4rem}.bp-user #buddypress table td{font-size:12px;font-size:1.2rem}@media screen and (min-width:46.25em){.bp-user #buddypress table th{font-size:16px;font-size:1.6rem}.bp-user #buddypress table td{font-size:14px;font-size:1.4rem}}@media screen and (min-width:77.5em){.bp-user #buddypress table th{font-size:18px;font-size:1.8rem}.bp-user #buddypress table td{font-size:16px;font-size:1.6rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:50%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1.4rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:"Noto Serif",serif;line-height:1.5;margin-top:10px;width:100%}.bp-user #buddypress .messages-options-nav input[disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled]:hover{background:0 0}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{margin-top:0;width:38%}}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.8rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1.4rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#b7b7b7;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:2.6em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:1.2rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:1.1rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d1d0d0;border-bottom-color:#b7b7b7}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:2rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings th.title{width:75%}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(153,153,153,.3)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{border:1px solid rgba(153,153,153,.5)}#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 5px 1px}#buddypress .group-create-form li,#buddypress .standard-form li{float:none;list-style:none}#buddypress .group-create-form input[type=text],#buddypress .group-create-form textarea,#buddypress .standard-form input[type=text],#buddypress .standard-form textarea{width:100%}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(153,153,153,.4);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:80%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:80%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1.4rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(153,153,153,.4);padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:20%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:77.5em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.6rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.6rem}}#buddypress table{font-size:14px;font-size:1.4rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1.6rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress #item-body div#message{margin-top:20px}@media screen and (min-width:55em){#buddypress #item-body div#message{margin-left:20px}}#buddypress div#message p{font-size:18px;font-size:1.8rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.css index 28ab2e0c03a3c0d446f4a3b32e247310929cc0cd..7f2e8e470b6a0ae3450f2b9f7bcf46c3054c01c3 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyfifteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be @@ -1640,12 +1642,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.min.css index 2aae9b8e1244ec9f217534a55bc8ac786225caad..eead4cec6d5570323f77e2df704c172953527dff 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.min.css @@ -1 +1 @@ -#buddypress h1,#buddypress h2,#buddypress h3,#buddypress h4,#buddypress h5,#buddypress h6{clear:none}.buddypress div.clear{display:none}.buddypress main{padding-top:4%}@media screen and (min-width:59.6875em){.buddypress main{padding-top:0}}.buddypress main article{margin:0 4%;padding-top:8.3333%}@media screen and (min-width:59.6875em){.buddypress main article{margin:0 0 0 1px}}@media screen and (min-width:87.6875em){.buddypress main article{margin:0 4.3333% 0 8.3333%}}.buddypress main article .entry-content,.buddypress main article .entry-header{padding:0 3rem 3rem}.buddypress main article #buddypress{margin-bottom:40px}.buddypress .site-footer{margin:0 4%}@media screen and (min-width:59.6875em){.buddypress .site-footer{margin:0 0 0 35.2941%;width:61.8235%}}.buddypress #buddypress #latest-update a,.buddypress #buddypress .activity-comments a,.buddypress #buddypress .activity-header a,.buddypress #buddypress .activity-inner a,.buddypress #buddypress .avatar-nav-items a,.buddypress #buddypress .field-visibility-settings-toggle a,.buddypress #buddypress .item-list-tabs a,.buddypress #buddypress .item-title a,.buddypress #buddypress .load-more a,.buddypress #buddypress table a{border-bottom:0}.buddypress #buddypress .pagination-links a,.buddypress #buddypress .pagination-links span{border-bottom:0}#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f7f7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:5px 0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}#buddypress #object-nav ul li:not(.selected) a{opacity:.7}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1.4rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}@media screen and (min-width:55em){.bp-user #buddypress,.single-item.groups #buddypress{background:#f7f7f7}#buddypress #item-body,#buddypress #item-header{background:#fff}#buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}#buddypress #object-nav ul{border-bottom:0;padding:0}#buddypress #object-nav ul li{float:none;overflow:hidden}#buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}#buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}#buddypress #item-body #subnav{margin:0 0 0 -20px}}#buddypress div.pagination{box-shadow:none}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Noto Sans",sans-serif}#buddypress .item-list a.activity-time-since{color:#717171}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:25%}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:70%}@media screen and (min-width:59.6875em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:10%;margin-left:0;position:relative;width:55%}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:30em){#buddypress form#whats-new-form #whats-new-post-in-box select{font-size:14px;font-size:1.4rem;max-width:120px}}@media screen and (max-width:38.75em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 40px;padding:10px 0 0}#buddypress form#whats-new-form #whats-new-content #whats-new-submit{float:none}#buddypress form#whats-new-form #whats-new-content #whats-new-submit input{width:100%}#buddypress form#whats-new-form #whats-new-options{display:flex;flex-direction:column}#buddypress form#whats-new-form #whats-new-options #whats-new-submit{order:2}#buddypress form#whats-new-form #whats-new-options #whats-new-post-in-box{order:1}}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(153,153,153,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;outline:0;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:1.4rem}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.6rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:13px;font-size:1.3rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#717171;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin:0 0 5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress{background:0 0}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px 0}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.6rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:2rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{margin:10px 0 0}#buddypress #activity-stream .activity-comments a{color:#717171}#buddypress #activity-stream .activity-comments.has-comments{border-left:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form{padding:20px 0 0}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments>ul{margin-left:70px}}#buddypress #activity-stream .activity-comments>ul ul{margin-left:1%;padding-left:0}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments>ul ul{margin-left:1%;padding-left:1em}}#buddypress #activity-stream .activity-comments>ul ul li{border-left:1px solid #eaeaea;border-top:0;padding-left:.2em}#buddypress #activity-stream .activity-comments>ul .acomment-meta{border-bottom:1px solid #eaeaea;color:#737373;font-style:italic}@media screen and (max-width:38.75em){#buddypress #activity-stream .activity-comments>ul .acomment-avatar{display:block;text-align:center}#buddypress #activity-stream .activity-comments>ul .acomment-avatar a,#buddypress #activity-stream .activity-comments>ul .acomment-avatar img.avatar{display:inline;float:none}#buddypress #activity-stream .activity-comments>ul .acomment-content,#buddypress #activity-stream .activity-comments>ul .acomment-meta,#buddypress #activity-stream .activity-comments>ul .acomment-options{margin:5px}#buddypress #activity-stream .activity-comments>ul .acomment-content{padding:0 10px}}#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:none}#buddypress #activity-stream .activity-comments .ac-reply-content{margin-left:0;padding-left:0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:block}#buddypress #activity-stream .activity-comments .ac-reply-content{overflow:hidden}}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:1.2rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(153,153,153,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:59.6875em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{clear:none;float:right;width:50%}}.single-item.groups #buddypress div#item-header div#item-actions h2{background:#555;color:#fff;font-size:14px;font-size:1.4rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1.6rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}#item-body h1,#item-body h2,#item-body h3,#item-body h4,#item-body h5,#item-body h6{margin:1em 0}#item-body h1 a,#item-body h2 a,#item-body h3 a,#item-body h4 a,#item-body h5 a,#item-body h6 a{border-bottom:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups #group-settings-form #request-list h4{background:0 0;color:inherit}.groups.edit-details #group-settings-form label{background:#555;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;color:#fff;display:inline-block;margin-bottom:0;padding:.2em;width:80%}@media screen and (min-width:38.75em){.groups.edit-details #group-settings-form label{width:60%}}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1.4rem;width:auto}.groups.group-settings #create-group-form div.radio label,.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #create-group-form div.radio ul,.groups.group-settings #group-settings-form div.radio ul{color:#767676;font-size:14px;font-size:1.4rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}@media screen and (max-width:30em){.groups.group-members #buddypress #members-group-list li>a{border-bottom:0;display:block;margin-bottom:10px;text-align:center}.groups.group-members #buddypress #members-group-list li>a img.avatar{display:inline;float:none}}.groups.group-members #buddypress #members-group-list li h5{display:inline-block;font-size:14px;font-size:1.4rem;margin:0}@media screen and (min-width:59.6875em){.groups.group-members #buddypress #members-group-list li h5{font-size:16px;font-size:1.6rem}}.groups.group-members #buddypress #members-group-list li h5 a{border-bottom:0}.groups.group-members #buddypress #members-group-list li span.activity{font-size:12px;font-size:1.2rem}.groups.group-members #buddypress #members-group-list li .action{top:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.groups.group-invites #item-body .item-list .action{margin-bottom:0}@media screen and (min-width:46.25em){.groups.group-invites #buddypress #item-body #message{margin-top:0}}@media screen and (min-width:55em){.groups.group-invites #buddypress #send-invite-form{margin-top:0}}@media screen and (max-width:46.25em){.groups.group-invites #item-body .left-menu{float:none;margin:10px 0}.groups.group-invites #item-body .left-menu #invite-list{height:auto;width:auto}.groups.group-invites #item-body .main-column{margin-left:0}.groups.group-invites #item-body .submit input{display:inline-block;width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:1.4rem}.bp-user #buddypress table td{font-size:12px;font-size:1.2rem}@media screen and (min-width:46.25em){.bp-user #buddypress table th{font-size:16px;font-size:1.6rem}.bp-user #buddypress table td{font-size:14px;font-size:1.4rem}}@media screen and (min-width:77.5em){.bp-user #buddypress table th{font-size:18px;font-size:1.8rem}.bp-user #buddypress table td{font-size:16px;font-size:1.6rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:50%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1.4rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:"Noto Serif",serif;line-height:1.5;margin-top:10px;width:100%}.bp-user #buddypress .messages-options-nav input[disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled]:hover{background:0 0}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{margin-top:0;width:38%}}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.8rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1.4rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#b7b7b7;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:2.6em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:1.2rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:1.1rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d1d0d0;border-bottom-color:#b7b7b7}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:2rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings th.title{width:75%}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(153,153,153,.3)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{border:1px solid rgba(153,153,153,.5)}#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 5px 1px}#buddypress .group-create-form li,#buddypress .standard-form li{float:none;list-style:none}#buddypress .group-create-form input[type=text],#buddypress .group-create-form textarea,#buddypress .standard-form input[type=text],#buddypress .standard-form textarea{width:100%}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(153,153,153,.4);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:80%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:80%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1.4rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(153,153,153,.4);padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:20%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:77.5em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.6rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.6rem}}#buddypress table{font-size:14px;font-size:1.4rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1.6rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress #item-body div#message{margin-top:20px}@media screen and (min-width:55em){#buddypress #item-body div#message{margin-right:20px}}#buddypress div#message p{font-size:18px;font-size:1.8rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +#buddypress h1,#buddypress h2,#buddypress h3,#buddypress h4,#buddypress h5,#buddypress h6{clear:none}.buddypress div.clear{display:none}.buddypress main{padding-top:4%}@media screen and (min-width:59.6875em){.buddypress main{padding-top:0}}.buddypress main article{margin:0 4%;padding-top:8.3333%}@media screen and (min-width:59.6875em){.buddypress main article{margin:0 0 0 1px}}@media screen and (min-width:87.6875em){.buddypress main article{margin:0 4.3333% 0 8.3333%}}.buddypress main article .entry-content,.buddypress main article .entry-header{padding:0 3rem 3rem}.buddypress main article #buddypress{margin-bottom:40px}.buddypress .site-footer{margin:0 4%}@media screen and (min-width:59.6875em){.buddypress .site-footer{margin:0 0 0 35.2941%;width:61.8235%}}.buddypress #buddypress #latest-update a,.buddypress #buddypress .activity-comments a,.buddypress #buddypress .activity-header a,.buddypress #buddypress .activity-inner a,.buddypress #buddypress .avatar-nav-items a,.buddypress #buddypress .field-visibility-settings-toggle a,.buddypress #buddypress .item-list-tabs a,.buddypress #buddypress .item-title a,.buddypress #buddypress .load-more a,.buddypress #buddypress table a{border-bottom:0}.buddypress #buddypress .pagination-links a,.buddypress #buddypress .pagination-links span{border-bottom:0}#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f7f7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:5px 0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}#buddypress #object-nav ul li:not(.selected) a{opacity:.7}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1.4rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:#555;color:#fff;opacity:1}@media screen and (min-width:55em){.bp-user #buddypress,.single-item.groups #buddypress{background:#f7f7f7}#buddypress #item-body,#buddypress #item-header{background:#fff}#buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}#buddypress #object-nav ul{border-bottom:0;padding:0}#buddypress #object-nav ul li{float:none;overflow:hidden}#buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}#buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}#buddypress #item-body #subnav{margin:0 0 0 -20px}}#buddypress div.pagination{box-shadow:none}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Noto Sans",sans-serif}#buddypress .item-list a.activity-time-since{color:#717171}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:25%}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:70%}@media screen and (min-width:59.6875em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:10%;margin-left:0;position:relative;width:55%}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:59.6875em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:30em){#buddypress form#whats-new-form #whats-new-post-in-box select{font-size:14px;font-size:1.4rem;max-width:120px}}@media screen and (max-width:38.75em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 40px;padding:10px 0 0}#buddypress form#whats-new-form #whats-new-content #whats-new-submit{float:none}#buddypress form#whats-new-form #whats-new-content #whats-new-submit input{width:100%}#buddypress form#whats-new-form #whats-new-options{display:flex;flex-direction:column}#buddypress form#whats-new-form #whats-new-options #whats-new-submit{order:2}#buddypress form#whats-new-form #whats-new-options #whats-new-post-in-box{order:1}}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(153,153,153,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;outline:0;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:1.4rem}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.6rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:13px;font-size:1.3rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#717171;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin:0 0 5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress{background:0 0}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px 0}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.6rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:2rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{margin:10px 0 0}#buddypress #activity-stream .activity-comments a{color:#717171}#buddypress #activity-stream .activity-comments.has-comments{border-left:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form{padding:20px 0 0}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments>ul{margin-left:70px}}#buddypress #activity-stream .activity-comments>ul ul{margin-left:1%;padding-left:0}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments>ul ul{margin-left:1%;padding-left:1em}}#buddypress #activity-stream .activity-comments>ul ul li{border-left:1px solid #eaeaea;border-top:0;padding-left:.2em}#buddypress #activity-stream .activity-comments>ul .acomment-meta{border-bottom:1px solid #eaeaea;color:#737373;font-style:italic}@media screen and (max-width:38.75em){#buddypress #activity-stream .activity-comments>ul .acomment-avatar{display:block;text-align:center}#buddypress #activity-stream .activity-comments>ul .acomment-avatar a,#buddypress #activity-stream .activity-comments>ul .acomment-avatar img.avatar{display:inline;float:none}#buddypress #activity-stream .activity-comments>ul .acomment-content,#buddypress #activity-stream .activity-comments>ul .acomment-meta,#buddypress #activity-stream .activity-comments>ul .acomment-options{margin:5px}#buddypress #activity-stream .activity-comments>ul .acomment-content{padding:0 10px}}#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:none}#buddypress #activity-stream .activity-comments .ac-reply-content{margin-left:0;padding-left:0}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-comments .ac-reply-avatar{display:block}#buddypress #activity-stream .activity-comments .ac-reply-content{overflow:hidden}}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:1.2rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(153,153,153,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:59.6875em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{clear:none;float:right;width:50%}}.single-item.groups #buddypress div#item-header div#item-actions h2{background:#555;color:#fff;font-size:14px;font-size:1.4rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1.6rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}#item-body h1,#item-body h2,#item-body h3,#item-body h4,#item-body h5,#item-body h6{margin:1em 0}#item-body h1 a,#item-body h2 a,#item-body h3 a,#item-body h4 a,#item-body h5 a,#item-body h6 a{border-bottom:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups #group-settings-form #request-list h4{background:0 0;color:inherit}.groups.edit-details #group-settings-form label{background:#555;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;color:#fff;display:inline-block;margin-bottom:0;padding:.2em;width:80%}@media screen and (min-width:38.75em){.groups.edit-details #group-settings-form label{width:60%}}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1.4rem;width:auto}.groups.group-settings #create-group-form div.radio label,.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #create-group-form div.radio ul,.groups.group-settings #group-settings-form div.radio ul{color:#767676;font-size:14px;font-size:1.4rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}@media screen and (max-width:30em){.groups.group-members #buddypress #members-group-list li>a{border-bottom:0;display:block;margin-bottom:10px;text-align:center}.groups.group-members #buddypress #members-group-list li>a img.avatar{display:inline;float:none}}.groups.group-members #buddypress #members-group-list li h5{display:inline-block;font-size:14px;font-size:1.4rem;margin:0}@media screen and (min-width:59.6875em){.groups.group-members #buddypress #members-group-list li h5{font-size:16px;font-size:1.6rem}}.groups.group-members #buddypress #members-group-list li h5 a{border-bottom:0}.groups.group-members #buddypress #members-group-list li span.activity{font-size:12px;font-size:1.2rem}.groups.group-members #buddypress #members-group-list li .action{top:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.groups.group-invites #item-body .item-list .action{margin-bottom:0}@media screen and (min-width:46.25em){.groups.group-invites #buddypress #item-body #message{margin-top:0}}@media screen and (min-width:55em){.groups.group-invites #buddypress #send-invite-form{margin-top:0}}@media screen and (max-width:46.25em){.groups.group-invites #item-body .left-menu{float:none;margin:10px 0}.groups.group-invites #item-body .left-menu #invite-list{height:auto;width:auto}.groups.group-invites #item-body .main-column{margin-left:0}.groups.group-invites #item-body .submit input{display:inline-block;width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:1.4rem}.bp-user #buddypress table td{font-size:12px;font-size:1.2rem}@media screen and (min-width:46.25em){.bp-user #buddypress table th{font-size:16px;font-size:1.6rem}.bp-user #buddypress table td{font-size:14px;font-size:1.4rem}}@media screen and (min-width:77.5em){.bp-user #buddypress table th{font-size:18px;font-size:1.8rem}.bp-user #buddypress table td{font-size:16px;font-size:1.6rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:50%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1.4rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:100%}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:"Noto Serif",serif;line-height:1.5;margin-top:10px;width:100%}.bp-user #buddypress .messages-options-nav input[disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled]:hover{background:0 0}@media screen and (min-width:30em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{margin-top:0;width:38%}}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.8rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1.4rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#b7b7b7;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:2.6em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:1.2rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:1.1rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d1d0d0;border-bottom-color:#b7b7b7}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:2rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings th.title{width:75%}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(153,153,153,.3)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{border:1px solid rgba(153,153,153,.5)}#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 5px 1px}#buddypress .group-create-form li,#buddypress .standard-form li{float:none;list-style:none}#buddypress .group-create-form input[type=text],#buddypress .group-create-form textarea,#buddypress .standard-form input[type=text],#buddypress .standard-form textarea{width:100%}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(153,153,153,.4);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:80%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:80%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1.4rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(153,153,153,.4);padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:20%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:77.5em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.6rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.6rem}}#buddypress table{font-size:14px;font-size:1.4rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1.6rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress #item-body div#message{margin-top:20px}@media screen and (min-width:55em){#buddypress #item-body div#message{margin-right:20px}}#buddypress div#message p{font-size:18px;font-size:1.8rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.scss index 93f892c2da1afa4bd1cd3c451ee7d7df214b547b..e0da634539b91623a24e2c53f1b0e82f1e6cc42f 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfifteen.scss @@ -35,12 +35,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -96,9 +90,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -147,6 +138,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentyfifteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be @@ -2222,13 +2215,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ line-height: 1; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen-rtl.css index 1e0dd9e0989257851e6b57543f8f5962774fc5c2..220512ea1e5bb232479d594c1e917680af052d6a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyfourteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfourteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.css index 9f1b6deaa6133b7e52fc2d107878811e07c2806c..bda55339ececa7bcb9c08a5b0f335f225c11e1b2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyfourteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfourteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.scss index c13fff6d1e5cb8c1f787a0e68fbf77a8291748e3..3730571b7df15f9876ca30b04d4b2a78aefa4caf 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyfourteen.scss @@ -37,12 +37,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -98,9 +92,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -151,6 +142,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentyfourteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfourteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.css index df59dfbb99304a447c19d5b22ed91d0226d1c815..2ee817e85beff26872ec15632d46f7d2c7f855e2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress twentyseventeen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyseventeen this stylesheet will be @@ -1808,12 +1810,6 @@ body.colors-light #buddypress div#invite-list { text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.min.css index 51513bc7bb54f5b93130ec4057bef94b2b64be58..d4834db413f63f603ce180077616be2cd8d41834 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen-rtl.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}.buddypress ul.item-list h1,.buddypress ul.item-list h2,.buddypress ul.item-list h3,.buddypress ul.item-list h4,.buddypress ul.item-list h5,.buddypress ul.item-list h6{clear:none;padding:0}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:55em){.buddypress .entry-title{text-align:right}}@media screen and (min-width:55em){.buddypress.bp-user.page .site-content,.buddypress.groups.group-create .site-content,.buddypress.single-item.groups .site-content,.directory.buddypress.page-one-column .site-content{padding-top:40px}.buddypress.bp-user.page .entry-header,.buddypress.groups.group-create .entry-header,.buddypress.single-item.groups .entry-header,.directory.buddypress.page-one-column .entry-header{margin:10px 0}}@media screen and (min-width:48em){body.buddypress.page.page-two-column #primary .entry-header{width:30%}body.buddypress.page.page-two-column #primary .entry-content{width:68%}body.buddypress:not(.has-sidebar) #primary.content-area,body.buddypress:not(.page-two-column) #primary.content-area{max-width:100%;width:100%}body.buddypress:not(.has-sidebar) #primary.content-area .content-bottom-widgets,body.buddypress:not(.has-sidebar) #primary.content-area .entry-content,body.buddypress:not(.page-two-column) #primary.content-area .content-bottom-widgets,body.buddypress:not(.page-two-column) #primary.content-area .entry-content{margin-right:0;margin-left:0}body.buddypress:not(.has-sidebar) .sidebar,body.buddypress:not(.page-two-column) .sidebar{float:right;margin-right:75%;padding:0;width:25%}}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected{border-bottom-color:#222}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current a,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected a{color:inherit}body.colors-dark #buddypress div.item-list-tabs ul li.current a,body.colors-dark #buddypress div.item-list-tabs ul li.selected a{background:0 0;color:inherit}body.colors-dark #buddypress #object-nav li:not(.current):focus a,body.colors-dark #buddypress #object-nav li:not(.current):hover a{color:#555}body.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);margin-bottom:20px}body.colors-dark #buddypress #subnav.item-list-tabs ul li.last{border-top:1px solid rgba(234,234,234,.9)}body.colors-dark #buddypress #subnav.item-list-tabs select option{background-color:#333}body.colors-dark #buddypress .item-list div.meta{color:#ddd}body.colors-dark #buddypress .item-list .acomment-meta,body.colors-dark #buddypress .item-list .activity-comments ul,body.colors-dark #buddypress .item-list .activity-header p,body.colors-dark #buddypress .item-list div.item-desc{color:#eee}body.colors-dark #buddypress .item-list .action a,body.colors-dark #buddypress .item-list .activity-meta a{background:#fafafa}body.colors-dark #buddypress .item-list .action a:focus,body.colors-dark #buddypress .item-list .action a:hover,body.colors-dark #buddypress .item-list .activity-meta a:focus,body.colors-dark #buddypress .item-list .activity-meta a:hover{background:#fff}body.colors-dark #buddypress #latest-update{color:#eee}body.colors-dark #buddypress div.pagination *{color:#ddd}body.colors-dark #buddypress #item-header .user-nicename{color:#eee}body.colors-dark #buddypress #item-body table thead th,body.colors-dark #buddypress #item-body table thead tr{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table tr.alt td{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table .field-visibility-settings,body.colors-dark #buddypress #item-body table .field-visibility-settings-notoggle{color:#eee}body.colors-dark #buddypress #item-body fieldset{background:0 0}body.colors-dark #buddypress #item-body .checkbox label,body.colors-dark #buddypress #item-body .radio label{color:#eee}body.colors-dark #buddypress #item-body div#invite-list{background:0 0}body.colors-dark.group-members #buddypress #subnav li{background:0 0}body.colors-dark.group-members #buddypress #subnav .groups-members-search form{margin-bottom:20px;margin-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:0;border-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul li.last.filter{border-top:0}.directory.colors-dark #buddypress div.activity ul.item-list{border-top:0}body.colors-light #buddypress div.item-list-tabs ul{background-color:#fafafa}body.colors-light #buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7}body.colors-light #buddypress div#subnav.item-list-tabs ul li.last{background:#fff}body.colors-light #buddypress .item-list .activity-header p{background-color:#f7f7f7;color:#878787}body.colors-light #buddypress .item-list .activity-comments .acomment-meta{color:#737373}body.colors-light #buddypress #item-body .profile h2{background:#878787;color:#fff}body.colors-light #buddypress table tr.alt td{background:#f5f5f5;color:#333}body.colors-light #buddypress div#invite-list{background:#fafafa}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label{display:inline}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic;height:auto}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}@media screen and (min-width:55em){body:not(.page-two-column) #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body:not(.page-two-column) #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body:not(.page-two-column) #buddypress #object-nav ul li{float:none;overflow:hidden}body:not(.page-two-column) #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body:not(.page-two-column) #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}body:not(.page-two-column) #buddypress #item-body #subnav{margin:0 -20px 0 0}body:not(.page-two-column) #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:48em){#buddypress #group-create-tabs.item-list-tabs ul:after,#buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#buddypress #group-create-tabs.item-list-tabs ul li.current,#buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#buddypress #group-create-tabs.item-list-tabs ul li.current a,#buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#333;outline:0}#buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;font-weight:400;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Libre Franklin","Helvetica Neue",helvetica,arial,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:30em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:48em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:13px;font-size:.8125rem;padding:10px 0;text-align:right}@media screen and (min-width:55em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:55em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:55em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:55em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(190,190,190,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:48em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{box-shadow:none;display:inline-block;margin:0 5px!important;vertical-align:middle}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0;width:auto}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:48em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-right:1px solid #eaeaea;margin:20px 0 20px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments{margin-right:20px}}#buddypress #activity-stream .activity-comments ul{margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments ul li{border-top:1px solid #bebebe}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{border-bottom:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(190,190,190,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:55em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}#buddypress #members-list li.is-current-user .item{float:none;right:0;padding-right:5%;width:auto}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:30em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}@media screen and (min-width:48em){.bp-user.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-right:140px;margin-top:-100px}.single-item.groups.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-right:10px}}.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#333;text-shadow:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}.groups.single-item.members #buddypress #subnav.item-list-tabs ul{background:0 0;border-top:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(51,51,51,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:55em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:67em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{height:auto}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:1%;width:59%}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile h2{margin:40px 0 10px;padding:.1em .4em .1em 0}.bp-user #buddypress .profile table{margin-top:0}.bp-user #buddypress .profile .profile-fields tr.alt td{color:#333}.bp-user #buddypress .profile .profile-fields tr:last-child{border-bottom:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-notoggle,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem;margin-top:10px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-clip:padding-box;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:48em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:0 0;border-bottom:1px solid #bebebe}.bp-user #buddypress #message-threads thead tr th{background:#555}.bp-user #buddypress #message-threads tr{border-bottom:5px solid #878787}.bp-user #buddypress #message-threads tr td{display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#bebebe;border-bottom-width:1px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-info,.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-top:0}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:0 0;border-color:#bebebe}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#e3f6ff;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:48em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(190,190,190,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{height:auto}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(190,190,190,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(190,190,190,.6);-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;margin:0;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;font-size:14px;font-size:.875rem;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(190,190,190,.6);font-weight:400;padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{-webkit-border-radius:none;-moz-border-radius:none;-ms-border-radius:none;border-radius:none;float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}#buddypress div.dir-search{margin-top:0}#buddypress #search-groups-form input[type=text],#buddypress #search-message-form input[type=text],#buddypress .dir-search #search-members-form input[type=text]{float:right;margin:0;width:70%}@media screen and (min-width:30em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}}@media screen and (min-width:67em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{font-size:16px;font-size:1rem}}body.colors-dark #page #buddypress .dir-search form,body.colors-dark #page #buddypress .groups-members-search form,body.colors-dark #page #buddypress .message-search form{background:#333;border-color:#555;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;padding:1px}body.colors-dark #page #buddypress .dir-search input[type=text],body.colors-dark #page #buddypress .groups-members-search input[type=text],body.colors-dark #page #buddypress .message-search input[type=text]{background:0 0}body.colors-dark #page #buddypress .dir-search input[type=submit],body.colors-dark #page #buddypress .groups-members-search input[type=submit],body.colors-dark #page #buddypress .message-search input[type=submit]{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}body.colors-dark #page .message-search{margin-top:0}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#f7f7f7;border-color:#eaeaea;color:#333}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress .notifications .actions{text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#b0e5ff;border:1px solid #4ac3ff;color:#00547d}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}#buddypress .bp-avatar-status .warning,#buddypress .bp-cover-image-status .warning{background:#7dd4ff;border:1px solid #000;color:#333;font-size:16px;font-size:1rem}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#7dd4ff;border:inherit} \ No newline at end of file +.buddypress div.clear{display:none}.buddypress ul.item-list h1,.buddypress ul.item-list h2,.buddypress ul.item-list h3,.buddypress ul.item-list h4,.buddypress ul.item-list h5,.buddypress ul.item-list h6{clear:none;padding:0}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:55em){.buddypress .entry-title{text-align:right}}@media screen and (min-width:55em){.buddypress.bp-user.page .site-content,.buddypress.groups.group-create .site-content,.buddypress.single-item.groups .site-content,.directory.buddypress.page-one-column .site-content{padding-top:40px}.buddypress.bp-user.page .entry-header,.buddypress.groups.group-create .entry-header,.buddypress.single-item.groups .entry-header,.directory.buddypress.page-one-column .entry-header{margin:10px 0}}@media screen and (min-width:48em){body.buddypress.page.page-two-column #primary .entry-header{width:30%}body.buddypress.page.page-two-column #primary .entry-content{width:68%}body.buddypress:not(.has-sidebar) #primary.content-area,body.buddypress:not(.page-two-column) #primary.content-area{max-width:100%;width:100%}body.buddypress:not(.has-sidebar) #primary.content-area .content-bottom-widgets,body.buddypress:not(.has-sidebar) #primary.content-area .entry-content,body.buddypress:not(.page-two-column) #primary.content-area .content-bottom-widgets,body.buddypress:not(.page-two-column) #primary.content-area .entry-content{margin-right:0;margin-left:0}body.buddypress:not(.has-sidebar) .sidebar,body.buddypress:not(.page-two-column) .sidebar{float:right;margin-right:75%;padding:0;width:25%}}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected{border-bottom-color:#222}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current a,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected a{color:inherit}body.colors-dark #buddypress div.item-list-tabs ul li.current a,body.colors-dark #buddypress div.item-list-tabs ul li.selected a{background:0 0;color:inherit}body.colors-dark #buddypress #object-nav li:not(.current):focus a,body.colors-dark #buddypress #object-nav li:not(.current):hover a{color:#555}body.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);margin-bottom:20px}body.colors-dark #buddypress #subnav.item-list-tabs ul li.last{border-top:1px solid rgba(234,234,234,.9)}body.colors-dark #buddypress #subnav.item-list-tabs select option{background-color:#333}body.colors-dark #buddypress .item-list div.meta{color:#ddd}body.colors-dark #buddypress .item-list .acomment-meta,body.colors-dark #buddypress .item-list .activity-comments ul,body.colors-dark #buddypress .item-list .activity-header p,body.colors-dark #buddypress .item-list div.item-desc{color:#eee}body.colors-dark #buddypress .item-list .action a,body.colors-dark #buddypress .item-list .activity-meta a{background:#fafafa}body.colors-dark #buddypress .item-list .action a:focus,body.colors-dark #buddypress .item-list .action a:hover,body.colors-dark #buddypress .item-list .activity-meta a:focus,body.colors-dark #buddypress .item-list .activity-meta a:hover{background:#fff}body.colors-dark #buddypress #latest-update{color:#eee}body.colors-dark #buddypress div.pagination *{color:#ddd}body.colors-dark #buddypress #item-header .user-nicename{color:#eee}body.colors-dark #buddypress #item-body table thead th,body.colors-dark #buddypress #item-body table thead tr{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table tr.alt td{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table .field-visibility-settings,body.colors-dark #buddypress #item-body table .field-visibility-settings-notoggle{color:#eee}body.colors-dark #buddypress #item-body fieldset{background:0 0}body.colors-dark #buddypress #item-body .checkbox label,body.colors-dark #buddypress #item-body .radio label{color:#eee}body.colors-dark #buddypress #item-body div#invite-list{background:0 0}body.colors-dark.group-members #buddypress #subnav li{background:0 0}body.colors-dark.group-members #buddypress #subnav .groups-members-search form{margin-bottom:20px;margin-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:0;border-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul li.last.filter{border-top:0}.directory.colors-dark #buddypress div.activity ul.item-list{border-top:0}body.colors-light #buddypress div.item-list-tabs ul{background-color:#fafafa}body.colors-light #buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7}body.colors-light #buddypress div#subnav.item-list-tabs ul li.last{background:#fff}body.colors-light #buddypress .item-list .activity-header p{background-color:#f7f7f7;color:#878787}body.colors-light #buddypress .item-list .activity-comments .acomment-meta{color:#737373}body.colors-light #buddypress #item-body .profile h2{background:#878787;color:#fff}body.colors-light #buddypress table tr.alt td{background:#f5f5f5;color:#333}body.colors-light #buddypress div#invite-list{background:#fafafa}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label{display:inline}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic;height:auto}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}@media screen and (min-width:55em){body:not(.page-two-column) #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body:not(.page-two-column) #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body:not(.page-two-column) #buddypress #object-nav ul li{float:none;overflow:hidden}body:not(.page-two-column) #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body:not(.page-two-column) #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}body:not(.page-two-column) #buddypress #item-body #subnav{margin:0 -20px 0 0}body:not(.page-two-column) #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:48em){#buddypress #group-create-tabs.item-list-tabs ul:after,#buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#buddypress #group-create-tabs.item-list-tabs ul li.current,#buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#buddypress #group-create-tabs.item-list-tabs ul li.current a,#buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#333;outline:0}#buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;font-weight:400;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Libre Franklin","Helvetica Neue",helvetica,arial,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:30em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:48em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:13px;font-size:.8125rem;padding:10px 0;text-align:right}@media screen and (min-width:55em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:55em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:55em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:55em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(190,190,190,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:48em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{box-shadow:none;display:inline-block;margin:0 5px!important;vertical-align:middle}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0;width:auto}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:48em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-right:1px solid #eaeaea;margin:20px 0 20px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments{margin-right:20px}}#buddypress #activity-stream .activity-comments ul{margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments ul li{border-top:1px solid #bebebe}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{border-bottom:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(190,190,190,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:55em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}#buddypress #members-list li.is-current-user .item{float:none;right:0;padding-right:5%;width:auto}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:30em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}@media screen and (min-width:48em){.bp-user.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-right:140px;margin-top:-100px}.single-item.groups.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-right:10px}}.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#333;text-shadow:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}.groups.single-item.members #buddypress #subnav.item-list-tabs ul{background:0 0;border-top:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(51,51,51,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:55em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:67em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{height:auto}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:1%;width:59%}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile h2{margin:40px 0 10px;padding:.1em .4em .1em 0}.bp-user #buddypress .profile table{margin-top:0}.bp-user #buddypress .profile .profile-fields tr.alt td{color:#333}.bp-user #buddypress .profile .profile-fields tr:last-child{border-bottom:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-notoggle,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem;margin-top:10px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-clip:padding-box;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:48em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:0 0;border-bottom:1px solid #bebebe}.bp-user #buddypress #message-threads thead tr th{background:#555}.bp-user #buddypress #message-threads tr{border-bottom:5px solid #878787}.bp-user #buddypress #message-threads tr td{display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#bebebe;border-bottom-width:1px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-info,.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-top:0}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:0 0;border-color:#bebebe}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#e3f6ff;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:48em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(190,190,190,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{height:auto}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(190,190,190,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(190,190,190,.6);-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;margin:0;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;font-size:14px;font-size:.875rem;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(190,190,190,.6);font-weight:400;padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{-webkit-border-radius:none;-moz-border-radius:none;-ms-border-radius:none;border-radius:none;float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}#buddypress div.dir-search{margin-top:0}#buddypress #search-groups-form input[type=text],#buddypress #search-message-form input[type=text],#buddypress .dir-search #search-members-form input[type=text]{float:right;margin:0;width:70%}@media screen and (min-width:30em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}}@media screen and (min-width:67em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{font-size:16px;font-size:1rem}}body.colors-dark #page #buddypress .dir-search form,body.colors-dark #page #buddypress .groups-members-search form,body.colors-dark #page #buddypress .message-search form{background:#333;border-color:#555;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;padding:1px}body.colors-dark #page #buddypress .dir-search input[type=text],body.colors-dark #page #buddypress .groups-members-search input[type=text],body.colors-dark #page #buddypress .message-search input[type=text]{background:0 0}body.colors-dark #page #buddypress .dir-search input[type=submit],body.colors-dark #page #buddypress .groups-members-search input[type=submit],body.colors-dark #page #buddypress .message-search input[type=submit]{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}body.colors-dark #page .message-search{margin-top:0}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#f7f7f7;border-color:#eaeaea;color:#333}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress .notifications .actions{text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#b0e5ff;border:1px solid #4ac3ff;color:#00547d}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}#buddypress .bp-avatar-status .warning,#buddypress .bp-cover-image-status .warning{background:#7dd4ff;border:1px solid #000;color:#333;font-size:16px;font-size:1rem}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#7dd4ff;border:inherit} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.css index c315ff09ff02178549d14ebe31581c8088d96abc..418af6e8b9ffe0f3521059440ebb6cdda071591e 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress twentyseventeen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyseventeen this stylesheet will be @@ -1808,12 +1810,6 @@ body.colors-light #buddypress div#invite-list { text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.min.css index bb4395516b0d2b1706926c13d2c5ba2c1382518f..325783d1ad6f31c783d8a46dd866a7b2d57e2e34 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}.buddypress ul.item-list h1,.buddypress ul.item-list h2,.buddypress ul.item-list h3,.buddypress ul.item-list h4,.buddypress ul.item-list h5,.buddypress ul.item-list h6{clear:none;padding:0}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:55em){.buddypress .entry-title{text-align:left}}@media screen and (min-width:55em){.buddypress.bp-user.page .site-content,.buddypress.groups.group-create .site-content,.buddypress.single-item.groups .site-content,.directory.buddypress.page-one-column .site-content{padding-top:40px}.buddypress.bp-user.page .entry-header,.buddypress.groups.group-create .entry-header,.buddypress.single-item.groups .entry-header,.directory.buddypress.page-one-column .entry-header{margin:10px 0}}@media screen and (min-width:48em){body.buddypress.page.page-two-column #primary .entry-header{width:30%}body.buddypress.page.page-two-column #primary .entry-content{width:68%}body.buddypress:not(.has-sidebar) #primary.content-area,body.buddypress:not(.page-two-column) #primary.content-area{max-width:100%;width:100%}body.buddypress:not(.has-sidebar) #primary.content-area .content-bottom-widgets,body.buddypress:not(.has-sidebar) #primary.content-area .entry-content,body.buddypress:not(.page-two-column) #primary.content-area .content-bottom-widgets,body.buddypress:not(.page-two-column) #primary.content-area .entry-content{margin-left:0;margin-right:0}body.buddypress:not(.has-sidebar) .sidebar,body.buddypress:not(.page-two-column) .sidebar{float:left;margin-left:75%;padding:0;width:25%}}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected{border-bottom-color:#222}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current a,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected a{color:inherit}body.colors-dark #buddypress div.item-list-tabs ul li.current a,body.colors-dark #buddypress div.item-list-tabs ul li.selected a{background:0 0;color:inherit}body.colors-dark #buddypress #object-nav li:not(.current):focus a,body.colors-dark #buddypress #object-nav li:not(.current):hover a{color:#555}body.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);margin-bottom:20px}body.colors-dark #buddypress #subnav.item-list-tabs ul li.last{border-top:1px solid rgba(234,234,234,.9)}body.colors-dark #buddypress #subnav.item-list-tabs select option{background-color:#333}body.colors-dark #buddypress .item-list div.meta{color:#ddd}body.colors-dark #buddypress .item-list .acomment-meta,body.colors-dark #buddypress .item-list .activity-comments ul,body.colors-dark #buddypress .item-list .activity-header p,body.colors-dark #buddypress .item-list div.item-desc{color:#eee}body.colors-dark #buddypress .item-list .action a,body.colors-dark #buddypress .item-list .activity-meta a{background:#fafafa}body.colors-dark #buddypress .item-list .action a:focus,body.colors-dark #buddypress .item-list .action a:hover,body.colors-dark #buddypress .item-list .activity-meta a:focus,body.colors-dark #buddypress .item-list .activity-meta a:hover{background:#fff}body.colors-dark #buddypress #latest-update{color:#eee}body.colors-dark #buddypress div.pagination *{color:#ddd}body.colors-dark #buddypress #item-header .user-nicename{color:#eee}body.colors-dark #buddypress #item-body table thead th,body.colors-dark #buddypress #item-body table thead tr{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table tr.alt td{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table .field-visibility-settings,body.colors-dark #buddypress #item-body table .field-visibility-settings-notoggle{color:#eee}body.colors-dark #buddypress #item-body fieldset{background:0 0}body.colors-dark #buddypress #item-body .checkbox label,body.colors-dark #buddypress #item-body .radio label{color:#eee}body.colors-dark #buddypress #item-body div#invite-list{background:0 0}body.colors-dark.group-members #buddypress #subnav li{background:0 0}body.colors-dark.group-members #buddypress #subnav .groups-members-search form{margin-bottom:20px;margin-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:0;border-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul li.last.filter{border-top:0}.directory.colors-dark #buddypress div.activity ul.item-list{border-top:0}body.colors-light #buddypress div.item-list-tabs ul{background-color:#fafafa}body.colors-light #buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7}body.colors-light #buddypress div#subnav.item-list-tabs ul li.last{background:#fff}body.colors-light #buddypress .item-list .activity-header p{background-color:#f7f7f7;color:#878787}body.colors-light #buddypress .item-list .activity-comments .acomment-meta{color:#737373}body.colors-light #buddypress #item-body .profile h2{background:#878787;color:#fff}body.colors-light #buddypress table tr.alt td{background:#f5f5f5;color:#333}body.colors-light #buddypress div#invite-list{background:#fafafa}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label{display:inline}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic;height:auto}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}@media screen and (min-width:55em){body:not(.page-two-column) #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body:not(.page-two-column) #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body:not(.page-two-column) #buddypress #object-nav ul li{float:none;overflow:hidden}body:not(.page-two-column) #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body:not(.page-two-column) #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}body:not(.page-two-column) #buddypress #item-body #subnav{margin:0 0 0 -20px}body:not(.page-two-column) #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:48em){#buddypress #group-create-tabs.item-list-tabs ul:after,#buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#buddypress #group-create-tabs.item-list-tabs ul li.current,#buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#buddypress #group-create-tabs.item-list-tabs ul li.current a,#buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#333;outline:0}#buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;font-weight:400;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Libre Franklin","Helvetica Neue",helvetica,arial,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:30em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:48em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:13px;font-size:.8125rem;padding:10px 0;text-align:left}@media screen and (min-width:55em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:55em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:55em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:55em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(190,190,190,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:48em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{box-shadow:none;display:inline-block;margin:0 5px!important;vertical-align:middle}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0;width:auto}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:48em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-left:1px solid #eaeaea;margin:20px 0 20px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments{margin-left:20px}}#buddypress #activity-stream .activity-comments ul{margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments ul li{border-top:1px solid #bebebe}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{border-bottom:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(190,190,190,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:55em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}#buddypress #members-list li.is-current-user .item{float:none;left:0;padding-left:5%;width:auto}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:30em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}@media screen and (min-width:48em){.bp-user.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-left:140px;margin-top:-100px}.single-item.groups.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-left:10px}}.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#333;text-shadow:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}.groups.single-item.members #buddypress #subnav.item-list-tabs ul{background:0 0;border-top:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(51,51,51,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:55em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:67em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{height:auto}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:1%;width:59%}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile h2{margin:40px 0 10px;padding:.1em 0 .1em .4em}.bp-user #buddypress .profile table{margin-top:0}.bp-user #buddypress .profile .profile-fields tr.alt td{color:#333}.bp-user #buddypress .profile .profile-fields tr:last-child{border-bottom:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-notoggle,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem;margin-top:10px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-clip:padding-box;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:48em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:0 0;border-bottom:1px solid #bebebe}.bp-user #buddypress #message-threads thead tr th{background:#555}.bp-user #buddypress #message-threads tr{border-bottom:5px solid #878787}.bp-user #buddypress #message-threads tr td{display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#bebebe;border-bottom-width:1px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-info,.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-top:0}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:0 0;border-color:#bebebe}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#e3f6ff;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:48em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(190,190,190,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{height:auto}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(190,190,190,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(190,190,190,.6);-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;margin:0;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;font-size:14px;font-size:.875rem;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(190,190,190,.6);font-weight:400;padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{-webkit-border-radius:none;-moz-border-radius:none;-ms-border-radius:none;border-radius:none;float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}#buddypress div.dir-search{margin-top:0}#buddypress #search-groups-form input[type=text],#buddypress #search-message-form input[type=text],#buddypress .dir-search #search-members-form input[type=text]{float:left;margin:0;width:70%}@media screen and (min-width:30em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}}@media screen and (min-width:67em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{font-size:16px;font-size:1rem}}body.colors-dark #page #buddypress .dir-search form,body.colors-dark #page #buddypress .groups-members-search form,body.colors-dark #page #buddypress .message-search form{background:#333;border-color:#555;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;padding:1px}body.colors-dark #page #buddypress .dir-search input[type=text],body.colors-dark #page #buddypress .groups-members-search input[type=text],body.colors-dark #page #buddypress .message-search input[type=text]{background:0 0}body.colors-dark #page #buddypress .dir-search input[type=submit],body.colors-dark #page #buddypress .groups-members-search input[type=submit],body.colors-dark #page #buddypress .message-search input[type=submit]{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}body.colors-dark #page .message-search{margin-top:0}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#f7f7f7;border-color:#eaeaea;color:#333}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress .notifications .actions{text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#b0e5ff;border:1px solid #4ac3ff;color:#00547d}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}#buddypress .bp-avatar-status .warning,#buddypress .bp-cover-image-status .warning{background:#7dd4ff;border:1px solid #000;color:#333;font-size:16px;font-size:1rem}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#7dd4ff;border:inherit} \ No newline at end of file +.buddypress div.clear{display:none}.buddypress ul.item-list h1,.buddypress ul.item-list h2,.buddypress ul.item-list h3,.buddypress ul.item-list h4,.buddypress ul.item-list h5,.buddypress ul.item-list h6{clear:none;padding:0}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:55em){.buddypress .entry-title{text-align:left}}@media screen and (min-width:55em){.buddypress.bp-user.page .site-content,.buddypress.groups.group-create .site-content,.buddypress.single-item.groups .site-content,.directory.buddypress.page-one-column .site-content{padding-top:40px}.buddypress.bp-user.page .entry-header,.buddypress.groups.group-create .entry-header,.buddypress.single-item.groups .entry-header,.directory.buddypress.page-one-column .entry-header{margin:10px 0}}@media screen and (min-width:48em){body.buddypress.page.page-two-column #primary .entry-header{width:30%}body.buddypress.page.page-two-column #primary .entry-content{width:68%}body.buddypress:not(.has-sidebar) #primary.content-area,body.buddypress:not(.page-two-column) #primary.content-area{max-width:100%;width:100%}body.buddypress:not(.has-sidebar) #primary.content-area .content-bottom-widgets,body.buddypress:not(.has-sidebar) #primary.content-area .entry-content,body.buddypress:not(.page-two-column) #primary.content-area .content-bottom-widgets,body.buddypress:not(.page-two-column) #primary.content-area .entry-content{margin-left:0;margin-right:0}body.buddypress:not(.has-sidebar) .sidebar,body.buddypress:not(.page-two-column) .sidebar{float:left;margin-left:75%;padding:0;width:25%}}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected{border-bottom-color:#222}body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.current a,body.colors-dark #buddypress #group-create-tabs.item-list-tabs li.selected a{color:inherit}body.colors-dark #buddypress div.item-list-tabs ul li.current a,body.colors-dark #buddypress div.item-list-tabs ul li.selected a{background:0 0;color:inherit}body.colors-dark #buddypress #object-nav li:not(.current):focus a,body.colors-dark #buddypress #object-nav li:not(.current):hover a{color:#555}body.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);margin-bottom:20px}body.colors-dark #buddypress #subnav.item-list-tabs ul li.last{border-top:1px solid rgba(234,234,234,.9)}body.colors-dark #buddypress #subnav.item-list-tabs select option{background-color:#333}body.colors-dark #buddypress .item-list div.meta{color:#ddd}body.colors-dark #buddypress .item-list .acomment-meta,body.colors-dark #buddypress .item-list .activity-comments ul,body.colors-dark #buddypress .item-list .activity-header p,body.colors-dark #buddypress .item-list div.item-desc{color:#eee}body.colors-dark #buddypress .item-list .action a,body.colors-dark #buddypress .item-list .activity-meta a{background:#fafafa}body.colors-dark #buddypress .item-list .action a:focus,body.colors-dark #buddypress .item-list .action a:hover,body.colors-dark #buddypress .item-list .activity-meta a:focus,body.colors-dark #buddypress .item-list .activity-meta a:hover{background:#fff}body.colors-dark #buddypress #latest-update{color:#eee}body.colors-dark #buddypress div.pagination *{color:#ddd}body.colors-dark #buddypress #item-header .user-nicename{color:#eee}body.colors-dark #buddypress #item-body table thead th,body.colors-dark #buddypress #item-body table thead tr{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table tr.alt td{background:0 0;color:#eee}body.colors-dark #buddypress #item-body table .field-visibility-settings,body.colors-dark #buddypress #item-body table .field-visibility-settings-notoggle{color:#eee}body.colors-dark #buddypress #item-body fieldset{background:0 0}body.colors-dark #buddypress #item-body .checkbox label,body.colors-dark #buddypress #item-body .radio label{color:#eee}body.colors-dark #buddypress #item-body div#invite-list{background:0 0}body.colors-dark.group-members #buddypress #subnav li{background:0 0}body.colors-dark.group-members #buddypress #subnav .groups-members-search form{margin-bottom:20px;margin-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul{border-bottom:0;border-top:0}.directory.colors-dark #buddypress #subnav.item-list-tabs ul li.last.filter{border-top:0}.directory.colors-dark #buddypress div.activity ul.item-list{border-top:0}body.colors-light #buddypress div.item-list-tabs ul{background-color:#fafafa}body.colors-light #buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7}body.colors-light #buddypress div#subnav.item-list-tabs ul li.last{background:#fff}body.colors-light #buddypress .item-list .activity-header p{background-color:#f7f7f7;color:#878787}body.colors-light #buddypress .item-list .activity-comments .acomment-meta{color:#737373}body.colors-light #buddypress #item-body .profile h2{background:#878787;color:#fff}body.colors-light #buddypress table tr.alt td{background:#f5f5f5;color:#333}body.colors-light #buddypress div#invite-list{background:#fafafa}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{border-bottom:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a span{border-radius:25%}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label{display:inline}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic;height:auto}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}@media screen and (min-width:55em){body:not(.page-two-column) #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body:not(.page-two-column) #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body:not(.page-two-column) #buddypress #object-nav ul li{float:none;overflow:hidden}body:not(.page-two-column) #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body:not(.page-two-column) #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}body:not(.page-two-column) #buddypress #item-body #subnav{margin:0 0 0 -20px}body:not(.page-two-column) #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:48em){#buddypress #group-create-tabs.item-list-tabs ul:after,#buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#buddypress #group-create-tabs.item-list-tabs ul li.current,#buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#buddypress #group-create-tabs.item-list-tabs ul li.current a,#buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#333;outline:0}#buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;font-weight:400;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Libre Franklin","Helvetica Neue",helvetica,arial,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:30em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:48em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:13px;font-size:.8125rem;padding:10px 0;text-align:left}@media screen and (min-width:55em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:55em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:55em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:30em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:55em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(190,190,190,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:48em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{box-shadow:none;display:inline-block;margin:0 5px!important;vertical-align:middle}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0;width:auto}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:48em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-left:1px solid #eaeaea;margin:20px 0 20px}@media screen and (min-width:30em){#buddypress #activity-stream .activity-comments{margin-left:20px}}#buddypress #activity-stream .activity-comments ul{margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments ul li{border-top:1px solid #bebebe}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{border-bottom:1px solid #eaeaea}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(51,51,51,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(190,190,190,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:55em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}#buddypress #members-list li.is-current-user .item{float:none;left:0;padding-left:5%;width:auto}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:30em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}@media screen and (min-width:48em){.bp-user.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-left:140px;margin-top:-100px}.single-item.groups.page-two-column #buddypress #cover-image-container #item-header-cover-image #item-header-content{margin-left:10px}}.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#333;text-shadow:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header-cover-image .user-nicename,.single-item.groups #buddypress #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:48em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{display:inline-block;float:none}@media screen and (min-width:48em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}.groups.single-item.members #buddypress #subnav.item-list-tabs ul{background:0 0;border-top:0}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(51,51,51,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:55em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:67em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{height:auto}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:1%;width:59%}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile h2{margin:40px 0 10px;padding:.1em 0 .1em .4em}.bp-user #buddypress .profile table{margin-top:0}.bp-user #buddypress .profile .profile-fields tr.alt td{color:#333}.bp-user #buddypress .profile .profile-fields tr:last-child{border-bottom:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-notoggle,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem;margin-top:10px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;border-radius:3px;background-clip:padding-box;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:48em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:0 0;border-bottom:1px solid #bebebe}.bp-user #buddypress #message-threads thead tr th{background:#555}.bp-user #buddypress #message-threads tr{border-bottom:5px solid #878787}.bp-user #buddypress #message-threads tr td{display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#bebebe;border-bottom-width:1px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-info,.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-top:0}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:0 0;border-color:#bebebe}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#e3f6ff;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:48em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(190,190,190,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress select{height:auto}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(190,190,190,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(190,190,190,.6);-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;margin:0;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;font-size:14px;font-size:.875rem;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(190,190,190,.6);font-weight:400;padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{-webkit-border-radius:none;-moz-border-radius:none;-ms-border-radius:none;border-radius:none;float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}#buddypress div.dir-search{margin-top:0}#buddypress #search-groups-form input[type=text],#buddypress #search-message-form input[type=text],#buddypress .dir-search #search-members-form input[type=text]{float:left;margin:0;width:70%}@media screen and (min-width:30em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}}@media screen and (min-width:67em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{font-size:16px;font-size:1rem}}body.colors-dark #page #buddypress .dir-search form,body.colors-dark #page #buddypress .groups-members-search form,body.colors-dark #page #buddypress .message-search form{background:#333;border-color:#555;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;padding:1px}body.colors-dark #page #buddypress .dir-search input[type=text],body.colors-dark #page #buddypress .groups-members-search input[type=text],body.colors-dark #page #buddypress .message-search input[type=text]{background:0 0}body.colors-dark #page #buddypress .dir-search input[type=submit],body.colors-dark #page #buddypress .groups-members-search input[type=submit],body.colors-dark #page #buddypress .message-search input[type=submit]{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}body.colors-dark #page .message-search{margin-top:0}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#f7f7f7;border-color:#eaeaea;color:#333}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress .notifications .actions{text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#b0e5ff;border:1px solid #4ac3ff;color:#00547d}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}#buddypress .bp-avatar-status .warning,#buddypress .bp-cover-image-status .warning{background:#7dd4ff;border:1px solid #000;color:#333;font-size:16px;font-size:1rem}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#7dd4ff;border:inherit} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.scss index f83f14b31005372fea5f5d6f7b517e9458d90cff..5390cd7d8af7e15077aacf1e4d2eb65cd8407a59 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyseventeen.scss @@ -124,13 +124,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -193,9 +186,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -252,6 +242,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress twentyseventeen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyseventeen this stylesheet will be @@ -2678,13 +2670,6 @@ body.colors-light { line-height: 1; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.css index 30cb6762fca456bb8a1bef4cdf72bebce1fc46d1..fdd62fcc0e0a419414876be89bf46a502f1f4c26 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentysixteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentysixteen this stylesheet will be @@ -1612,12 +1614,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.min.css index 0a0abc88426d3507d2b6c49bc0e790a84e0906be..2bafe32d27d615107d2f453b7ffbd5b3f14be330 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen-rtl.min.css @@ -1 +1 @@ -@media screen and (max-width:905px){html.js body.no-js .site-header-menu{display:none}}.buddypress div.clear{display:none}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:61.5625em){.buddypress .entry-title{text-align:right}}@media screen and (min-width:44.375em){.buddypress #primary{float:none;margin:0;width:auto}.buddypress #primary .entry-header{margin:0}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-right:7.6923%;margin-left:7.6923%}.buddypress .sidebar{float:none;margin-right:0;padding:0 7.6923%;width:auto}}@media screen and (min-width:61.5625em){.buddypress #primary{float:right;margin-left:-100%;width:70%}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-right:0;margin-left:0}.buddypress .sidebar{float:right;margin-right:75%;padding:0;width:25%}}.buddypress.no-sidebar #primary{float:none;margin:0;width:auto}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f5e7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a{color:#0073c1}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:38.75em){.bp-user #buddypress #object-nav{background:#f7f5e7;border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}@media screen and (min-width:55em){body.no-sidebar #buddypress #item-body,body.no-sidebar #buddypress #item-header{background:#fff}body.no-sidebar #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.no-sidebar #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.no-sidebar #buddypress #object-nav ul li{float:none;overflow:hidden}body.no-sidebar #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.no-sidebar #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}body.no-sidebar #buddypress #item-body #subnav{margin:0 -20px 0 0}body.no-sidebar #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Source Sans Pro",Helvetica,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:46.25em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.75rem;padding:10px 0;text-align:right}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#727272;margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-right:1px solid #eaeaea;margin-top:5px}#buddypress #activity-stream .activity-comments ul{background:rgba(247,247,247,.6);color:#737373;margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{color:#737373}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:61.5625em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:61.5625em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:75em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .notifications-options-nav{border:1px solid rgba(212,208,186,.5);float:right;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{border:0;font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:60%}.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#ccc;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d4d0ba}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:.875rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1rem}}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#9fd1e2;border:inherit} \ No newline at end of file +@media screen and (max-width:905px){html.js body.no-js .site-header-menu{display:none}}.buddypress div.clear{display:none}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:61.5625em){.buddypress .entry-title{text-align:right}}@media screen and (min-width:44.375em){.buddypress #primary{float:none;margin:0;width:auto}.buddypress #primary .entry-header{margin:0}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-right:7.6923%;margin-left:7.6923%}.buddypress .sidebar{float:none;margin-right:0;padding:0 7.6923%;width:auto}}@media screen and (min-width:61.5625em){.buddypress #primary{float:right;margin-left:-100%;width:70%}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-right:0;margin-left:0}.buddypress .sidebar{float:right;margin-right:75%;padding:0;width:25%}}.buddypress.no-sidebar #primary{float:none;margin:0;width:auto}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f5e7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a{color:#0073c1}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:38.75em){.bp-user #buddypress #object-nav{background:#f7f5e7;border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 0 5px 5px;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:left}}@media screen and (min-width:55em){body.no-sidebar #buddypress #item-body,body.no-sidebar #buddypress #item-header{background:#fff}body.no-sidebar #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.no-sidebar #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.no-sidebar #buddypress #object-nav ul li{float:none;overflow:hidden}body.no-sidebar #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.no-sidebar #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 20px 0 0;width:auto}body.no-sidebar #buddypress #item-body #subnav{margin:0 -20px 0 0}body.no-sidebar #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Source Sans Pro",Helvetica,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:46.25em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.75rem;padding:10px 0;text-align:right}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-20px;margin-right:0;padding:20px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding-right:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#727272;margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-right:1px solid #eaeaea;margin-top:5px}#buddypress #activity-stream .activity-comments ul{background:rgba(247,247,247,.6);color:#737373;margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{color:#737373}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:61.5625em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:5%;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:61.5625em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:75em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .notifications-options-nav{border:1px solid rgba(212,208,186,.5);float:right;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{border:0;font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:60%}.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#ccc;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d4d0ba}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:right;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:.875rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);padding:.2em .2em .2em 0}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1rem}}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#9fd1e2;border:inherit} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.css index 4e28154730c33bc587904dca35ea2cc33a088724..5f24bf481c135ba2dce93c5c8701b9f372ad8b31 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentysixteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentysixteen this stylesheet will be @@ -1612,12 +1614,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.min.css index ee97a1a8d73e6069ede82c465517e020dbd42470..29163bec7be022975da3077acd68c6b91e19cbc7 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.min.css @@ -1 +1 @@ -@media screen and (max-width:905px){html.js body.no-js .site-header-menu{display:none}}.buddypress div.clear{display:none}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:61.5625em){.buddypress .entry-title{text-align:left}}@media screen and (min-width:44.375em){.buddypress #primary{float:none;margin:0;width:auto}.buddypress #primary .entry-header{margin:0}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-left:7.6923%;margin-right:7.6923%}.buddypress .sidebar{float:none;margin-left:0;padding:0 7.6923%;width:auto}}@media screen and (min-width:61.5625em){.buddypress #primary{float:left;margin-right:-100%;width:70%}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-left:0;margin-right:0}.buddypress .sidebar{float:left;margin-left:75%;padding:0;width:25%}}.buddypress.no-sidebar #primary{float:none;margin:0;width:auto}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f5e7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a{color:#0073c1}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:38.75em){.bp-user #buddypress #object-nav{background:#f7f5e7;border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}@media screen and (min-width:55em){body.no-sidebar #buddypress #item-body,body.no-sidebar #buddypress #item-header{background:#fff}body.no-sidebar #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.no-sidebar #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.no-sidebar #buddypress #object-nav ul li{float:none;overflow:hidden}body.no-sidebar #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.no-sidebar #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}body.no-sidebar #buddypress #item-body #subnav{margin:0 0 0 -20px}body.no-sidebar #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Source Sans Pro",Helvetica,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:46.25em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.75rem;padding:10px 0;text-align:left}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#727272;margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-left:1px solid #eaeaea;margin-top:5px}#buddypress #activity-stream .activity-comments ul{background:rgba(247,247,247,.6);color:#737373;margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{color:#737373}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:61.5625em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:61.5625em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:75em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .notifications-options-nav{border:1px solid rgba(212,208,186,.5);float:left;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{border:0;font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:60%}.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#ccc;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d4d0ba}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:.875rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1rem}}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#9fd1e2;border:inherit} \ No newline at end of file +@media screen and (max-width:905px){html.js body.no-js .site-header-menu{display:none}}.buddypress div.clear{display:none}.buddypress #page a{box-shadow:none;text-decoration:none!important}.buddypress .entry-title{text-align:center}@media screen and (min-width:61.5625em){.buddypress .entry-title{text-align:left}}@media screen and (min-width:44.375em){.buddypress #primary{float:none;margin:0;width:auto}.buddypress #primary .entry-header{margin:0}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-left:7.6923%;margin-right:7.6923%}.buddypress .sidebar{float:none;margin-left:0;padding:0 7.6923%;width:auto}}@media screen and (min-width:61.5625em){.buddypress #primary{float:left;margin-right:-100%;width:70%}.buddypress #primary .content-bottom-widgets,.buddypress #primary .entry-content{margin-left:0;margin-right:0}.buddypress .sidebar{float:left;margin-left:75%;padding:0;width:25%}}.buddypress.no-sidebar #primary{float:none;margin:0;width:auto}#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{background-color:#f7f5e7;border-bottom:1px solid rgba(234,234,234,.9);border-top:1px solid rgba(234,234,234,.9);overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a{color:#0073c1}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:38.75em){.bp-user #buddypress #object-nav{background:#f7f5e7;border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:38.75em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f4f2df}}@media screen and (min-width:38.75em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{background-color:#f7f7f7;border-bottom:0;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;margin-top:0;padding:5px 5px 5px 0;width:100%}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.875rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}@media screen and (min-width:38.75em){#buddypress div#subnav.item-list-tabs ul li.last{text-align:right}}@media screen and (min-width:55em){body.no-sidebar #buddypress #item-body,body.no-sidebar #buddypress #item-header{background:#fff}body.no-sidebar #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.no-sidebar #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.no-sidebar #buddypress #object-nav ul li{float:none;overflow:hidden}body.no-sidebar #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.no-sidebar #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 20px;width:auto}body.no-sidebar #buddypress #item-body #subnav{margin:0 0 0 -20px}body.no-sidebar #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress .item-list .activity-header,#buddypress .item-list .activity-meta{font-family:"Source Sans Pro",Helvetica,sans-serif}#buddypress .activity-meta .button:focus,#buddypress .activity-meta .button:hover{background:inherit;color:#000}#buddypress .action .generic-button a:focus,#buddypress .action .generic-button a:hover{background:inherit;color:#000}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:38.75em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{overflow:hidden}@media screen and (min-width:46.25em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.125rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:44.375em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.75rem;padding:10px 0;text-align:left}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.875rem}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:22px;font-size:1.375rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-20px;margin-left:0;padding:20px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block;width:100%}@media screen and (min-width:38.75em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:61.5625em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 20px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding-left:.4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}}#buddypress #item-body form#whats-new-form{margin:40px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:20px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream li .activity-content .activity-header a{color:#0075c4}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1rem}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.875rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{background-color:#f7f7f7;border:1px solid rgba(234,234,234,.6);color:#727272;margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;margin-bottom:5px}@media screen and (min-width:38.75em){#buddypress #activity-stream .activity-content .activity-meta a{display:inline-block;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more:focus a,#buddypress #activity-stream .load-more:hover a{font-style:italic}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:20px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1rem;margin-bottom:40px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.25rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:20px}#buddypress #activity-stream .activity-comments{border-left:1px solid #eaeaea;margin-top:5px}#buddypress #activity-stream .activity-comments ul{background:rgba(247,247,247,.6);color:#737373;margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments ul a{color:#0077c7}#buddypress #activity-stream .activity-comments .acomment-meta{color:#737373}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.75rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:61.5625em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:38.75em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.875rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:38.75em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:38.75em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:20px}}@media screen and (max-width:38.75em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:40px}.single-item.groups #buddypress div#item-header div#item-actions{margin:0;width:100%}@media screen and (min-width:38.75em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.875rem;padding:.2em}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:16px;font-size:1rem}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-avatar{width:21%}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:4%;width:40%}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}.bp-user #buddypress #item-header{padding:20px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center;width:100%}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left;width:20%}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:5%;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.875rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:.875rem}.groups.group-avatar form>p{margin-top:20px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:38.75em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:38.75em){.groups.group-members #subnav li{background:#fff;padding:20px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:38.75em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:14px;font-size:.875rem}.bp-user #buddypress table td{font-size:12px;font-size:.75rem}.bp-user #buddypress table a{color:#0074c2}@media screen and (min-width:61.5625em){.bp-user #buddypress table th{font-size:16px;font-size:1rem}.bp-user #buddypress table td{font-size:14px;font-size:.875rem}}@media screen and (min-width:75em){.bp-user #buddypress table th{font-size:18px;font-size:1.125rem}.bp-user #buddypress table td{font-size:16px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .notifications-options-nav{border:1px solid rgba(212,208,186,.5);float:left;width:100%}@media screen and (min-width:38.75em){.bp-user #buddypress .notifications-options-nav{width:300px}}.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{border:0;font-size:14px;font-size:.875rem;outline:0;padding:0}.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:60%}.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;width:40%}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.125rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.875rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#555;color:#fff;padding:.2em .5em}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom-color:#ccc;border-bottom-width:2px;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star{line-height:1.2}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.75rem;line-height:2.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:38.75em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.6875rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{background:#dce5ff;border-color:#d4d0ba}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{border-bottom-color:#b7b7b7;line-height:1;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results ul{margin:0}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.25rem;margin:20px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress .standard-form select{color:#737373}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{float:left;margin:0;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:.875rem;border:0;line-height:inherit}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);padding:.2em 0 .2em .2em}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:.2em 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:38.75em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1rem}}#buddypress table{font-size:14px;font-size:.875rem;margin:20px 0}#buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff}#buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){#buddypress table{font-size:16px;font-size:1rem}}#buddypress .messages-notices th,#buddypress .notifications th{width:30%}#buddypress .messages-notices th.bulk-select-all,#buddypress .notifications th.bulk-select-all{text-align:center;width:10%}#buddypress .messages-notices .bulk-select-check,#buddypress .messages-notices .thread-star,#buddypress .notifications .bulk-select-check,#buddypress .notifications .thread-star{text-align:center}#buddypress .messages-notices .notification-actions,#buddypress .messages-notices td.thread-options,#buddypress .notifications .notification-actions,#buddypress .notifications td.thread-options{text-align:center}#buddypress .messages-notices .notification-actions a,#buddypress .messages-notices td.thread-options a,#buddypress .notifications .notification-actions a,#buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}#buddypress .messages-notices td .button,#buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.125rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808}#buddypress .acfb-holder li.friend-tab{background:#9fd1e2;border:inherit} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.scss index 9542fe8f075b97de4c76e13fe86ce666d3498e04..909d50689e8022d73030ebfe6593d25fb0364dc6 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentysixteen.scss @@ -74,13 +74,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -136,9 +129,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -186,6 +176,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentysixteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentysixteen this stylesheet will be @@ -2273,13 +2265,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ line-height: 1; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.css index ea66c50f3e2b750f3a5f7d27c767e3ec8dc82f1c..c127f60a092a74130f1960c6f471405684d4df87 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyten theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyten this stylesheet will be @@ -1630,12 +1632,6 @@ body.page-template-onecolumn-page #content .entry-content { text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.min.css index d5d7620923c2e482a8b4f77b8c17f3c4c36c8e23..df73eab6fba4b4c1ad152e1cb3e99c4630e61ec8 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten-rtl.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}body.page-template-onecolumn-page #main #container{margin:0}body.page-template-onecolumn-page #content{margin:0 10%;width:auto}body.page-template-onecolumn-page #content .entry-content,body.page-template-onecolumn-page #content .entry-header{width:auto}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{padding:0 4px!important}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;margin-bottom:5px}body.bp-user #buddypress #object-nav ul li a{overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.bp-user #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 25px 0 0;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 -25px 0 0}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media only screen and (min-device-width:375px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media only screen and (min-device-width:375px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media only screen and (min-device-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right;opacity:1}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-device-width:450px){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:right}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin:0;margin-right:0;padding:15px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media only screen and (min-device-width:375px){#buddypress ul.item-list li div.action div{margin:0 0 5px 15px;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;max-width:220px;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:15px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:inherit;text-shadow:none}@media screen and (min-width:800px){.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{border-width:1px;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;margin:0;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-device-width:450px){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table input{margin:0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:4px 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}body.page-template-onecolumn-page #main #container{margin:0}body.page-template-onecolumn-page #content{margin:0 10%;width:auto}body.page-template-onecolumn-page #content .entry-content,body.page-template-onecolumn-page #content .entry-header{width:auto}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{padding:0 4px!important}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;margin-bottom:5px}body.bp-user #buddypress #object-nav ul li a{overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.bp-user #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 25px 0 0;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 -25px 0 0}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media only screen and (min-device-width:375px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media only screen and (min-device-width:375px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media only screen and (min-device-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right;opacity:1}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-device-width:450px){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:right}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin:0;margin-right:0;padding:15px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media only screen and (min-device-width:375px){#buddypress ul.item-list li div.action div{margin:0 0 5px 15px;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;max-width:220px;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:15px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:inherit;text-shadow:none}@media screen and (min-width:800px){.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{border-width:1px;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;margin:0;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-device-width:450px){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table input{margin:0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:4px 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.css index 78b6685c7468b4d44bbe5e55712f335514c80dd4..0b7d2ebf48ff941288acd3601b53adc7d614fc5b 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentyten theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyten this stylesheet will be @@ -1630,12 +1632,6 @@ body.page-template-onecolumn-page #content .entry-content { text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.min.css index a63160d6a450a60c24f910546d9bf5546e3f4a00..b2e4d6dea850e0045c8c2f8993a58ca52799d7e2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}body.page-template-onecolumn-page #main #container{margin:0}body.page-template-onecolumn-page #content{margin:0 10%;width:auto}body.page-template-onecolumn-page #content .entry-content,body.page-template-onecolumn-page #content .entry-header{width:auto}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{padding:0 4px!important}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;margin-bottom:5px}body.bp-user #buddypress #object-nav ul li a{overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.bp-user #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 25px;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 0 0 -25px}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media only screen and (min-device-width:375px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media only screen and (min-device-width:375px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media only screen and (min-device-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left;opacity:1}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-device-width:450px){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:left}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin:0;margin-left:0;padding:15px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media only screen and (min-device-width:375px){#buddypress ul.item-list li div.action div{margin:0 15px 5px 0;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;max-width:220px;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:15px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:inherit;text-shadow:none}@media screen and (min-width:800px){.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{border-width:1px;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;margin:0;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-device-width:450px){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table input{margin:0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:4px 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}body.page-template-onecolumn-page #main #container{margin:0}body.page-template-onecolumn-page #content{margin:0 10%;width:auto}body.page-template-onecolumn-page #content .entry-content,body.page-template-onecolumn-page #content .entry-header{width:auto}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{padding:0 4px!important}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (min-width:650px){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:.9333333333rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (min-width:800px){body.bp-user #buddypress #item-body,body.bp-user #buddypress #item-header{background:#fff}body.bp-user #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.bp-user #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.bp-user #buddypress #object-nav ul li{float:none;margin-bottom:5px}body.bp-user #buddypress #object-nav ul li a{overflow:hidden}body.bp-user #buddypress #object-nav ul li.selected{background:#ddd}body.bp-user #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.bp-user #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 25px;width:auto}body.bp-user #buddypress #item-body #subnav{margin:0 0 0 -25px}body.bp-user #buddypress #item-body #subnav ul{margin-top:0}}@media only screen and (min-device-width:375px){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#373737;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:15px;text-align:center}@media only screen and (min-device-width:375px){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:15px}@media only screen and (min-device-width:450px){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left;opacity:1}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.0666666667rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-device-width:450px){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8rem;padding:15px 0;text-align:left}@media screen and (min-width:650px){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:.9333333333rem}}@media screen and (min-width:650px){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin:0;margin-left:0;padding:15px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:650px){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:5px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media only screen and (min-device-width:375px){#buddypress ul.item-list li div.action div{margin:0 15px 5px 0;width:auto}}@media screen and (min-width:650px){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 15px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;font-size:12px;font-size:.8rem;line-height:1.6;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;max-width:220px;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{font-size:12px;font-size:.8rem;float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:0 6px}}#buddypress #item-body form#whats-new-form{margin:50px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li.load-newest a{display:block}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:25px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:650px){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:15px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.0666666667rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:.9333333333rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:.9333333333rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:650px){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:15px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:25px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.0666666667rem;margin-bottom:50px}@media screen and (min-width:650px){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.3333333333rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:25px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:15px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8rem}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:15px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(55,55,55,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:650px){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:.9333333333rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}.bp-user #buddypress #item-header-content .user-nicename,.single-item.groups #buddypress #item-header-content .user-nicename{color:#555}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:25px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:50px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:.9333333333rem;font-weight:700;line-height:1.4}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:650px){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:inherit;text-shadow:none}@media screen and (min-width:800px){.bp-user #buddypress #item-header #item-header-cover-image .user-nicename{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.8)}}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:650px){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:.9333333333rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{font-weight:700;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(55,55,55,.6);font-size:14px;font-size:.9333333333rem}.groups.group-avatar form>p{margin-top:25px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:15px;width:100%}.groups.manage-members #group-settings-form .item-list li span.small a{display:block;margin:5px 0}@media screen and (min-width:650px){.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 0 0 0}.groups.group-members #subnav li #search-members-form label input[type=text]{box-shadow:none}.bp-user #buddypress table th{font-size:13px;font-size:.8666666667rem}.bp-user #buddypress table td{font-size:12px;font-size:.8rem}@media screen and (min-width:650px){.bp-user #buddypress table th{font-size:16px;font-size:1.0666666667rem}.bp-user #buddypress table td{font-size:14px;font-size:.9333333333rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:60%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:.9333333333rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 25px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#eee;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:15px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:.9333333333rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7333333333rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:15px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:15px}.bp-user .ac_results li{margin:15px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.3333333333rem;margin:25px 0 15px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{border-width:1px;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:15px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{border:0;border-radius:0;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:14px;font-size:.9333333333rem;line-height:1.8;margin:0;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-device-width:450px){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:800px){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.0666666667rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress table{font-size:14px;font-size:.9333333333rem;margin:25px 0}.bp-user #buddypress table input{margin:0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;font-size:16px;font-size:1.0666666667rem;padding:4px 8px;text-transform:capitalize}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.0666666667rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.scss index a180556456c0cfc47b6f21ed54b90fc14e1fff3a..88cb2436bb84667b36ad59ed43611b5ef9089caf 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentyten.scss @@ -98,13 +98,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -160,9 +153,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -210,6 +200,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentyten theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyten this stylesheet will be @@ -2280,13 +2272,6 @@ body.page-template-onecolumn-page { padding-bottom: 1em; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen-rtl.css index 26258ba3cc379786d42a0099e9fc17c73c2d6538..e68556ee38cc211d291effbbb24e057a82db522a 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentythirteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.css index 6a2409f75b225c19efb5588d6e56c37c4dadd9b9..0bafa50cb9be15f6c5a8a532fdeaa465ea99c8c2 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentythirteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.scss index 856a8cca86f7ebcff0f69f0727a4a379e3b47131..a0005d010fffebdb4fb08871d6bb1360f0b96872 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentythirteen.scss @@ -47,13 +47,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -109,9 +102,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -160,6 +150,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentythirteen theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentyfifteen this stylesheet will be diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.css index e58678897613f55790d4710b4a786170e250bfc4..8c38823d72a9e0f3bec3b7df13d9d740e08ffd76 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentytwelve theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentytwelve this stylesheet will be @@ -1688,12 +1690,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: left; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-right: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.min.css index f68e62abc5289d2751c639f55fede93599fef9b5..950cd2ed278cfc98f50af0fb2a46eb43de8a5f91 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve-rtl.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:30em){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:37.5em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}@media screen and (max-width:30em){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (max-width:30em){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:right;float:none;margin-right:10px;text-align:right}}@media screen and (min-width:60em){body.full-width #buddypress #item-body,body.full-width #buddypress #item-header{background:#fff}body.full-width #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.full-width #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.full-width #buddypress #object-nav ul li{float:none;overflow:hidden}body.full-width #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.full-width #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 24px 0 0;width:auto}body.full-width #buddypress #item-body #subnav{margin:0 -24px 0 0}body.full-width #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.1428571429rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8571428571rem;padding:10px 0;text-align:right}@media screen and (min-width:60em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:1rem}}@media screen and (min-width:60em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2857142857rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-24px;margin-right:0;padding:24px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:60em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37.5em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:60em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 24px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:2px 6px}}#buddypress #item-body form#whats-new-form{margin:48px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:24px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.1428571429rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:1rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:37.5em){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:24px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.1428571429rem;margin-bottom:48px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.4285714286rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:24px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:10px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-comments a{color:#737373}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:10px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8571428571rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:60em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:1rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:24px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:48px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:1rem;padding:.2em}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header{padding:24px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:1rem}.groups.group-avatar form>p{margin-top:24px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:37.5em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:37.5em){.groups.group-members #subnav li{background:#fff;padding:24px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:37.5em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:13px;font-size:.9285714286rem}.bp-user #buddypress table td{font-size:12px;font-size:.8571428571rem}@media screen and (min-width:60em){.bp-user #buddypress table th{font-size:16px;font-size:1.1428571429rem}.bp-user #buddypress table td{font-size:14px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2857142857rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 24px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#f1f1f1;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:1rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8571428571rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7857142857rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-right:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.4285714286rem;margin:24px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1rem;border:0;border-radius:0;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.1428571429rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress table{font-size:14px;font-size:1rem;margin:24px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;padding:0 8px}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2857142857rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:30em){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:37.5em){#buddypress #object-nav ul li{float:right}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:left;margin-top:0;padding:5px 0 5px;text-align:left;width:230px}@media screen and (max-width:30em){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-right:0;text-align:left}@media screen and (max-width:30em){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:right;float:none;margin-right:10px;text-align:right}}@media screen and (min-width:60em){body.full-width #buddypress #item-body,body.full-width #buddypress #item-header{background:#fff}body.full-width #buddypress #object-nav{border-left:1px solid #ddd;float:right;margin-left:-1px;width:200px}body.full-width #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.full-width #buddypress #object-nav ul li{float:none;overflow:hidden}body.full-width #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:left;margin-left:2px}body.full-width #buddypress #item-body{border-right:1px solid #ddd;overflow:hidden;padding:0 24px 0 0;width:auto}body.full-width #buddypress #item-body #subnav{margin:0 -24px 0 0}body.full-width #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:right;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-right:0}#buddypress div.pagination .pagination-links{margin-left:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{right:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;left:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:right}}#buddypress ul.item-list li .item{margin-right:0;overflow:hidden}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item{margin-right:15%}}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:right}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-right:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.1428571429rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item .item-title{text-align:right}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8571428571rem;padding:10px 0;text-align:right}@media screen and (min-width:60em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:1rem}}@media screen and (min-width:60em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:right}#buddypress ul.item-list li .item{right:5%;margin-right:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2857142857rem}}#buddypress ul.item-list li div.action{clear:right;float:none;margin-bottom:-24px;margin-right:0;padding:24px 0 5px;position:relative;text-align:right;top:0}@media screen and (min-width:60em){#buddypress ul.item-list li div.action{clear:none;float:left;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37.5em){#buddypress ul.item-list li div.action div{margin:0 0 10px 10px;width:auto}}@media screen and (min-width:60em){#buddypress ul.item-list li div.action div{clear:left;float:left;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:right;margin:10px 0 24px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:right;line-height:1.5;margin-top:12px;padding-right:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:left;margin:0;min-height:1.5em;padding:0 .4em 0 0}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:left}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:2px 6px}}#buddypress #item-body form#whats-new-form{margin:48px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:24px;margin-right:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-right:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:right;margin-left:10px;text-align:right}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.1428571429rem}#buddypress #activity-stream li .activity-comments{margin-right:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-right:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-left:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:1rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:37.5em){#buddypress #activity-stream .activity-content .activity-meta a{float:right;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:24px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.1428571429rem;margin-bottom:48px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.4285714286rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:24px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-right:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:10px 2px 0 0}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-comments a{color:#737373}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:10px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8571428571rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:60em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:right}#buddypress #members-list li .action{float:left}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:left}#buddypress #signup_form.standard-form #basic-details-section{float:right}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:1rem;text-align:right}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-left:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:24px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:48px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-right:1px solid #eaeaea;clear:none;float:left;padding-right:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-right:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:1rem;padding:.2em}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:right}.single-item.groups #buddypress div#item-header #item-header-content{margin-right:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:left;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header{padding:24px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-left:5px}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:right}.bp-user #buddypress #item-header #item-header-avatar a{float:right}.bp-user #buddypress #item-header #item-header-content{float:left;margin-left:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:1rem}.groups.group-avatar form>p{margin-top:24px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:right}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:right;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:37.5em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:37.5em){.groups.group-members #subnav li{background:#fff;padding:24px 0}}.groups.group-members #subnav li #search-members-form{float:left;margin:5px 0 0 5px}@media screen and (max-width:37.5em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:13px;font-size:.9285714286rem}.bp-user #buddypress table td{font-size:12px;font-size:.8571428571rem}@media screen and (min-width:60em){.bp-user #buddypress table th{font-size:16px;font-size:1.1428571429rem}.bp-user #buddypress table td{font-size:14px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:right;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:right;margin-left:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:right;font-family:inherit;line-height:20px;margin-right:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-right:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:right;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2857142857rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 24px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#f1f1f1;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{right:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em .2em .3em 0}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:right}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:left;margin-left:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:right}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:1rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-right:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-right:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-right:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:left}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8571428571rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:left;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7857142857rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:right}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-left:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-right:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-left:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-right:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-right:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:left}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-right:10px}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.4285714286rem;margin:24px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-left:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:right;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1rem;border:0;border-radius:0;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-left:1px solid rgba(212,208,186,.6);float:right;margin:0;padding:0 .2em;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:left;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:left;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.1428571429rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress table{font-size:14px;font-size:1rem;margin:24px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;padding:0 8px}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2857142857rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.css index c3bd796c45cb7e8bbc0cbc612b35ae3edcf05941..71918537f8df5f35ae7e8f355ecb397364811ea7 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.css @@ -3,6 +3,8 @@ This is the BuddyPress companion stylesheet for the WordPress Twentytwelve theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentytwelve this stylesheet will be @@ -1688,12 +1690,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ text-align: right; } -.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child { - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; -} - .bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after { content: attr(title); display: block; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.min.css b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.min.css index 826456bb8791b6b82e12877ff9949df1e129ab78..fd8e05f88078f1769cb4443e7df74bbf4a9b30cc 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.min.css +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.min.css @@ -1 +1 @@ -.buddypress div.clear{display:none}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:30em){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:37.5em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}@media screen and (max-width:30em){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (max-width:30em){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:left;float:none;margin-left:10px;text-align:left}}@media screen and (min-width:60em){body.full-width #buddypress #item-body,body.full-width #buddypress #item-header{background:#fff}body.full-width #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.full-width #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.full-width #buddypress #object-nav ul li{float:none;overflow:hidden}body.full-width #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.full-width #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 24px;width:auto}body.full-width #buddypress #item-body #subnav{margin:0 0 0 -24px}body.full-width #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.1428571429rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8571428571rem;padding:10px 0;text-align:left}@media screen and (min-width:60em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:1rem}}@media screen and (min-width:60em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2857142857rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-24px;margin-left:0;padding:24px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:60em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37.5em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:60em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 24px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:2px 6px}}#buddypress #item-body form#whats-new-form{margin:48px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:24px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.1428571429rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:1rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:37.5em){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:24px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.1428571429rem;margin-bottom:48px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.4285714286rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:24px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:10px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-comments a{color:#737373}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:10px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8571428571rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:60em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:1rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:24px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:48px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:1rem;padding:.2em}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header{padding:24px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:1rem}.groups.group-avatar form>p{margin-top:24px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:37.5em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:37.5em){.groups.group-members #subnav li{background:#fff;padding:24px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:37.5em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:13px;font-size:.9285714286rem}.bp-user #buddypress table td{font-size:12px;font-size:.8571428571rem}@media screen and (min-width:60em){.bp-user #buddypress table th{font-size:16px;font-size:1.1428571429rem}.bp-user #buddypress table td{font-size:14px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2857142857rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 24px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#f1f1f1;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:1rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8571428571rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7857142857rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child{line-height:0;margin-left:.7em;text-indent:-999em}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.4285714286rem;margin:24px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1rem;border:0;border-radius:0;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.1428571429rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress table{font-size:14px;font-size:1rem;margin:24px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;padding:0 8px}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2857142857rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file +.buddypress div.clear{display:none}#buddypress div.item-list-tabs ul li.current a,#buddypress div.item-list-tabs ul li.selected a{background:inherit;opacity:1}#buddypress div.item-list-tabs ul{overflow:hidden;padding:0}#buddypress div.item-list-tabs ul li a:focus,#buddypress div.item-list-tabs ul li a:hover{color:#555}#buddypress div.item-list-tabs ul li a:visited{color:#21759b}#buddypress div.item-list-tabs ul li a span{border-radius:25%}@media screen and (max-width:30em){.bp-user #buddypress #object-nav{border:1px solid #eaeaea;overflow:visible;padding:10px}.bp-user #buddypress #object-nav ul{border:0;height:0;transition:height .3s ease-in-out .7s;visibility:hidden}.bp-user #buddypress #object-nav:before{content:"Menu \021E9";display:inline;opacity:.7}.bp-user #buddypress #object-nav:focus:before,.bp-user #buddypress #object-nav:hover:before{content:"Menu \021E7"}.bp-user #buddypress #object-nav:focus ul,.bp-user #buddypress #object-nav:hover ul{height:320px;opacity:1;overflow-y:auto;visibility:visible}.bp-user #buddypress #subnav{clear:both}}#buddypress #object-nav ul{overflow:hidden}#buddypress #object-nav ul li{float:none}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(:last-child){border-bottom:1px solid #eaeaea}}@media screen and (max-width:37.5em){#buddypress #object-nav ul li:not(.selected):focus,#buddypress #object-nav ul li:not(.selected):hover{background:#f2f2f2}}@media screen and (min-width:37.5em){#buddypress #object-nav ul li{float:left}}#buddypress div#subnav.item-list-tabs{margin-top:0}#buddypress div#subnav.item-list-tabs ul{border-bottom:0;border-top:1px solid #d4d0ba;margin-top:5px;padding:0}#buddypress div#subnav.item-list-tabs ul li.last{background:#fff;float:right;margin-top:0;padding:5px 0 5px;text-align:right;width:230px}@media screen and (max-width:30em){#buddypress div#subnav.item-list-tabs ul li.last{float:none;width:auto}}#buddypress div#subnav.item-list-tabs ul li.last select,#buddypress div#subnav.item-list-tabs ul li.last select:focus{background:0 0;border:0;outline:0;padding:0}#buddypress div#subnav.item-list-tabs ul li.last label,#buddypress div#subnav.item-list-tabs ul li.last option,#buddypress div#subnav.item-list-tabs ul li.last select{font-size:14px;font-size:1rem}#buddypress div#subnav.item-list-tabs ul li.last select{font-style:italic}#buddypress div#subnav.item-list-tabs ul li.last select option{font-style:normal}.bp-user #buddypress div#subnav.item-list-tabs li.last{margin-left:0;text-align:right}@media screen and (max-width:30em){.bp-user #buddypress div#subnav.item-list-tabs li.last{clear:left;float:none;margin-left:10px;text-align:left}}@media screen and (min-width:60em){body.full-width #buddypress #item-body,body.full-width #buddypress #item-header{background:#fff}body.full-width #buddypress #object-nav{border-right:1px solid #ddd;float:left;margin-right:-1px;width:200px}body.full-width #buddypress #object-nav ul{background:0 0;border-bottom:0;padding:0}body.full-width #buddypress #object-nav ul li{float:none;overflow:hidden}body.full-width #buddypress #object-nav ul li span{background:#fff;border-radius:10%;float:right;margin-right:2px}body.full-width #buddypress #item-body{border-left:1px solid #ddd;overflow:hidden;padding:0 0 0 24px;width:auto}body.full-width #buddypress #item-body #subnav{margin:0 0 0 -24px}body.full-width #buddypress #item-body #subnav ul{margin-top:0}}@media screen and (min-width:46.25em){#main #buddypress #group-create-tabs.item-list-tabs ul:after,#main #buddypress #group-create-tabs.item-list-tabs ul:before{content:" ";display:table}#main #buddypress #group-create-tabs.item-list-tabs ul:after{clear:both}#main #buddypress #group-create-tabs.item-list-tabs ul{background:0 0;border:0;border-bottom:1px solid #ddd;overflow:visible;padding-bottom:0}#main #buddypress #group-create-tabs.item-list-tabs ul li{float:left;width:auto}#main #buddypress #group-create-tabs.item-list-tabs ul li.current,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected{border:1px solid #ddd;border-bottom-color:#fff;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;background-clip:padding-box;margin-bottom:-1px}#main #buddypress #group-create-tabs.item-list-tabs ul li.current a,#main #buddypress #group-create-tabs.item-list-tabs ul li.selected a{background:0 0;color:#141412;outline:0}#main #buddypress #subnav ul{border-bottom:0}}#buddypress div.pagination{box-shadow:none;min-height:0}#buddypress div.pagination:after,#buddypress div.pagination:before{height:0;width:0}#buddypress div.pagination .pag-count{margin-left:0}#buddypress div.pagination .pagination-links{margin-right:0}#buddypress div.pagination .pagination-links a,#buddypress div.pagination .pagination-links span{height:auto;line-height:1;padding:5px}#buddypress div.pagination .pagination-links .next,#buddypress div.pagination .pagination-links .prev{background-color:transparent;color:inherit;overflow:visible;width:auto}#buddypress div.pagination .pagination-links .next:before,#buddypress div.pagination .pagination-links .prev:before{display:none}#buddypress div.pagination .pagination-links .prev{left:auto;position:static}#buddypress div.pagination .pagination-links .next{position:static;right:auto}#buddypress ul.item-list{border-top:0}#buddypress ul.item-list li{overflow:hidden!important}#buddypress ul.item-list li .item-avatar{margin-bottom:10px;text-align:center}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar{margin-bottom:0}}#buddypress ul.item-list li .item-avatar a{border-bottom:0}#buddypress ul.item-list li .item-avatar img.avatar{display:inline-block;float:none;margin-bottom:10px}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item-avatar img.avatar{display:block;float:left}}#buddypress ul.item-list li .item{margin-left:0;overflow:hidden}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item{margin-left:15%}}#buddypress ul.item-list li .item .item-meta{text-align:center}@media screen and (min-width:61.5625em){#buddypress ul.item-list li .item .item-meta{text-align:left}}#buddypress ul.item-list li .item span.activity{font-style:italic}#buddypress ul.item-list li .item .item-desc{margin-left:0;width:94%}#buddypress ul.item-list li .item .item-title{font-size:16px;font-size:1.1428571429rem;line-height:1.2;text-align:center;width:100%}@media screen and (min-width:37.5em){#buddypress ul.item-list li .item .item-title{text-align:left}}#buddypress ul.item-list li .item .item-title>a{text-decoration:none}#buddypress ul.item-list li .item .item-title>a:visited{color:#21759b}#buddypress ul.item-list li .item .item-title .update{display:block;font-size:12px;font-size:.8571428571rem;padding:10px 0;text-align:left}@media screen and (min-width:60em){#buddypress ul.item-list li .item .item-title .update{font-size:14px;font-size:1rem}}@media screen and (min-width:60em){#buddypress ul.item-list li .action,#buddypress ul.item-list li .item,#buddypress ul.item-list li .item-avatar{float:left}#buddypress ul.item-list li .item{left:5%;margin-left:0;position:relative;width:55%}#buddypress ul.item-list li .item .item-title{font-size:18px;font-size:1.2857142857rem}}#buddypress ul.item-list li div.action{clear:left;float:none;margin-bottom:-24px;margin-left:0;padding:24px 0 5px;position:relative;text-align:left;top:0}@media screen and (min-width:60em){#buddypress ul.item-list li div.action{clear:none;float:right;margin-bottom:0;padding:0}}#buddypress ul.item-list li div.action div{display:inline-block;margin:10px 0;width:100%}#buddypress ul.item-list li div.action div a{display:block}@media screen and (min-width:37.5em){#buddypress ul.item-list li div.action div{margin:0 10px 10px 0;width:auto}}@media screen and (min-width:60em){#buddypress ul.item-list li div.action div{clear:right;float:right;margin:0 0 10px 0}}#buddypress ul.item-list li div.action .meta{font-style:italic}#buddypress form#whats-new-form p.activity-greeting{line-height:1.4}@media screen and (max-width:46.25em){#buddypress form#whats-new-form #whats-new-content{clear:left;margin:10px 0 24px;padding:10px 0 0}}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{border:1px solid rgba(212,208,186,.5);float:left;line-height:1.5;margin-top:12px;padding-left:.2em;width:100%}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box select{background:0 0;border:0;float:right;margin:0;min-height:1.5em;padding:0 0 0 .4em}@media screen and (min-width:30em){#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-post-in-box{width:auto}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit{float:right}#buddypress form#whats-new-form #whats-new-content.active #whats-new-options[style] #whats-new-submit input{padding:2px 6px}}#buddypress #item-body form#whats-new-form{margin:48px 0}#buddypress #activity-stream li{padding:25px 0 15px}#buddypress #activity-stream li .activity-avatar{float:none;text-align:center}#buddypress #activity-stream li .activity-avatar a{display:inline-block}#buddypress #activity-stream li .activity-avatar a img.avatar{display:inline;float:none;height:60px;margin-bottom:24px;margin-left:0;width:60px}#buddypress #activity-stream li .activity-comments,#buddypress #activity-stream li .activity-content{margin-left:0}#buddypress #activity-stream li .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li .activity-header a:visited{color:#21759b}#buddypress #activity-stream li .activity-inner img{height:auto}@media screen and (min-width:46.25em){#buddypress #activity-stream li .activity-avatar{float:left;margin-right:10px;text-align:left}#buddypress #activity-stream li .activity-avatar a{border-bottom:0}#buddypress #activity-stream li .activity-content{margin:0;overflow:hidden}#buddypress #activity-stream li .activity-content .activity-header{font-size:16px;font-size:1.1428571429rem}#buddypress #activity-stream li .activity-comments{margin-left:70px}}#buddypress #activity-stream li.mini .activity-avatar a img.avatar{height:30px;margin-left:15px;width:30px}#buddypress #activity-stream li.mini .activity-content .activity-header{font-size:14px;font-size:1rem}#buddypress #activity-stream li.mini .activity-content .activity-meta a{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-content{margin-top:-12px}#buddypress #activity-stream .activity-content .activity-header{line-height:inherit;margin-right:0}#buddypress #activity-stream .activity-content .activity-header p{border-bottom:1px solid rgba(234,234,234,.6);margin-top:0;padding:0 .2em}#buddypress #activity-stream .activity-content .activity-header img.avatar{display:inline-block;margin-bottom:0!important}#buddypress #activity-stream .activity-content .activity-meta a{display:block;font-size:14px;font-size:1rem;margin-bottom:5px;padding:.2em .5em}@media screen and (min-width:37.5em){#buddypress #activity-stream .activity-content .activity-meta a{float:left;margin-bottom:0}}#buddypress #activity-stream .load-more{background:#f7f7f7;border:1px solid transparent;padding:10px}#buddypress #activity-stream .load-more:focus,#buddypress #activity-stream .load-more:hover{background:#f4f4f4;border:1px solid rgba(159,209,226,.3)}#buddypress #activity-stream .load-more a{display:block}.activity-permalink #buddypress #activity-stream li.activity-item{padding:24px}.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:16px;font-size:1.1428571429rem;margin-bottom:48px}@media screen and (min-width:46.25em){.activity-permalink #buddypress #activity-stream li.mini .activity-header{font-size:20px;font-size:1.4285714286rem}}.activity-permalink #buddypress #activity-stream li.mini .activity-header p{padding:24px}.activity-permalink #buddypress #activity-stream .activity-comments{margin-left:0}#buddypress #activity-stream .activity-comments{position:relative}#buddypress #activity-stream .activity-comments>ul{background:rgba(247,247,247,.6);margin:10px 0 0 2px}#buddypress #activity-stream .activity-comments>ul>li:hover *{color:#555}#buddypress #activity-stream .activity-comments>ul>li .acomment-content,#buddypress #activity-stream .activity-comments>ul>li .acomment-meta{font-size:12px;font-size:.8571428571rem}#buddypress #activity-stream .activity-comments a{color:#737373}#buddypress #activity-stream .activity-comments .ac-form{border:1px solid #d4d0ba;box-sizing:border-box;margin:10px 0;width:100%}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel,#buddypress #activity-stream .activity-comments .ac-form input[type=submit]{color:rgba(20,20,18,.8);display:inline-block;font-family:inherit;font-size:12px;font-size:.8571428571rem;font-weight:400;line-height:1.2;padding:4px 10px;text-transform:lowercase;width:100px}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel{border:1px solid rgba(212,208,186,.7);text-align:center}#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:focus,#buddypress #activity-stream .activity-comments .ac-form .ac-reply-cancel:hover{background:#ededed}@media screen and (min-width:60em){#buddypress #members-list li .item,#buddypress #members-list li .item-avatar{float:left}#buddypress #members-list li .action{float:right}}#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{float:none;width:100%}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #basic-details-section,#buddypress #signup_form.standard-form #blog-details-section,#buddypress #signup_form.standard-form #profile-details-section{width:48%}}@media screen and (min-width:37.5em){#buddypress #signup_form.standard-form #profile-details-section{float:right}#buddypress #signup_form.standard-form #basic-details-section{float:left}}.bp-user #buddypress a:visited{color:#21759b}.bp-user #buddypress #item-header-content #item-meta,.single-item.groups #buddypress #item-header-content #item-meta{font-size:14px;font-size:1rem;text-align:left}.bp-user #buddypress #item-header-content #item-meta p,.single-item.groups #buddypress #item-header-content #item-meta p{margin-bottom:.5em}@media screen and (max-width:37.5em){.bp-user #item-header-content,.bp-user h1,.single-item.groups #item-header-content,.single-item.groups h1{text-align:center}}@media screen and (max-width:46.25em){.bp-user main header.entry-header,.single-item.groups main header.entry-header{padding-bottom:1rem}}@media screen and (max-width:37.5em){.bp-user #buddypress h1,.single-item.groups #buddypress h1{margin-bottom:0}.bp-user #buddypress #item-header-avatar img.avatar,.single-item.groups #buddypress #item-header-avatar img.avatar{margin-right:0}.bp-user #buddypress #item-header-content,.single-item.groups #buddypress #item-header-content{width:100%}}@media screen and (max-width:46.25em){.bp-user #buddypress #item-header .generic-button,.single-item.groups #buddypress #item-header .generic-button{float:none;margin:1.5em 0 0}}@media screen and (max-width:46.25em){.single-item.groups #buddypress #item-header #item-meta{margin-bottom:24px}}@media screen and (max-width:50em){.single-item.groups #buddypress div#item-header{display:flex;flex-direction:column}.single-item.groups #buddypress div#item-header #item-header-avatar{order:1;text-align:center}.single-item.groups #buddypress div#item-header #item-header-avatar a{border-bottom:0}.single-item.groups #buddypress div#item-header #item-header-avatar a img{display:inline-block;float:none}.single-item.groups #buddypress div#item-header #item-header-content{order:2}.single-item.groups #buddypress div#item-header #item-actions{order:3}.single-item.groups #buddypress div#item-header #item-actions h2{border-bottom:1px solid #eaeaea;text-align:center}}.single-item.groups #buddypress div#item-header{padding-bottom:48px}.single-item.groups #buddypress div#item-header #item-header-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.single-item.groups #buddypress div#item-header div#item-actions{margin:0!important;width:100%}@media screen and (min-width:50em){.single-item.groups #buddypress div#item-header div#item-actions{border-left:1px solid #eaeaea;clear:none;float:right;padding-left:.2em;width:30%}}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header div#item-actions{width:40%}}.single-item.groups #buddypress div#item-header div#item-actions ul{margin-top:0;padding-left:0}.single-item.groups #buddypress div#item-header div#item-actions h2{font-size:14px;font-size:1rem;padding:.2em}.single-item.groups #buddypress div#item-header div#item-actions #group-admins li,.single-item.groups #buddypress div#item-header div#item-actions #group-mods li{margin:0}@media screen and (min-width:46.25em){.single-item.groups #buddypress div#item-header #item-header-avatar,.single-item.groups #buddypress div#item-header #item-header-content{float:left}.single-item.groups #buddypress div#item-header #item-header-content{margin-left:2%;padding:0 .5em}.single-item.groups #buddypress div#item-header div#item-actions{float:right;width:28%}}@media screen and (min-width:64em){.single-item.groups #buddypress div#item-header #item-header-content{width:40%}}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{margin-top:225px!important}@media screen and (min-width:50em) and (max-width:60em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-header-content{max-width:60%!important;width:60%!important}}@media screen and (max-width:64em){.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions{border:0;clear:both;margin-top:0!important;max-width:100%!important;padding-top:0!important;width:auto}.single-item.groups #buddypress #cover-image-container #item-header-cover-image #item-actions h2{border-bottom:1px solid #eaeaea}}.bp-user #buddypress #item-header{padding:24px 0}.bp-user #buddypress #item-header #item-header-avatar{text-align:center}.bp-user #buddypress #item-header #item-header-avatar a,.bp-user #buddypress #item-header #item-header-avatar img.avatar{border-bottom:0;display:inline-block;float:none}.bp-user #buddypress #item-header #item-header-content #item-buttons .generic-button{margin-right:5px}@media screen and (min-width:46.25em){.bp-user #buddypress #item-header #item-header-avatar{float:left}.bp-user #buddypress #item-header #item-header-avatar a{float:left}.bp-user #buddypress #item-header #item-header-content{float:right;margin-right:0;width:69%}}.groups #group-settings-form h3{background:#555;color:#fff;padding:.2em}.groups.edit-details #group-settings-form label{margin-bottom:0;padding:.2em;width:80%}.groups.edit-details #group-settings-form textarea+p label{background:0 0;color:inherit;font-size:14px;font-size:1rem;width:auto}.groups.edit-details #group-settings-form textarea{height:auto;min-height:100px;overflow:auto}.groups.group-settings #group-settings-form div.radio label{border:1px solid #eaeaea;padding:.2em}.groups.group-settings #group-settings-form div.radio label ul{color:rgba(20,20,18,.6);font-size:14px;font-size:1rem}.groups.group-avatar form>p{margin-top:24px}.groups.manage-members #group-settings-form .item-list li{border-bottom:1px solid #eaeaea}.groups.manage-members #group-settings-form .item-list li h5,.groups.manage-members #group-settings-form .item-list li img{float:left}.groups.manage-members #group-settings-form .item-list li h5>a,.groups.manage-members #group-settings-form .item-list li img>a{border-bottom:0}.groups.manage-members #group-settings-form .item-list li span.small{clear:left;display:block;float:none;margin-top:10px}.groups.manage-members #group-settings-form .item-list li span.small a{display:inline-block;margin:5px 0;width:100%}@media screen and (min-width:37.5em){.groups.manage-members #group-settings-form .item-list li span.small a{width:auto}}.groups.manage-members #group-settings-form .item-list li h5{margin:0}.groups.group-members #subnav li{width:100%}@media screen and (max-width:37.5em){.groups.group-members #subnav li{background:#fff;padding:24px 0}}.groups.group-members #subnav li #search-members-form{float:right;margin:5px 5px 0 0}@media screen and (max-width:37.5em){.groups.group-members #subnav li #search-members-form{margin:0;width:100%}.groups.group-members #subnav li #search-members-form label input[type=text]{width:100%}}.bp-user .entry-title{margin-bottom:.5em}.bp-user #buddypress table th{font-size:13px;font-size:.9285714286rem}.bp-user #buddypress table td{font-size:12px;font-size:.8571428571rem}@media screen and (min-width:60em){.bp-user #buddypress table th{font-size:16px;font-size:1.1428571429rem}.bp-user #buddypress table td{font-size:14px;font-size:1rem}}.bp-user #buddypress .pag-count{font-style:italic}.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{float:left;width:100%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav,.bp-user #buddypress .notifications-options-nav{width:40%}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav input,.bp-user #buddypress .notifications-options-nav select{font-size:14px;font-size:1rem;outline:0;padding:0}.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{float:left;margin-right:0;width:49%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav select,.bp-user #buddypress .notifications-options-nav select{width:auto}}.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{float:left;font-family:inherit;line-height:20px;margin-left:1%;width:50%}@media screen and (min-width:37.5em){.bp-user #buddypress .messages-options-nav input,.bp-user #buddypress .notifications-options-nav input{width:auto}}.bp-user #buddypress .messages-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .messages-options-nav input[disabled=disabled]:hover,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:focus,.bp-user #buddypress .notifications-options-nav input[disabled=disabled]:hover{background:0 0}.bp-user #buddypress .profile .bp-widget h2{background:#6f6e6e;color:#fff;margin-bottom:0;padding:.4em}.bp-user #buddypress .profile .bp-widget table{margin-top:0}.bp-user #buddypress .profile #profile-edit-form .button-nav:after,.bp-user #buddypress .profile #profile-edit-form .button-nav:before{content:" ";display:table}.bp-user #buddypress .profile #profile-edit-form .button-nav:after{clear:both}.bp-user #buddypress .profile #profile-edit-form ul.button-nav{border-bottom:1px solid #eaeaea;margin-left:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li{float:left;margin-bottom:0}.bp-user #buddypress .profile #profile-edit-form ul.button-nav li.current{border:1px solid #eaeaea;border-bottom-color:#fff;margin-bottom:-1px}.bp-user #buddypress .profile #profile-edit-form ul.button-nav a{background:0 0;border:0;font-size:18px;font-size:1.2857142857rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{margin:5px 0 24px}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-toggle{font-size:14px;font-size:1rem}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link{background:#6f6e6e;-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box;color:#f1f1f1;font-weight:700;padding:.1em .5em;text-decoration:none}.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:focus,.bp-user #buddypress .profile #profile-edit-form .field-visibility-settings-close:hover,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:focus,.bp-user #buddypress .profile #profile-edit-form .visibility-toggle-link:hover{color:#fff}.bp-user #buddypress .profile .bp-avatar #bp-delete-avatar a{font-size:inherit}@media screen and (min-width:77.5em){.bp-user #buddypress #groups-list li .item{left:5%;width:50%}}.bp-user #buddypress #message-thread a{border-bottom:0}.bp-user #buddypress #message-thread #message-subject{background:#6f6e6e;color:#fff;padding:.3em 0 .3em .2em}.bp-user #buddypress #message-thread #message-recipients{font-style:italic}.bp-user #buddypress #message-thread #message-recipients a.confirm{border:1px solid #eaeaea;font-style:normal}.bp-user #buddypress #message-thread #message-recipients .highlight{font-size:100%}.bp-user #buddypress #message-thread .message-metadata:after{clear:both;content:"";display:table}.bp-user #buddypress #message-thread .message-metadata img.avatar{float:none}@media screen and (min-width:46.25em){.bp-user #buddypress #message-thread .message-metadata img.avatar{float:left}}.bp-user #buddypress #message-thread .message-metadata .message-star-actions{float:right;margin-right:5px;position:static}.bp-user #buddypress #message-thread .message-content{background:#f7f7f7;border:1px solid #eaeaea;margin:10px 0 0 0;padding:.3em}.bp-user #buddypress #message-thread #send-reply .message-content{background:#fff;border:0}.bp-user #buddypress #message-thread .alt{background:#fff}.bp-user #buddypress #message-threads thead tr{background:#6f6e6e}.bp-user #buddypress #message-threads tr td{background:#fff;box-sizing:border-box;display:inline-block;float:left}.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{border-bottom:1px solid #ccc;height:2.4em;padding-bottom:.2em;padding-top:.2em}@media screen and (max-width:46.25em){.bp-user #buddypress #message-threads tr td.thread-options,.bp-user #buddypress #message-threads tr td.thread-star{padding-top:0}}.bp-user #buddypress #message-threads tr td.thread-star{vertical-align:middle}.bp-user #buddypress #message-threads tr td.thread-star .message-action-star,.bp-user #buddypress #message-threads tr td.thread-star .message-action-unstar{line-height:1.2}.bp-user #buddypress #message-threads tr td.thread-star span.icon:before{font-size:14px;font-size:1rem}.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:3em}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr td.bulk-select-check,.bp-user #buddypress #message-threads tr td.thread-from{height:5.2em}}.bp-user #buddypress #message-threads tr td.thread-from,.bp-user #buddypress #message-threads tr td.thread-options{border-left:0!important;width:-webkit-calc(100% - 30px);width:-moz-calc(100% - 30px);width:calc(100% - 30px);margin-left:0}.bp-user #buddypress #message-threads tr td.thread-info{padding-left:41px;width:100%}.bp-user #buddypress #message-threads tr td.thread-options{text-align:right}.bp-user #buddypress #message-threads tr td.thread-options a{font-size:12px;font-size:.8571428571rem;line-height:1.2}.bp-user #buddypress #message-threads tr span.from{display:none}.bp-user #buddypress #message-threads tr span.activity{display:block;float:right;line-height:2}@media screen and (max-width:37.5em){.bp-user #buddypress #message-threads tr span.activity{clear:both;font-size:11px;font-size:.7857142857rem;width:100%}}.bp-user #buddypress #message-threads tr.unread td{border-color:#eaeaea}.bp-user #buddypress #message-threads th{display:none}.bp-user #buddypress #message-threads th.bulk-select-all{border-bottom:0;display:inline-block;text-align:left}.bp-user #buddypress #message-threads td.bulk-select-check,.bp-user #buddypress #message-threads td.thread-star,.bp-user #buddypress #message-threads th.bulk-select-all{border-right:0;width:30px}.bp-user #buddypress #send_message_form input,.bp-user #buddypress #send_message_form textarea{box-sizing:border-box}.bp-user #buddypress .acfb-holder{list-style:none}.bp-user #buddypress .acfb-holder li{margin-left:0}.bp-user #buddypress .acfb-holder li.friend-tab{background:#edf7fa;border:inherit;margin-right:0;padding:.5em}.bp-user #buddypress .acfb-holder li.friend-tab span.p{padding-left:10px}.bp-user #buddypress .acfb-holder li.friend-tab span.p:focus,.bp-user #buddypress .acfb-holder li.friend-tab span.p:hover{color:#c82b2b;cursor:pointer}.bp-user #buddypress .acfb-holder li.friend-tab a{border-bottom:0;text-decoration:none}.bp-user #buddypress .acfb-holder li.friend-tab a img{display:inline;height:20px;vertical-align:middle;width:20px!important}.bp-user #buddypress #message-threads.sitewide-notices tr{margin:3em 0}.bp-user #buddypress #message-threads.sitewide-notices td{width:100%}.bp-user #buddypress #message-threads.sitewide-notices td strong{background:#6f6e6e;color:#fff;display:block;margin-bottom:.4em;padding-left:.2em}.bp-user #buddypress #message-threads.sitewide-notices td a{display:inline-block}.bp-user #buddypress #message-threads.sitewide-notices td a.button{border:1px solid #d4d0ba;line-height:initial;padding:.4em .3em}.bp-user #buddypress #message-threads.sitewide-notices td:first-child{display:none}.bp-user #buddypress #message-threads.sitewide-notices td:nth-child(2) strong{margin:-8px -8px 8px}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td{border-bottom:0}.bp-user #buddypress #message-threads.sitewide-notices td:first-child+td+td span{line-height:1}.bp-user #buddypress #message-threads.sitewide-notices td:last-child{line-height:1;padding-bottom:1em;text-align:right}.bp-user #buddypress #message-threads.sitewide-notices td:last-child a:last-child:after{content:attr(title);display:block;line-height:initial;text-indent:0}.bp-user .ac_results{background:#eee;padding-left:10px}.bp-user .ac_results li{margin:10px 0}.bp-user .ac_results li:focus,.bp-user .ac_results li:hover{cursor:pointer}.bp-user .ac_results li img{vertical-align:bottom}.bp-user #buddypress #settings-form>p{font-size:20px;font-size:1.4285714286rem;margin:24px 0 10px}.bp-user #buddypress table.notification-settings td.no,.bp-user #buddypress table.notification-settings td.yes{vertical-align:middle}.bp-user #buddypress table.profile-settings{width:100%}.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:50%}@media screen and (min-width:46.25em){.bp-user #buddypress table.profile-settings td.field-name,.bp-user #buddypress table.profile-settings th.field-group-name{width:70%}}.bp-user #buddypress table.profile-settings td.field-visibility,.bp-user #buddypress table.profile-settings th.title{width:30%}.bp-user #buddypress table.profile-settings td.field-visibility select{width:100%}#main #buddypress .standard-form li{float:none}#main #buddypress .standard-form input[type=email],#main #buddypress .standard-form input[type=password],#main #buddypress .standard-form input[type=text],#main #buddypress .standard-form textarea{width:100%}#buddypress div.activity-comments form .ac-textarea{background:#f7f7f7;border:1px solid rgba(212,208,186,.5)}#buddypress div.activity-comments form .ac-textarea textarea{background:0 0;border:0}#buddypress .standard-form button,#buddypress .standard-form input[type=email],#buddypress .standard-form input[type=password],#buddypress .standard-form input[type=text],#buddypress .standard-form select,#buddypress .standard-form textarea{border-color:rgba(212,208,186,.5);border-width:1px}#buddypress #signup_form.standard-form div.submit{float:none}#buddypress #signup_form.standard-form div.submit input{margin-right:0}#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:none;margin:10px 0}#buddypress div.dir-search form,#buddypress div.message-search form,#buddypress li.groups-members-search form{border:1px solid rgba(212,208,186,.6);overflow:hidden}#buddypress div.dir-search form label,#buddypress div.message-search form label,#buddypress li.groups-members-search form label{float:left;width:70%}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text]{font-size:14px;font-size:1rem;border:0;border-radius:0;line-height:1.8;min-height:2rem}#buddypress div.dir-search form input[type=text],#buddypress div.message-search form input[type=text],#buddypress li.groups-members-search form input[type=text]{border-right:1px solid rgba(212,208,186,.6);float:left;margin:0;padding:0 .2em;width:100%}#buddypress div.dir-search form input[type=submit],#buddypress div.message-search form input[type=submit],#buddypress li.groups-members-search form input[type=submit]{float:right;font-weight:400;padding:0 1em;text-align:center;text-transform:none;width:30%}@media screen and (min-width:37.5em){#buddypress div.dir-search,#buddypress div.message-search,#buddypress li.groups-members-search{float:right;margin-bottom:5px!important}#buddypress div.dir-search form input[type=submit],#buddypress div.dir-search form input[type=text],#buddypress div.dir-search form label,#buddypress div.message-search form input[type=submit],#buddypress div.message-search form input[type=text],#buddypress div.message-search form label,#buddypress li.groups-members-search form input[type=submit],#buddypress li.groups-members-search form input[type=text],#buddypress li.groups-members-search form label{width:auto}}@media screen and (min-width:75em){#buddypress .dir-search form input[type=text],#buddypress .message-search form input[type=text]{font-size:16px;font-size:1.1428571429rem}#buddypress .dir-search form input[type=submit],#buddypress .message-search form input[type=submit]{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress table{font-size:14px;font-size:1rem;margin:24px 0}.bp-user #buddypress table tr th{background:#6f6e6e;border-color:#b7b7b7;color:#fff;padding:0 8px}.bp-user #buddypress table tr td{padding:8px}.bp-user #buddypress table p{margin-bottom:.5em}@media screen and (min-width:55em){.bp-user #buddypress table{font-size:16px;font-size:1.1428571429rem}}.bp-user #buddypress .messages-notices th,.bp-user #buddypress .notifications th{width:30%}.bp-user #buddypress .messages-notices th.bulk-select-all,.bp-user #buddypress .notifications th.bulk-select-all{text-align:center;width:10%}.bp-user #buddypress .messages-notices th.actions,.bp-user #buddypress .notifications th.actions{text-align:center}.bp-user #buddypress .messages-notices .bulk-select-check,.bp-user #buddypress .messages-notices .thread-star,.bp-user #buddypress .notifications .bulk-select-check,.bp-user #buddypress .notifications .thread-star{text-align:center}.bp-user #buddypress .messages-notices .notification-actions,.bp-user #buddypress .messages-notices td.thread-options,.bp-user #buddypress .notifications .notification-actions,.bp-user #buddypress .notifications td.thread-options{text-align:center}.bp-user #buddypress .messages-notices .notification-actions a,.bp-user #buddypress .messages-notices td.thread-options a,.bp-user #buddypress .notifications .notification-actions a,.bp-user #buddypress .notifications td.thread-options a{display:inline-block;margin:0;padding:0}.bp-user #buddypress .messages-notices td .button,.bp-user #buddypress .notifications td .button{border:0;display:block;padding:0;text-align:center}#buddypress div#message p{font-size:18px;font-size:1.2857142857rem;font-weight:700}#buddypress div#message.info p{background:#c6e4ee;border:1px solid #78bed6;color:#1e5264}#buddypress div#message.updated p{background:#dee6b2;border:1px solid #becc66;color:#454d19}.delete-group #buddypress div#message.info p{background:#db7e7e;border:1px solid #be3535;color:#1f0808} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.scss b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.scss index dacdc86b00aead19ad88cef66952ae272c8cac1d..daefac2b1085127a8b32e767bf15eb77e7c9abae 100644 --- a/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.scss +++ b/wp-content/plugins/buddypress/bp-templates/bp-legacy/css/twentytwelve.scss @@ -73,13 +73,6 @@ $spacing-val-xs: 5px; font-size: $rem-font-value + rem; } -// To allow mixins to pass VendorPrefix scss-lint tests we disable lint-test -// for specific blocks / rulesets -// until such time as exemption lists can be built for the scss-lint.yml? -// Any vendor prefix properties / mixins need to be in this block - -// scss-lint:disable VendorPrefix - // Border border-radius mixins @mixin border-radius($radius) { -webkit-border-radius: $radius; @@ -135,9 +128,6 @@ $spacing-val-xs: 5px; #{$property}: calc(#{$expression}); } -// Re-enable the VendorPrefix lint test -// scss-lint:enable VendorPrefix - // BP message boxes @mixin message-box($background, $text-color: null) { @@ -185,6 +175,8 @@ $link-action: #c82b2b; This is the BuddyPress companion stylesheet for the WordPress Twentytwelve theme. +@version 3.0.0 + This sheet supports the primary BuddyPress styles in buddypress.css If you are running as a child theme of twentytwelve this stylesheet will be @@ -2331,13 +2323,6 @@ http://codex.buddypress.org/themes/buddypress-companion-stylesheets/ padding-bottom: 1em; text-align: right; - a:last-child { - // hide the 'x' text - line-height: 0; - margin-left: 0.7em; - text-indent: -999em; - } - a:last-child:after { content: attr(title); display: block; 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 9aa00041895510767ad9dc7c9cab4d53e5d3b08b..75c25a42759fc5ace90bde7b2482bbc22db67d74 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 @@ -1,4 +1,5 @@ /* jshint undef: false, unused:false */ +/* @version 3.0.0 */ // AJAX Functions var jq = jQuery; @@ -12,17 +13,10 @@ var activity_last_recorded = 0; jq(document).ready( function() { /**** Page Load Actions *******************************************************/ - /* Hide Forums Post Form */ - if ( '-1' === window.location.search.indexOf('new') && jq('div.forums').length ) { - jq('#new-topic-post').hide(); - } else { - jq('#new-topic-post').show(); - } - /* Activity filter and scope set */ bp_init_activity(); - var objects = [ 'members', 'groups', 'blogs', 'forums', 'group_members' ], + var objects = [ 'members', 'groups', 'blogs', 'group_members' ], $whats_new = jq('#whats-new'); /* Object filter and scope set. */ @@ -444,7 +438,7 @@ jq(document).ready( function() { jq('#buddypress li.load-more').addClass('loading'); - if ( null === jq.cookie('bp-activity-oldestpage') ) { + if ( ! jq.cookie('bp-activity-oldestpage') ) { jq.cookie('bp-activity-oldestpage', 1, { path: '/', secure: ( 'https:' === window.location.protocol ) @@ -1046,41 +1040,6 @@ jq(document).ready( function() { }); - /**** New Forum Directory Post **************************************/ - - /* Hit the "New Topic" button on the forums directory page */ - jq('a.show-hide-new').on( 'click', function() { - if ( !jq('#new-topic-post').length ) { - return false; - } - - if ( jq('#new-topic-post').is(':visible') ) { - jq('#new-topic-post').slideUp(200); - } else { - jq('#new-topic-post').slideDown(200, function() { - jq('#topic_title').focus(); - } ); - } - - return false; - }); - - /* Cancel the posting of a new forum topic */ - jq('#submit_topic_cancel').on( 'click', function() { - if ( !jq('#new-topic-post').length ) { - return false; - } - - jq('#new-topic-post').slideUp(200); - return false; - }); - - /* Clicking a forum tag */ - jq('#forum-directory-tags a').on( 'click', function() { - bp_filter_request( 'forums', 'tags', jq.cookie('bp-forums-scope'), 'div.forums', jq(this).html().replace( / /g, '-' ), 1, jq.cookie('bp-forums-extras') ); - return false; - }); - /** Invite Friends Interface ****************************************/ /* Select a user from the list of friends and add them to the invite list */ @@ -1462,7 +1421,7 @@ jq(document).ready( function() { offset = jq('#message-recipients').offset(), button = jq('#send_reply_button'); - jq(button).addClass('loading'); + jq(button).addClass('loading').prop( 'disabled', true ); jq.post( ajaxurl, { action: 'messages_send_reply', @@ -1493,7 +1452,7 @@ jq(document).ready( function() { jq('.new-message').removeClass('new-message'); }); } - jq(button).removeClass('loading'); + jq(button).removeClass('loading').prop( 'disabled', false ); }); return false; @@ -1780,12 +1739,6 @@ jq(document).ready( function() { /* Setup activity scope and filter based on the current cookie settings. */ function bp_init_activity() { - /* Reset the page */ - jq.cookie( 'bp-activity-oldestpage', 1, { - path: '/', - secure: ( 'https:' === window.location.protocol ) - } ); - if ( undefined !== jq.cookie('bp-activity-filter') && jq('#activity-filter-select').length ) { jq('#activity-filter-select select option[value="' + jq.cookie('bp-activity-filter') + '"]').prop( 'selected', true ); } 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 7d7361f81562810700d73f012de1e0009e0d1fc8..44cb4d028e9a3ae3c2f6de7fdb4accd0a21b6476 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_init_activity(){jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),void 0!==jq.cookie("bp-activity-filter")&&jq("#activity-filter-select").length&&jq('#activity-filter-select select option[value="'+jq.cookie("bp-activity-filter")+'"]').prop("selected",!0),void 0!==jq.cookie("bp-activity-scope")&&jq(".activity-type-tabs").length&&(jq(".activity-type-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#activity-"+jq.cookie("bp-activity-scope")+", .item-list-tabs li.current").addClass("selected"))}function bp_init_objects(e){jq(e).each(function(t){void 0!==jq.cookie("bp-"+e[t]+"-filter")&&jq("#"+e[t]+"-order-select select").length&&jq("#"+e[t]+'-order-select select option[value="'+jq.cookie("bp-"+e[t]+"-filter")+'"]').prop("selected",!0),void 0!==jq.cookie("bp-"+e[t]+"-scope")&&jq("div."+e[t]).length&&(jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e[t]+"-"+jq.cookie("bp-"+e[t]+"-scope")+", #object-nav li.current").addClass("selected"))})}function bp_filter_request(e,t,i,a,s,n,o,r,l){if("activity"===e)return!1;null===i&&(i="all"),jq.cookie("bp-"+e+"-scope",i,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-"+e+"-filter",t,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-"+e+"-extras",o,{path:"/",secure:"https:"===window.location.protocol}),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(),bp_ajax_request=jq.post(ajaxurl,{action:e+"_filter",cookie:bp_get_cookies(),object:e,filter:t,search_terms:s,scope:i,page:n,extras:o,template:l},function(e){if("pag-bottom"===r&&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){null!==e&&jq.cookie("bp-activity-scope",e,{path:"/",secure:"https:"===window.location.protocol}),null!==t&&jq.cookie("bp-activity-filter",t,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),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(),bp_ajax_request=jq.post(ajaxurl,{action:"activity_widget_filter",cookie:bp_get_cookies(),_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,n=document.cookie.split(";"),o={};for(e=0;e<n.length;e++)i=(t=n[e]).indexOf("="),a=jq.trim(unescape(t.slice(0,i))),s=unescape(t.slice(i+1)),0===a.indexOf("bp-")&&(o[a]=s);return encodeURIComponent(jq.param(o))}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;jq(document).ready(function(){"-1"===window.location.search.indexOf("new")&&jq("div.forums").length?jq("#new-topic-post").hide():jq("#new-topic-post").show(),bp_init_activity();var e=["members","groups","blogs","forums","group_members"],t=jq("#whats-new");if(bp_init_objects(e),t.length&&bp_get_querystring("r")){var i=t.val();jq("#whats-new-options").slideDown(),t.animate({height:"3.8em"}),jq.scrollTo(t,500,{offset:-125,easing:"swing"}),t.val("").focus().val(i)}else jq("#whats-new-options").hide();if(t.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 i=jq(this);setTimeout(function(){if(!i.find(":hover").length){if(""!==t.val())return;t.animate({height:"2.2em"}),jq("#whats-new-options").slideUp(),jq("#aw-whats-new-submit").prop("disabled",!0),jq("#whats-new-content").removeClass("active"),t.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"),n="";""!==jq("#activity-stream li.new-update .activity-content .activity-inner p").text()&&(n=i+" "),n+='<a href="'+s+'" rel="nofollow">'+BP_DTheme.view+"</a>",jq("#latest-update").slideUp(300,function(){jq("#latest-update").html(n),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 jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),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(e){var t,i,a,s,n,o,r,l,c,d,p=jq(e.target);return p.hasClass("fav")||p.hasClass("unfav")?!p.hasClass("loading")&&(t=p.hasClass("fav")?"fav":"unfav",i=p.closest(".activity-item"),a=i.attr("id").substr(9,i.attr("id").length),r=bp_get_query_var("_wpnonce",p.attr("href")),p.addClass("loading"),jq.post(ajaxurl,{action:"activity_mark_"+t,cookie:bp_get_cookies(),id:a,nonce:r},function(e){p.removeClass("loading"),p.fadeOut(200,function(){jq(this).html(e),jq(this).attr("title","fav"===t?BP_DTheme.remove_fav:BP_DTheme.mark_as_fav),jq(this).fadeIn(200)}),"fav"===t?(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)),p.removeClass("fav"),p.addClass("unfav")):(p.removeClass("unfav"),p.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")&&p.closest(".activity-item").slideUp(100)}),!1):p.hasClass("delete-activity")?(s=p.parents("div.activity ul li"),n=s.attr("id").substr(9,s.attr("id").length),o=p.attr("href"),r=o.split("_wpnonce="),l=s.prop("class").match(/date-recorded-([0-9]+)/),r=r[1],p.addClass("loading"),jq.post(ajaxurl,{action:"delete_activity",cookie:bp_get_cookies(),id:n,_wpnonce:r},function(e){e[0]+e[1]==="-1"?(s.prepend(e.substr(2,e.length)),s.children("#message").hide().fadeIn(300)):(s.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):p.hasClass("spam-activity")?(s=p.parents("div.activity ul li"),l=s.prop("class").match(/date-recorded-([0-9]+)/),p.addClass("loading"),jq.post(ajaxurl,{action:"bp_spam_activity",cookie:encodeURIComponent(document.cookie),id:s.attr("id").substr(9,s.attr("id").length),_wpnonce:p.attr("href").split("_wpnonce=")[1]},function(e){e[0]+e[1]==="-1"?(s.prepend(e.substr(2,e.length)),s.children("#message").hide().fadeIn(300)):(s.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):p.parent().hasClass("load-more")?(bp_ajax_request&&bp_ajax_request.abort(),jq("#buddypress li.load-more").addClass("loading"),null===jq.cookie("bp-activity-oldestpage")&&jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),c=1*jq.cookie("bp-activity-oldestpage")+1,d=[],jq(".activity-list li.just-posted").each(function(){d.push(jq(this).attr("id").replace("activity-",""))}),load_more_args={action:"activity_get_older_updates",cookie:bp_get_cookies(),page:c,exclude_just_posted:d.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(e){jq("#buddypress li.load-more").removeClass("loading"),jq.cookie("bp-activity-oldestpage",c,{path:"/",secure:"https:"===window.location.protocol}),jq("#buddypress ul.activity-list").append(e.contents),p.parent().hide()},"json"),!1):void(p.parent().hasClass("load-newest")&&(e.preventDefault(),p.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("-"),n=s[3],o=s[0];return t="acomment"===o?"acomment-content":"activity-inner",i=jq("#"+o+"-"+n+" ."+t+":first"),jq(a).addClass("loading"),jq.post(ajaxurl,{action:"get_single_activity_content",activity_id:n},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,n,o,r,l,c,d,p,u,h,m,j,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),(n=jq("#ac-form-"+a)).css("display","none"),n.removeClass("root"),jq(".ac-form").hide(),n.children("div").each(function(){jq(this).hasClass("error")&&jq(this).hide()}),"comment"!==i[1]?jq("#acomment-"+s).append(n):jq("#activity-"+a+" .activity-comments").append(n),n.parent().hasClass("activity-comments")&&n.addClass("root"),n.slideDown(200),jq.scrollTo(n,500,{offset:-100,easing:"swing"}),jq("#ac-form-"+i[2]+" textarea").focus(),!1):"ac_form_submit"===v.attr("name")?(n=v.parents("form"),o=n.parent(),r=n.attr("id").split("-"),l=o.hasClass("activity-comments")?r[2]:o.attr("id").split("-")[1],content=jq("#"+n.attr("id")+" textarea"),jq("#"+n.attr("id")+" div.error").hide(),v.addClass("loading").prop("disabled",!0),content.addClass("loading").prop("disabled",!0),c={action:"new_activity_comment",cookie:bp_get_cookies(),_wpnonce_new_activity_comment:jq("#_wpnonce_new_activity_comment").val(),comment_id:l,form_id:r[2],content:content.val()},(d=jq("#_bp_as_nonce_"+l).val())&&(c["_bp_as_nonce_"+l]=d),jq.post(ajaxurl,c,function(e){if(v.removeClass("loading"),content.removeClass("loading"),e[0]+e[1]==="-1")n.append(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t=n.parent();n.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)),n.children("textarea").val(""),t.parent().addClass("has-comments")}),jq("#"+n.attr("id")+" textarea").val(""),u=Number(jq("#activity-"+r[2]+" a.acomment-reply span").html())+1,jq("#activity-"+r[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")?(h=v.attr("href"),m=v.parent().parent(),n=m.parents("div.activity-comments").children("form"),j=h.split("_wpnonce="),j=j[1],l=h.split("cid="),l=l[1].split("&"),l=l[0],v.addClass("loading"),jq(".activity-comments ul .error").remove(),m.parents(".activity-comments").append(n),jq.post(ajaxurl,{action:"delete_activity_comment",cookie:bp_get_cookies(),_wpnonce:j,id:l},function(e){if(e[0]+e[1]==="-1")m.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i,a,s=jq("#"+m.attr("id")+" ul").children("li"),n=0;jq(s).each(function(){jq(this).is(":hidden")||n++}),m.fadeOut(200,function(){m.remove()}),i=(t=jq("#"+m.parents("#activity-stream > li").attr("id")+" a.acomment-reply span")).html()-(1+n),t.html(i),(a=m.parents(".activity-comments").find(".show-all a"))&&a.html(BP_DTheme.show_x_comments.replace("%d",i)),0===i&&jq(m.parents("#activity-stream > li")).removeClass("has-comments")}}),!1):v.hasClass("spam-activity-comment")?(h=v.attr("href"),m=v.parent().parent(),v.addClass("loading"),jq(".activity-comments ul div.error").remove(),m.parents(".activity-comments").append(m.parents(".activity-comments").children("form")),jq.post(ajaxurl,{action:"bp_spam_activity_comment",cookie:encodeURIComponent(document.cookie),_wpnonce:h.split("_wpnonce=")[1],id:h.split("cid=")[1].split("&")[0]},function(e){if(e[0]+e[1]==="-1")m.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i=jq("#"+m.attr("id")+" ul").children("li"),a=0;jq(i).each(function(){jq(this).is(":hidden")||a++}),m.fadeOut(200),t=m.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,n=jq(e.target);return"submit"===n.attr("type")?(t=jq(".item-list-tabs li.selected").attr("id").split("-"),i=t[0],a=null,s=n.parent().find("#"+i+"_search").val(),"groups-members-search"===e.currentTarget.className&&(i="group_members",a="groups/single/members"),bp_filter_request(i,jq.cookie("bp-"+i+"-filter"),jq.cookie("bp-"+i+"-scope"),"div."+i,s,1,jq.cookie("bp-"+i+"-extras"),null,a),!1):void 0}}),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,n,o="SPAN"===e.target.nodeName?e.target.parentNode:e.target,r=jq(o).parent();return"LI"!==r[0].nodeName||r.hasClass("last")?void 0:(t=r.attr("id").split("-"),"activity"!==(i=t[0])&&(a=t[1],s=jq("#"+i+"-order-select select").val(),n=jq("#"+i+"_search").val(),bp_filter_request(i,s,a,"div."+i,n,1,jq.cookie("bp-"+i+"-extras")),!1))}}),jq("li.filter select").change(function(){var e,t,i,a,s,n,o,r;return e=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":this),t=e.attr("id").split("-"),i=t[0],a=t[1],s=jq(this).val(),n=!1,o=null,jq(".dir-search input").length&&(n=jq(".dir-search input").val()),(r=jq(".groups-members-search input")).length&&(n=r.val(),i="members",a="groups"),"members"===i&&"groups"===a&&(i="group_members",o="groups/single/members"),"friends"===i&&(i="members"),bp_filter_request(i,s,a,"div."+i,n,1,jq.cookie("bp-"+i+"-extras"),null,o),!1}),jq("#buddypress").on("click",function(e){var t,i,a,s,n,o,r,l,c,d=jq(e.target);return!!d.hasClass("button")||(d.parent().parent().hasClass("pagination")&&!d.parent().parent().hasClass("no-ajax")?!d.hasClass("dots")&&!d.hasClass("current")&&(t=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":"li.filter select"),i=t.attr("id").split("-"),a=i[0],s=!1,n=jq(d).closest(".pagination-links").attr("id"),o=null,jq("div.dir-search input").length&&(s=!(s=jq(".dir-search input")).val()&&bp_get_querystring(s.attr("name"))?jq(".dir-search input").prop("placeholder"):s.val()),r=jq(d).hasClass("next")||jq(d).hasClass("prev")?jq(".pagination span.current").html():jq(d).html(),r=Number(r.replace(/\D/g,"")),jq(d).hasClass("next")?r++:jq(d).hasClass("prev")&&r--,(l=jq(".groups-members-search input")).length&&(s=l.val(),a="members"),"members"===a&&"groups"===i[1]&&(a="group_members",o="groups/single/members"),"admin"===a&&jq("body").hasClass("membership-requests")&&(a="requests"),c=-1!==n.indexOf("pag-bottom")?"pag-bottom":null,bp_filter_request(a,jq.cookie("bp-"+a+"-filter"),jq.cookie("bp-"+a+"-scope"),"div."+a,s,r,jq.cookie("bp-"+a+"-extras"),c,o),!1):void 0)}),jq("a.show-hide-new").on("click",function(){return!!jq("#new-topic-post").length&&(jq("#new-topic-post").is(":visible")?jq("#new-topic-post").slideUp(200):jq("#new-topic-post").slideDown(200,function(){jq("#topic_title").focus()}),!1)}),jq("#submit_topic_cancel").on("click",function(){return!!jq("#new-topic-post").length&&(jq("#new-topic-post").slideUp(200),!1)}),jq("#forum-directory-tags a").on("click",function(){return bp_filter_request("forums","tags",jq.cookie("bp-forums-scope"),"div.forums",jq(this).html().replace(/ /g,"-"),1,jq.cookie("bp-forums-extras")),!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").children(".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),n=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:n},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 a=jq("#signup_with_blog");a.prop("checked")||jq("#blog-details").toggle(),a.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);return"submit"===i.attr("type")||"button"===i.attr("type")?(t="messages",bp_filter_request(t,jq.cookie("bp-"+t+"-filter"),jq.cookie("bp-"+t+"-scope"),"div."+t,jq("#messages_search").val(),1,jq.cookie("bp-"+t+"-extras")),!1):void 0}}),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"),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")}),!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 s=0;jq(document).on("heartbeat-send.buddypress",function(e,t){s=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&&(s=timestamp[1])),(0===activity_last_recorded||Number(s)>activity_last_recorded)&&(activity_last_recorded=Number(s)),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_init_activity(){void 0!==jq.cookie("bp-activity-filter")&&jq("#activity-filter-select").length&&jq('#activity-filter-select select option[value="'+jq.cookie("bp-activity-filter")+'"]').prop("selected",!0),void 0!==jq.cookie("bp-activity-scope")&&jq(".activity-type-tabs").length&&(jq(".activity-type-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#activity-"+jq.cookie("bp-activity-scope")+", .item-list-tabs li.current").addClass("selected"))}function bp_init_objects(e){jq(e).each(function(t){void 0!==jq.cookie("bp-"+e[t]+"-filter")&&jq("#"+e[t]+"-order-select select").length&&jq("#"+e[t]+'-order-select select option[value="'+jq.cookie("bp-"+e[t]+"-filter")+'"]').prop("selected",!0),void 0!==jq.cookie("bp-"+e[t]+"-scope")&&jq("div."+e[t]).length&&(jq(".item-list-tabs li").each(function(){jq(this).removeClass("selected")}),jq("#"+e[t]+"-"+jq.cookie("bp-"+e[t]+"-scope")+", #object-nav li.current").addClass("selected"))})}function bp_filter_request(e,t,i,a,s,n,o,r,l){if("activity"===e)return!1;null===i&&(i="all"),jq.cookie("bp-"+e+"-scope",i,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-"+e+"-filter",t,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-"+e+"-extras",o,{path:"/",secure:"https:"===window.location.protocol}),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(),bp_ajax_request=jq.post(ajaxurl,{action:e+"_filter",cookie:bp_get_cookies(),object:e,filter:t,search_terms:s,scope:i,page:n,extras:o,template:l},function(e){if("pag-bottom"===r&&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){null!==e&&jq.cookie("bp-activity-scope",e,{path:"/",secure:"https:"===window.location.protocol}),null!==t&&jq.cookie("bp-activity-filter",t,{path:"/",secure:"https:"===window.location.protocol}),jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),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(),bp_ajax_request=jq.post(ajaxurl,{action:"activity_widget_filter",cookie:bp_get_cookies(),_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,n=document.cookie.split(";"),o={};for(e=0;e<n.length;e++)i=(t=n[e]).indexOf("="),a=jq.trim(unescape(t.slice(0,i))),s=unescape(t.slice(i+1)),0===a.indexOf("bp-")&&(o[a]=s);return encodeURIComponent(jq.param(o))}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;jq(document).ready(function(){bp_init_activity();var e=["members","groups","blogs","group_members"],t=jq("#whats-new");if(bp_init_objects(e),t.length&&bp_get_querystring("r")){var i=t.val();jq("#whats-new-options").slideDown(),t.animate({height:"3.8em"}),jq.scrollTo(t,500,{offset:-125,easing:"swing"}),t.val("").focus().val(i)}else jq("#whats-new-options").hide();if(t.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 i=jq(this);setTimeout(function(){if(!i.find(":hover").length){if(""!==t.val())return;t.animate({height:"2.2em"}),jq("#whats-new-options").slideUp(),jq("#aw-whats-new-submit").prop("disabled",!0),jq("#whats-new-content").removeClass("active"),t.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"),n="";""!==jq("#activity-stream li.new-update .activity-content .activity-inner p").text()&&(n=i+" "),n+='<a href="'+s+'" rel="nofollow">'+BP_DTheme.view+"</a>",jq("#latest-update").slideUp(300,function(){jq("#latest-update").html(n),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 jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),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(e){var t,i,a,s,n,o,r,l,c,d,p=jq(e.target);return p.hasClass("fav")||p.hasClass("unfav")?!p.hasClass("loading")&&(t=p.hasClass("fav")?"fav":"unfav",i=p.closest(".activity-item"),a=i.attr("id").substr(9,i.attr("id").length),r=bp_get_query_var("_wpnonce",p.attr("href")),p.addClass("loading"),jq.post(ajaxurl,{action:"activity_mark_"+t,cookie:bp_get_cookies(),id:a,nonce:r},function(e){p.removeClass("loading"),p.fadeOut(200,function(){jq(this).html(e),jq(this).attr("title","fav"===t?BP_DTheme.remove_fav:BP_DTheme.mark_as_fav),jq(this).fadeIn(200)}),"fav"===t?(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)),p.removeClass("fav"),p.addClass("unfav")):(p.removeClass("unfav"),p.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")&&p.closest(".activity-item").slideUp(100)}),!1):p.hasClass("delete-activity")?(s=p.parents("div.activity ul li"),n=s.attr("id").substr(9,s.attr("id").length),o=p.attr("href"),r=o.split("_wpnonce="),l=s.prop("class").match(/date-recorded-([0-9]+)/),r=r[1],p.addClass("loading"),jq.post(ajaxurl,{action:"delete_activity",cookie:bp_get_cookies(),id:n,_wpnonce:r},function(e){e[0]+e[1]==="-1"?(s.prepend(e.substr(2,e.length)),s.children("#message").hide().fadeIn(300)):(s.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):p.hasClass("spam-activity")?(s=p.parents("div.activity ul li"),l=s.prop("class").match(/date-recorded-([0-9]+)/),p.addClass("loading"),jq.post(ajaxurl,{action:"bp_spam_activity",cookie:encodeURIComponent(document.cookie),id:s.attr("id").substr(9,s.attr("id").length),_wpnonce:p.attr("href").split("_wpnonce=")[1]},function(e){e[0]+e[1]==="-1"?(s.prepend(e.substr(2,e.length)),s.children("#message").hide().fadeIn(300)):(s.slideUp(300),l&&activity_last_recorded===l[1]&&(newest_activities="",activity_last_recorded=0))}),!1):p.parent().hasClass("load-more")?(bp_ajax_request&&bp_ajax_request.abort(),jq("#buddypress li.load-more").addClass("loading"),jq.cookie("bp-activity-oldestpage")||jq.cookie("bp-activity-oldestpage",1,{path:"/",secure:"https:"===window.location.protocol}),c=1*jq.cookie("bp-activity-oldestpage")+1,d=[],jq(".activity-list li.just-posted").each(function(){d.push(jq(this).attr("id").replace("activity-",""))}),load_more_args={action:"activity_get_older_updates",cookie:bp_get_cookies(),page:c,exclude_just_posted:d.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(e){jq("#buddypress li.load-more").removeClass("loading"),jq.cookie("bp-activity-oldestpage",c,{path:"/",secure:"https:"===window.location.protocol}),jq("#buddypress ul.activity-list").append(e.contents),p.parent().hide()},"json"),!1):void(p.parent().hasClass("load-newest")&&(e.preventDefault(),p.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("-"),n=s[3],o=s[0];return t="acomment"===o?"acomment-content":"activity-inner",i=jq("#"+o+"-"+n+" ."+t+":first"),jq(a).addClass("loading"),jq.post(ajaxurl,{action:"get_single_activity_content",activity_id:n},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,n,o,r,l,c,d,p,u,h,m,j,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),(n=jq("#ac-form-"+a)).css("display","none"),n.removeClass("root"),jq(".ac-form").hide(),n.children("div").each(function(){jq(this).hasClass("error")&&jq(this).hide()}),"comment"!==i[1]?jq("#acomment-"+s).append(n):jq("#activity-"+a+" .activity-comments").append(n),n.parent().hasClass("activity-comments")&&n.addClass("root"),n.slideDown(200),jq.scrollTo(n,500,{offset:-100,easing:"swing"}),jq("#ac-form-"+i[2]+" textarea").focus(),!1):"ac_form_submit"===v.attr("name")?(n=v.parents("form"),o=n.parent(),r=n.attr("id").split("-"),l=o.hasClass("activity-comments")?r[2]:o.attr("id").split("-")[1],content=jq("#"+n.attr("id")+" textarea"),jq("#"+n.attr("id")+" div.error").hide(),v.addClass("loading").prop("disabled",!0),content.addClass("loading").prop("disabled",!0),c={action:"new_activity_comment",cookie:bp_get_cookies(),_wpnonce_new_activity_comment:jq("#_wpnonce_new_activity_comment").val(),comment_id:l,form_id:r[2],content:content.val()},(d=jq("#_bp_as_nonce_"+l).val())&&(c["_bp_as_nonce_"+l]=d),jq.post(ajaxurl,c,function(e){if(v.removeClass("loading"),content.removeClass("loading"),e[0]+e[1]==="-1")n.append(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t=n.parent();n.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)),n.children("textarea").val(""),t.parent().addClass("has-comments")}),jq("#"+n.attr("id")+" textarea").val(""),u=Number(jq("#activity-"+r[2]+" a.acomment-reply span").html())+1,jq("#activity-"+r[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")?(h=v.attr("href"),m=v.parent().parent(),n=m.parents("div.activity-comments").children("form"),j=h.split("_wpnonce="),j=j[1],l=h.split("cid="),l=l[1].split("&"),l=l[0],v.addClass("loading"),jq(".activity-comments ul .error").remove(),m.parents(".activity-comments").append(n),jq.post(ajaxurl,{action:"delete_activity_comment",cookie:bp_get_cookies(),_wpnonce:j,id:l},function(e){if(e[0]+e[1]==="-1")m.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i,a,s=jq("#"+m.attr("id")+" ul").children("li"),n=0;jq(s).each(function(){jq(this).is(":hidden")||n++}),m.fadeOut(200,function(){m.remove()}),i=(t=jq("#"+m.parents("#activity-stream > li").attr("id")+" a.acomment-reply span")).html()-(1+n),t.html(i),(a=m.parents(".activity-comments").find(".show-all a"))&&a.html(BP_DTheme.show_x_comments.replace("%d",i)),0===i&&jq(m.parents("#activity-stream > li")).removeClass("has-comments")}}),!1):v.hasClass("spam-activity-comment")?(h=v.attr("href"),m=v.parent().parent(),v.addClass("loading"),jq(".activity-comments ul div.error").remove(),m.parents(".activity-comments").append(m.parents(".activity-comments").children("form")),jq.post(ajaxurl,{action:"bp_spam_activity_comment",cookie:encodeURIComponent(document.cookie),_wpnonce:h.split("_wpnonce=")[1],id:h.split("cid=")[1].split("&")[0]},function(e){if(e[0]+e[1]==="-1")m.prepend(jq(e.substr(2,e.length)).hide().fadeIn(200));else{var t,i=jq("#"+m.attr("id")+" ul").children("li"),a=0;jq(i).each(function(){jq(this).is(":hidden")||a++}),m.fadeOut(200),t=m.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,n=jq(e.target);return"submit"===n.attr("type")?(t=jq(".item-list-tabs li.selected").attr("id").split("-"),i=t[0],a=null,s=n.parent().find("#"+i+"_search").val(),"groups-members-search"===e.currentTarget.className&&(i="group_members",a="groups/single/members"),bp_filter_request(i,jq.cookie("bp-"+i+"-filter"),jq.cookie("bp-"+i+"-scope"),"div."+i,s,1,jq.cookie("bp-"+i+"-extras"),null,a),!1):void 0}}),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,n,o="SPAN"===e.target.nodeName?e.target.parentNode:e.target,r=jq(o).parent();return"LI"!==r[0].nodeName||r.hasClass("last")?void 0:(t=r.attr("id").split("-"),"activity"!==(i=t[0])&&(a=t[1],s=jq("#"+i+"-order-select select").val(),n=jq("#"+i+"_search").val(),bp_filter_request(i,s,a,"div."+i,n,1,jq.cookie("bp-"+i+"-extras")),!1))}}),jq("li.filter select").change(function(){var e,t,i,a,s,n,o,r;return e=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":this),t=e.attr("id").split("-"),i=t[0],a=t[1],s=jq(this).val(),n=!1,o=null,jq(".dir-search input").length&&(n=jq(".dir-search input").val()),(r=jq(".groups-members-search input")).length&&(n=r.val(),i="members",a="groups"),"members"===i&&"groups"===a&&(i="group_members",o="groups/single/members"),"friends"===i&&(i="members"),bp_filter_request(i,s,a,"div."+i,n,1,jq.cookie("bp-"+i+"-extras"),null,o),!1}),jq("#buddypress").on("click",function(e){var t,i,a,s,n,o,r,l,c,d=jq(e.target);return!!d.hasClass("button")||(d.parent().parent().hasClass("pagination")&&!d.parent().parent().hasClass("no-ajax")?!d.hasClass("dots")&&!d.hasClass("current")&&(t=jq(jq(".item-list-tabs li.selected").length?".item-list-tabs li.selected":"li.filter select"),i=t.attr("id").split("-"),a=i[0],s=!1,n=jq(d).closest(".pagination-links").attr("id"),o=null,jq("div.dir-search input").length&&(s=!(s=jq(".dir-search input")).val()&&bp_get_querystring(s.attr("name"))?jq(".dir-search input").prop("placeholder"):s.val()),r=jq(d).hasClass("next")||jq(d).hasClass("prev")?jq(".pagination span.current").html():jq(d).html(),r=Number(r.replace(/\D/g,"")),jq(d).hasClass("next")?r++:jq(d).hasClass("prev")&&r--,(l=jq(".groups-members-search input")).length&&(s=l.val(),a="members"),"members"===a&&"groups"===i[1]&&(a="group_members",o="groups/single/members"),"admin"===a&&jq("body").hasClass("membership-requests")&&(a="requests"),c=-1!==n.indexOf("pag-bottom")?"pag-bottom":null,bp_filter_request(a,jq.cookie("bp-"+a+"-filter"),jq.cookie("bp-"+a+"-scope"),"div."+a,s,r,jq.cookie("bp-"+a+"-extras"),c,o),!1):void 0)}),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").children(".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),n=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:n},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 a=jq("#signup_with_blog");a.prop("checked")||jq("#blog-details").toggle(),a.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);return"submit"===i.attr("type")||"button"===i.attr("type")?(t="messages",bp_filter_request(t,jq.cookie("bp-"+t+"-filter"),jq.cookie("bp-"+t+"-scope"),"div."+t,jq("#messages_search").val(),1,jq.cookie("bp-"+t+"-extras")),!1):void 0}}),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 s=0;jq(document).on("heartbeat-send.buddypress",function(e,t){s=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&&(s=timestamp[1])),(0===activity_last_recorded||Number(s)>activity_last_recorded)&&(activity_last_recorded=Number(s)),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 89c9cc45b866bb69ebccbccbf8ee2460e4998de9..47c01f7e99956ec55596657794ba499c0590a688 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 @@ -1,4 +1,5 @@ /* jshint undef: false */ +/* @version 3.0.0 */ /* Password Verify */ ( function( $ ){ function check_pass_strength() { 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 new file mode 100644 index 0000000000000000000000000000000000000000..8b51ac9679e7b97dfdb34fd5cf967ee61877270d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress-functions.php @@ -0,0 +1,655 @@ +<?php +/** + * Functions of BuddyPress's "Nouveau" template pack. + * + * @since 3.0.0 + * @version 3.1.0 + * + * @buddypress-template-pack { + * Template Pack ID: nouveau + * Template Pack Name: BP Nouveau + * Version: 1.0.0 + * WP required version: 4.5.0 + * BP required version: 3.0.0 + * Description: A new template pack for BuddyPress! + * Text Domain: bp-nouveau + * Domain Path: /languages/ + * Author: The BuddyPress community + * Template Pack Supports: activity, blogs, friends, groups, messages, notifications, settings, xprofile + * }} + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** Theme Setup ***************************************************************/ + +/** + * Loads BuddyPress Nouveau Template pack functionality. + * + * See @link BP_Theme_Compat() for more. + * + * @since 3.0.0 + */ +class BP_Nouveau extends BP_Theme_Compat { + /** + * Instance of this class. + */ + protected static $instance = null; + + /** + * Return the instance of this class. + * + * @since 3.0.0 + */ + public static function get_instance() { + if ( null === self::$instance ) { + self::$instance = new self; + } + + return self::$instance; + } + + /** + * The BP Nouveau constructor. + * + * @since 3.0.0 + */ + public function __construct() { + parent::start(); + + $this->includes(); + $this->setup_support(); + } + + /** + * BP Nouveau global variables. + * + * @since 3.0.0 + */ + protected function setup_globals() { + $bp = buddypress(); + + foreach ( $bp->theme_compat->packages['nouveau'] as $property => $value ) { + $this->{$property} = $value; + } + + $this->includes_dir = trailingslashit( $this->dir ) . 'includes/'; + $this->directory_nav = new BP_Core_Nav(); + } + + /** + * Includes! + * + * @since 3.0.0 + */ + protected function includes() { + require $this->includes_dir . 'functions.php'; + require $this->includes_dir . 'classes.php'; + require $this->includes_dir . 'template-tags.php'; + + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->includes_dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX ) { + require $this->includes_dir . 'ajax.php'; + } + }, 0 ); + } + + add_action( 'bp_customize_register', function() { + if ( bp_is_root_blog() && current_user_can( 'customize' ) ) { + require $this->includes_dir . 'customizer.php'; + } + }, 0 ); + + foreach ( bp_core_get_packaged_component_ids() as $component ) { + $component_loader = trailingslashit( $this->includes_dir ) . $component . '/loader.php'; + + if ( ! bp_is_active( $component ) || ! file_exists( $component_loader ) ) { + continue; + } + + require( $component_loader ); + } + + /** + * Fires after all of the BuddyPress Nouveau includes have been loaded. Passed by reference. + * + * @since 3.0.0 + * + * @param BP_Nouveau $value Current BP_Nouveau instance. + */ + do_action_ref_array( 'bp_nouveau_includes', array( &$this ) ); + } + + /** + * Setup the Template Pack features support. + * + * @since 3.0.0 + */ + protected function setup_support() { + $width = 1300; + $top_offset = 150; + + /** This filter is documented in bp-core/bp-core-avatars.php. */ + $avatar_height = apply_filters( 'bp_core_avatar_full_height', $top_offset ); + + if ( $avatar_height > $top_offset ) { + $top_offset = $avatar_height; + } + + bp_set_theme_compat_feature( $this->id, array( + 'name' => 'cover_image', + 'settings' => array( + 'components' => array( 'xprofile', 'groups' ), + 'width' => $width, + 'height' => $top_offset + round( $avatar_height / 2 ), + 'callback' => 'bp_nouveau_theme_cover_image', + 'theme_handle' => 'bp-nouveau', + ), + ) ); + } + + /** + * Setup the Template Pack common actions. + * + * @since 3.0.0 + */ + protected function setup_actions() { + // Filter BuddyPress template hierarchy and look for page templates. + add_filter( 'bp_get_buddypress_template', array( $this, 'theme_compat_page_templates' ), 10, 1 ); + + // Add our "buddypress" div wrapper to theme compat template parts. + add_filter( 'bp_replace_the_content', array( $this, 'theme_compat_wrapper' ), 999 ); + + // We need to neutralize the BuddyPress core "bp_core_render_message()" once it has been added. + add_action( 'bp_actions', array( $this, 'neutralize_core_template_notices' ), 6 ); + + // Scripts + add_action( 'bp_enqueue_scripts', array( $this, 'register_scripts' ), 2 ); // Register theme JS + remove_action( 'bp_enqueue_scripts', 'bp_core_confirmation_js' ); + add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_styles' ) ); // Enqueue theme CSS + add_action( 'bp_enqueue_scripts', array( $this, 'enqueue_scripts' ) ); // Enqueue theme JS + add_filter( 'bp_enqueue_scripts', array( $this, 'localize_scripts' ) ); // Enqueue theme script localization + + // Body no-js class + add_filter( 'body_class', array( $this, 'add_nojs_body_class' ), 20, 1 ); + + // Ajax querystring + add_filter( 'bp_ajax_querystring', 'bp_nouveau_ajax_querystring', 10, 2 ); + + // Register directory nav items + add_action( 'bp_screens', array( $this, 'setup_directory_nav' ), 15 ); + + // Register the Default front pages Dynamic Sidebars + add_action( 'widgets_init', 'bp_nouveau_register_sidebars', 11 ); + + // Register the Primary Object nav widget + add_action( 'bp_widgets_init', array( 'BP_Nouveau_Object_Nav_Widget', 'register_widget' ) ); + + // Set the BP Uri for the Ajax customizer preview + add_filter( 'bp_uri', array( $this, 'customizer_set_uri' ), 10, 1 ); + + /** Override **********************************************************/ + + /** + * Fires after all of the BuddyPress theme compat actions have been added. + * + * @since 3.0.0 + * + * @param BP_Nouveau $this Current BP_Nouveau instance. + */ + do_action_ref_array( 'bp_theme_compat_actions', array( &$this ) ); + } + + /** + * Enqueue the template pack css files + * + * @since 3.0.0 + */ + public function enqueue_styles() { + $min = bp_core_get_minified_asset_suffix(); + $rtl = ''; + + if ( is_rtl() ) { + $rtl = '-rtl'; + } + + /** + * Filters the BuddyPress Nouveau CSS dependencies. + * + * @since 3.0.0 + * + * @param array $value Array of style dependencies. Default Dashicons. + */ + $css_dependencies = apply_filters( 'bp_nouveau_css_dependencies', array( 'dashicons' ) ); + + /** + * Filters the styles to enqueue for BuddyPress Nouveau. + * + * This filter provides a multidimensional array that will map to arguments used for wp_enqueue_style(). + * The primary index should have the stylesheet handle to use, and be assigned an array that has indexes for + * file location, dependencies, and version. + * + * @since 3.0.0 + * + * @param array $value Array of styles to enqueue. + */ + $styles = apply_filters( 'bp_nouveau_enqueue_styles', array( + 'bp-nouveau' => array( + 'file' => 'css/buddypress%1$s%2$s.css', 'dependencies' => $css_dependencies, 'version' => $this->version, + ), + ) ); + + if ( $styles ) { + + foreach ( $styles as $handle => $style ) { + if ( ! isset( $style['file'] ) ) { + continue; + } + + $file = sprintf( $style['file'], $rtl, $min ); + + // Locate the asset if needed. + if ( false === strpos( $style['file'], '://' ) ) { + $asset = bp_locate_template_asset( $file ); + + if ( empty( $asset['uri'] ) || false === strpos( $asset['uri'], '://' ) ) { + continue; + } + + $file = $asset['uri']; + } + + $data = wp_parse_args( $style, array( + 'dependencies' => array(), + 'version' => $this->version, + 'type' => 'screen', + ) ); + + wp_enqueue_style( $handle, $file, $data['dependencies'], $data['version'], $data['type'] ); + + if ( $min ) { + wp_style_add_data( $handle, 'suffix', $min ); + } + } + } + } + + /** + * Register Template Pack JavaScript files + * + * @since 3.0.0 + */ + public function register_scripts() { + $min = bp_core_get_minified_asset_suffix(); + $dependencies = bp_core_get_js_dependencies(); + $bp_confirm = array_search( 'bp-confirm', $dependencies ); + + unset( $dependencies[ $bp_confirm ] ); + + /** + * Filters the scripts to enqueue for BuddyPress Nouveau. + * + * This filter provides a multidimensional array that will map to arguments used for wp_register_script(). + * The primary index should have the script handle to use, and be assigned an array that has indexes for + * file location, dependencies, version and if it should load in the footer or not. + * + * @since 3.0.0 + * + * @param array $value Array of scripts to register. + */ + $scripts = apply_filters( 'bp_nouveau_register_scripts', array( + 'bp-nouveau' => array( + 'file' => 'js/buddypress-nouveau%s.js', + 'dependencies' => $dependencies, + 'version' => $this->version, + 'footer' => true, + ), + ) ); + + // Bail if no scripts + if ( empty( $scripts ) ) { + return; + } + + // Add The password verify if needed. + if ( bp_is_active( 'settings' ) || bp_get_signup_allowed() ) { + $scripts['bp-nouveau-password-verify'] = array( + 'file' => 'js/password-verify%s.js', + 'dependencies' => array( 'bp-nouveau', 'password-strength-meter' ), + 'footer' => true, + ); + } + + foreach ( $scripts as $handle => $script ) { + if ( ! isset( $script['file'] ) ) { + continue; + } + + $file = sprintf( $script['file'], $min ); + + // Locate the asset if needed. + if ( false === strpos( $script['file'], '://' ) ) { + $asset = bp_locate_template_asset( $file ); + + if ( empty( $asset['uri'] ) || false === strpos( $asset['uri'], '://' ) ) { + continue; + } + + $file = $asset['uri']; + } + + $data = wp_parse_args( $script, array( + 'dependencies' => array(), + 'version' => $this->version, + 'footer' => false, + ) ); + + wp_register_script( $handle, $file, $data['dependencies'], $data['version'], $data['footer'] ); + } + } + + /** + * Enqueue the required JavaScript files + * + * @since 3.0.0 + */ + public function enqueue_scripts() { + wp_enqueue_script( 'bp-nouveau' ); + + if ( bp_is_register_page() || bp_is_user_settings_general() ) { + wp_enqueue_script( 'bp-nouveau-password-verify' ); + } + + if ( is_singular() && bp_is_blog_page() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + + /** + * Fires after all of the BuddyPress Nouveau scripts have been enqueued. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_enqueue_scripts' ); + } + + /** + * Adds the no-js class to the body tag. + * + * This function ensures that the <body> element will have the 'no-js' class by default. If you're + * using JavaScript for some visual functionality in your theme, and you want to provide noscript + * support, apply those styles to body.no-js. + * + * The no-js class is removed by the JavaScript created in buddypress.js. + * + * @since 3.0.0 + * + * @param array $classes Array of classes to append to body tag. + * + * @return array $classes + */ + public function add_nojs_body_class( $classes ) { + $classes[] = 'no-js'; + return array_unique( $classes ); + } + + /** + * Load localizations for topic script. + * + * These localizations require information that may not be loaded even by init. + * + * @since 3.0.0 + */ + public function localize_scripts() { + $params = array( + 'ajaxurl' => bp_core_ajax_url(), + 'accepted' => __( 'Accepted', 'buddypress' ), + 'close' => __( 'Close', 'buddypress' ), + 'comments' => __( 'comments', 'buddypress' ), + 'leave_group_confirm' => __( 'Are you sure you want to leave this group?', 'buddypress' ), + 'confirm' => __( 'Are you sure?', 'buddypress' ), + 'my_favs' => __( 'My Favorites', 'buddypress' ), + 'rejected' => __( 'Rejected', 'buddypress' ), + 'show_all' => __( 'Show all', 'buddypress' ), + 'show_all_comments' => __( 'Show all comments for this thread', 'buddypress' ), + 'show_x_comments' => __( 'Show all %d comments', 'buddypress' ), + 'unsaved_changes' => __( 'Your profile has unsaved changes. If you leave the page, the changes will be lost.', 'buddypress' ), + 'view' => __( 'View', 'buddypress' ), + 'object_nav_parent' => '#buddypress', + ); + + // If the Object/Item nav are in the sidebar + if ( bp_nouveau_is_object_nav_in_sidebar() ) { + $params['object_nav_parent'] = '.buddypress_object_nav'; + } + + /** + * Filters the supported BuddyPress Nouveau components. + * + * @since 3.0.0 + * + * @param array $value Array of supported components. + */ + $supported_objects = (array) apply_filters( 'bp_nouveau_supported_components', bp_core_get_packaged_component_ids() ); + $object_nonces = array(); + + foreach ( $supported_objects as $key_object => $object ) { + if ( ! bp_is_active( $object ) || 'forums' === $object ) { + unset( $supported_objects[ $key_object ] ); + continue; + } + + if ( 'groups' === $object ) { + $supported_objects = array_merge( $supported_objects, array( 'group_members', 'group_requests' ) ); + } + + $object_nonces[ $object ] = wp_create_nonce( 'bp_nouveau_' . $object ); + } + + // Add components & nonces + $params['objects'] = $supported_objects; + $params['nonces'] = $object_nonces; + + // Used to transport the settings inside the Ajax requests + if ( is_customize_preview() ) { + $params['customizer_settings'] = bp_nouveau_get_temporary_setting( 'any' ); + } + + /** + * Filters core JavaScript strings for internationalization before AJAX usage. + * + * @since 3.0.0 + * + * @param array $params Array of key/value pairs for AJAX usage. + */ + wp_localize_script( 'bp-nouveau', 'BP_Nouveau', apply_filters( 'bp_core_get_js_strings', $params ) ); + } + + /** + * Filter the default theme compatibility root template hierarchy, and prepend + * a page template to the front if it's set. + * + * @see https://buddypress.trac.wordpress.org/ticket/6065 + * + * @since 3.0.0 + * + * @param array $templates Array of templates. + * + * @return array + */ + public function theme_compat_page_templates( $templates = array() ) { + /** + * Filters whether or not we are looking at a directory to determine if to return early. + * + * @since 3.0.0 + * + * @param bool $value Whether or not we are viewing a directory. + */ + if ( true === (bool) apply_filters( 'bp_nouveau_theme_compat_page_templates_directory_only', ! bp_is_directory() ) ) { + return $templates; + } + + // No page ID yet. + $page_id = 0; + + // Get the WordPress Page ID for the current view. + foreach ( (array) buddypress()->pages as $component => $bp_page ) { + + // Handles the majority of components. + if ( bp_is_current_component( $component ) ) { + $page_id = (int) $bp_page->id; + } + + // Stop if not on a user page. + if ( ! bp_is_user() && ! empty( $page_id ) ) { + break; + } + + // The Members component requires an explicit check due to overlapping components. + if ( bp_is_user() && ( 'members' === $component ) ) { + $page_id = (int) $bp_page->id; + break; + } + } + + // Bail if no directory page set. + if ( 0 === $page_id ) { + return $templates; + } + + // Check for page template. + $page_template = get_page_template_slug( $page_id ); + + // Add it to the beginning of the templates array so it takes precedence over the default hierarchy. + if ( ! empty( $page_template ) ) { + + /** + * Check for existence of template before adding it to template + * stack to avoid accidentally including an unintended file. + * + * @see https://buddypress.trac.wordpress.org/ticket/6190 + */ + if ( '' !== locate_template( $page_template ) ) { + array_unshift( $templates, $page_template ); + } + } + + return $templates; + } + + /** + * Add our special 'buddypress' div wrapper to the theme compat template part. + * + * @since 3.0.0 + * + * @see bp_buffer_template_part() + * + * @param string $retval Current template part contents. + * + * @return string + */ + public function theme_compat_wrapper( $retval ) { + if ( false !== strpos( $retval, '<div id="buddypress"' ) ) { + return $retval; + } + + // Add our 'buddypress' div wrapper. + return sprintf( + '<div id="buddypress" class="%1$s">%2$s</div><!-- #buddypress -->%3$s', + esc_attr( bp_nouveau_get_container_classes() ), + $retval, // Constructed HTML. + "\n" + ); + } + + /** + * Define the directory nav items + * + * @since 3.0.0 + */ + public function setup_directory_nav() { + $nav_items = array(); + + if ( bp_is_members_directory() ) { + $nav_items = bp_nouveau_get_members_directory_nav_items(); + } elseif ( bp_is_activity_directory() ) { + $nav_items = bp_nouveau_get_activity_directory_nav_items(); + } elseif ( bp_is_groups_directory() ) { + $nav_items = bp_nouveau_get_groups_directory_nav_items(); + } elseif ( bp_is_blogs_directory() ) { + $nav_items = bp_nouveau_get_blogs_directory_nav_items(); + } + + if ( empty( $nav_items ) ) { + return; + } + + foreach ( $nav_items as $nav_item ) { + if ( empty( $nav_item['component'] ) || $nav_item['component'] !== bp_current_component() ) { + continue; + } + + // Define the primary nav for the current component's directory + $this->directory_nav->add_nav( $nav_item ); + } + } + + /** + * We'll handle template notices from BP Nouveau. + * + * @since 3.0.0 + */ + public function neutralize_core_template_notices() { + remove_action( 'template_notices', 'bp_core_render_message' ); + } + + /** + * Set the BP Uri for the customizer in case of Ajax requests. + * + * @since 3.0.0 + * + * @param string $path the BP Uri. + * @return string the BP Uri. + */ + public function customizer_set_uri( $path ) { + if ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) { + return $path; + } + + $uri = parse_url( $path ); + + if ( false === strpos( $uri['path'], 'customize.php' ) ) { + return $path; + } else { + $vars = wp_parse_args( $uri['query'], array() ); + + if ( ! empty( $vars['url'] ) ) { + $path = str_replace( get_site_url(), '', urldecode( $vars['url'] ) ); + } + } + + return $path; + } +} + +/** + * Get a unique instance of BP Nouveau + * + * @since 3.0.0 + * + * @return BP_Nouveau the main instance of the class + */ +function bp_nouveau() { + return BP_Nouveau::get_instance(); +} + +/** + * Launch BP Nouveau! + */ +bp_nouveau(); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/activity-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/activity-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..772273dd36ad3e1ca74d68c658f750874e9ed9b2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/activity-loop.php @@ -0,0 +1,43 @@ +<?php +/** + * BuddyPress - Activity Loop + * + * @version 3.1.0 + */ + +bp_nouveau_before_loop(); ?> + +<?php if ( bp_has_activities( bp_ajax_querystring( 'activity' ) ) ) : ?> + + <?php if ( empty( $_POST['page'] ) || 1 === (int) $_POST['page'] ) : ?> + <ul class="activity-list item-list bp-list"> + <?php endif; ?> + + <?php + while ( bp_activities() ) : + bp_the_activity(); + ?> + + <?php bp_get_template_part( 'activity/entry' ); ?> + + <?php endwhile; ?> + + <?php if ( bp_activity_has_more_items() ) : ?> + + <li class="load-more"> + <a href="<?php bp_activity_load_more_link(); ?>"><?php echo esc_html_x( 'Load More', 'button', 'buddypress' ); ?></a> + </li> + + <?php endif; ?> + + <?php if ( empty( $_POST['page'] ) || 1 === (int) $_POST['page'] ) : ?> + </ul> + <?php endif; ?> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'activity-loop-none' ); ?> + +<?php endif; ?> + +<?php bp_nouveau_after_loop(); ?> 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 new file mode 100644 index 0000000000000000000000000000000000000000..b0d4b9ee11c7bfffe307e1d772bc6ded337fdf17 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment-form.php @@ -0,0 +1,34 @@ +<?php +/** + * BP Nouveau Activity Comment form template. + * + * @since 3.0.0 + * @version 3.1.0 + */ + +if ( ! bp_nouveau_current_user_can( 'comment_activity' ) || ! bp_activity_can_comment() ) { + return; +} ?> + +<form action="<?php bp_activity_comment_form_action(); ?>" method="post" id="ac-form-<?php bp_activity_id(); ?>" class="ac-form"<?php bp_activity_comment_form_nojs_display(); ?>> + + <div class="ac-reply-avatar"><?php bp_loggedin_user_avatar( array( 'type' => 'thumb' ) ); ?></div> + <div class="ac-reply-content"> + <div class="ac-textarea"> + <label for="ac-input-<?php bp_activity_id(); ?>" class="bp-screen-reader-text"> + <?php echo esc_html( _x( 'Comment', 'heading', 'buddypress' ) ); ?> + </label> + <textarea id="ac-input-<?php bp_activity_id(); ?>" class="ac-input bp-suggestions" name="ac_input_<?php bp_activity_id(); ?>"></textarea> + </div> + <input type="hidden" name="comment_form_id" value="<?php bp_activity_id(); ?>" /> + + <?php + bp_nouveau_submit_button( 'activity-new-comment' ); + printf( + ' <button type="button" class="ac-reply-cancel">%s</button>', + esc_html( _x( 'Cancel', 'button', 'buddypress' ) ) + ); + ?> + </div> + +</form> 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 new file mode 100644 index 0000000000000000000000000000000000000000..b687984bb073e14a240fbd8d87f96e5b0bd73257 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/comment.php @@ -0,0 +1,38 @@ +<?php +/** + * BuddyPress - Activity Stream Comment + * + * This template is used by bp_activity_comments() functions to show + * each activity. + * + * @version 3.0.0 + */ + + ?> + +<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"> + <a href="<?php bp_activity_comment_user_link(); ?>"> + <?php + bp_activity_avatar( + array( + 'type' => 'thumb', + 'user_id' => bp_get_activity_comment_user_id(), + ) + ); + ?> + </a> + </div> + + <div class="acomment-meta"> + + <?php bp_nouveau_activity_comment_action(); ?> + + </div> + + <div class="acomment-content"><?php bp_activity_comment_content(); ?></div> + + <?php bp_nouveau_activity_comment_buttons( array( 'container' => 'div' ) ); ?> + + <?php bp_nouveau_activity_recurse_comments( bp_activity_current_comment() ); ?> +</li> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/entry.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/entry.php new file mode 100644 index 0000000000000000000000000000000000000000..f4d15a1a5aa30d5d5d843e9ee1f1c741b2ba3fc8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/entry.php @@ -0,0 +1,67 @@ +<?php +/** + * BuddyPress - Activity Stream (Single Item) + * + * This template is used by activity-loop.php and AJAX functions to show + * each activity. + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_activity_hook( 'before', 'entry' ); ?> + +<li class="<?php bp_activity_css_class(); ?>" id="activity-<?php bp_activity_id(); ?>" data-bp-activity-id="<?php bp_activity_id(); ?>" data-bp-timestamp="<?php bp_nouveau_activity_timestamp(); ?>"> + + <div class="activity-avatar item-avatar"> + + <a href="<?php bp_activity_user_link(); ?>"> + + <?php bp_activity_avatar( array( 'type' => 'full' ) ); ?> + + </a> + + </div> + + <div class="activity-content"> + + <div class="activity-header"> + + <?php bp_activity_action(); ?> + + </div> + + <?php if ( bp_nouveau_activity_has_content() ) : ?> + + <div class="activity-inner"> + + <?php bp_nouveau_activity_content(); ?> + + </div> + + <?php endif; ?> + + <?php bp_nouveau_activity_entry_buttons(); ?> + + </div> + + <?php bp_nouveau_activity_hook( 'before', 'entry_comments' ); ?> + + <?php if ( bp_activity_get_comment_count() || ( is_user_logged_in() && ( bp_activity_can_comment() || bp_is_single_activity() ) ) ) : ?> + + <div class="activity-comments"> + + <?php bp_activity_comments(); ?> + + <?php bp_nouveau_activity_comment_form(); ?> + + </div> + + <?php endif; ?> + + <?php bp_nouveau_activity_hook( 'after', 'entry_comments' ); ?> + +</li> + +<?php +bp_nouveau_activity_hook( 'after', 'entry' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/index.php new file mode 100644 index 0000000000000000000000000000000000000000..d9c0f6a46be97529376836374a122a1c8db6ec7b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/index.php @@ -0,0 +1,41 @@ +<?php +/** + * BuddyPress Activity templates + * + * @since 2.3.0 + * @version 3.0.0 + */ +?> + + <?php bp_nouveau_before_activity_directory_content(); ?> + + <?php if ( is_user_logged_in() ) : ?> + + <?php bp_get_template_part( 'activity/post-form' ); ?> + + <?php endif; ?> + + <?php bp_nouveau_template_notices(); ?> + + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'common/nav/directory-nav' ); ?> + + <?php endif; ?> + + <div class="screen-content"> + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + + <?php bp_nouveau_activity_hook( 'before_directory', 'list' ); ?> + + <div id="activity-stream" class="activity" data-bp-list="activity"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'directory-activity-loading' ); ?></div> + + </div><!-- .activity --> + + <?php bp_nouveau_after_activity_directory_content(); ?> + + </div><!-- // .screen-content --> + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/post-form.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/post-form.php new file mode 100644 index 0000000000000000000000000000000000000000..046b41b7927e0ba1376b9dacf004070b66dcc211 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/post-form.php @@ -0,0 +1,25 @@ +<?php +/** + * BuddyPress - Activity Post Form + * + * @version 3.1.0 + */ + +?> + +<?php +/* + * Template tag to prepare the activity post form checks capability and enqueue needed scripts. + */ +bp_nouveau_before_activity_post_form(); +?> + +<h2 class="bp-screen-reader-text"><?php echo esc_html_x( 'Post Update', 'heading', 'buddypress' ); ?></h2> + +<div id="bp-nouveau-activity-form" class="activity-update-form"></div> + +<?php +/* + * Template tag to load the Javascript templates of the Post form UI. + */ +bp_nouveau_after_activity_post_form(); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/single/home.php new file mode 100644 index 0000000000000000000000000000000000000000..227e3ed8d9c19a12087ce93b40dbf5c29359d56d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/single/home.php @@ -0,0 +1,20 @@ +<?php +/** + * BuddyPress - Home + * + * @version 3.0.0 + */ + +?> + + <?php bp_nouveau_template_notices(); ?> + + <div class="activity" data-bp-single="<?php echo esc_attr( bp_current_action() ); ?>"> + + <ul id="activity-stream" class="activity-list item-list bp-list" data-bp-list="activity"> + + <li id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'single-activity-loading' ); ?></li> + + </ul> + + </div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/widget.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/widget.php new file mode 100644 index 0000000000000000000000000000000000000000..e9b754cd3f804834d29dba8bba779f358fdedbf3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/activity/widget.php @@ -0,0 +1,63 @@ +<?php +/** + * BP Nouveau Activity Widget template. + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<?php if ( bp_has_activities( bp_nouveau_activity_widget_query() ) ) : ?> + + <div class="activity-list item-list"> + + <?php + while ( bp_activities() ) : + bp_the_activity(); + ?> + + <?php if ( bp_activity_has_content() ) : ?> + + <blockquote> + + <?php bp_activity_content_body(); ?> + + <footer> + + <cite> + <a href="<?php bp_activity_user_link(); ?>" class="bp-tooltip" data-bp-tooltip="<?php echo esc_attr( bp_activity_member_display_name() ); ?>"> + <?php + bp_activity_avatar( + array( + 'type' => 'thumb', + 'width' => '40', + 'height' => '40', + ) + ); + ?> + </a> + </cite> + + <?php echo bp_insert_activity_meta(); ?> + + </footer> + + </blockquote> + + <?php else : ?> + + <p><?php bp_activity_action(); ?></p> + + <?php endif; ?> + + <?php endwhile; ?> + + </div> + +<?php else : ?> + + <div class="widget-error"> + <?php bp_nouveau_user_feedback( 'activity-loop-none' ); ?> + </div> + +<?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php new file mode 100644 index 0000000000000000000000000000000000000000..e4de328ac2f438256521dfc3b2d30ac4c8936fb1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php @@ -0,0 +1,27 @@ +<?php +/** + * BuddyPress Avatars camera template. + * + * This template is used to create the camera Backbone views. + * + * @since 2.3.0 + * @version 3.1.0 + */ + +?> +<script id="tmpl-bp-avatar-webcam" type="text/html"> + <# if ( ! data.user_media ) { #> + <div id="bp-webcam-message"> + <p class="warning"><?php esc_html_e( 'Your browser does not support this feature.', 'buddypress' ); ?></p> + </div> + <# } else { #> + <div id="avatar-to-crop"></div> + <div class="avatar-crop-management"> + <div id="avatar-crop-pane" class="avatar" style="width:{{data.w}}px; height:{{data.h}}px"></div> + <div id="avatar-crop-actions"> + <button type="button" class="button avatar-webcam-capture"><?php echo esc_html_x( 'Capture', 'button', 'buddypress' ); ?></button> + <button type="button" class="button avatar-webcam-save"><?php echo esc_html_x( 'Save', 'button', 'buddypress' ); ?></button> + </div> + </div> + <# } #> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/crop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/crop.php new file mode 100644 index 0000000000000000000000000000000000000000..405bb3b566608ccc8e756ed12a274fd54fdfc9c3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/crop.php @@ -0,0 +1,24 @@ +<?php +/** + * BuddyPress Avatars crop template. + * + * This template is used to create the crop Backbone views. + * + * @since 2.3.0 + * @version 3.1.0 + */ + +?> +<script id="tmpl-bp-avatar-item" type="text/html"> + <div id="avatar-to-crop"> + <img src="{{data.url}}"/> + </div> + <div class="avatar-crop-management"> + <div id="avatar-crop-pane" class="avatar" style="width:{{data.full_w}}px; height:{{data.full_h}}px"> + <img src="{{data.url}}" id="avatar-crop-preview"/> + </div> + <div id="avatar-crop-actions"> + <button type="button" class="button avatar-crop-submit"><?php echo esc_html_x( 'Crop Image', 'button', 'buddypress' ); ?></button> + </div> + </div> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php new file mode 100644 index 0000000000000000000000000000000000000000..2dec18517dccf5effeb57d594d848336e8a47ac5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php @@ -0,0 +1,57 @@ +<?php +/** + * BuddyPress Avatars main template. + * + * This template is used to inject the BuddyPress Backbone views + * dealing with avatars. + * + * It's also used to create the common Backbone views. + * + * @since 2.3.0 + * @version 3.1.0 + */ + +/** + * This action is for internal use, please do not use it + */ +do_action( 'bp_attachments_avatar_check_template' ); +?> +<div class="bp-avatar-nav"></div> +<div class="bp-avatar"></div> +<div class="bp-avatar-status"></div> + +<script type="text/html" id="tmpl-bp-avatar-nav"> + <a href="{{data.href}}" class="bp-avatar-nav-item" data-nav="{{data.id}}">{{data.name}}</a> +</script> + +<?php bp_attachments_get_template_part( 'uploader' ); ?> + +<?php bp_attachments_get_template_part( 'avatars/crop' ); ?> + +<?php bp_attachments_get_template_part( 'avatars/camera' ); ?> + +<script id="tmpl-bp-avatar-delete" type="text/html"> + <# if ( 'user' === data.object ) { #> + <p><?php esc_html_e( "If you'd like to delete your current profile photo, use the delete profile photo button.", 'buddypress' ); ?></p> + <button type="button" class="button edit" id="bp-delete-avatar"><?php esc_html_e( 'Delete My Profile Photo', 'buddypress' ); ?></button> + <# } else if ( 'group' === data.object ) { #> + <?php bp_nouveau_user_feedback( 'group-avatar-delete-info' ); ?> + <button type="button" class="button edit" id="bp-delete-avatar"><?php esc_html_e( 'Delete Group Profile Photo', 'buddypress' ); ?></button> + <# } else { #> + <?php + /** + * Fires inside the avatar delete frontend template markup if no other data.object condition is met. + * + * @since 3.0.0 + */ + do_action( 'bp_attachments_avatar_delete_template' ); ?> + <# } #> +</script> + +<?php + /** + * Fires after the avatar main frontend template markup. + * + * @since 3.0.0 + */ + do_action( 'bp_attachments_avatar_main_template' ); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php new file mode 100644 index 0000000000000000000000000000000000000000..a10f7360771b352422ba97e2369abc8d58006a73 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php @@ -0,0 +1,54 @@ +<?php +/** + * BuddyPress Cover Images main template. + * + * This template is used to inject the BuddyPress Backbone views + * dealing with cover images. + * + * It's also used to create the common Backbone views. + * + * @since 2.4.0 + * @version 3.1.0 + */ + +?> + +<div class="bp-cover-image"></div> +<div class="bp-cover-image-status"></div> +<div class="bp-cover-image-manage"></div> + +<?php bp_attachments_get_template_part( 'uploader' ); ?> + +<script id="tmpl-bp-cover-image-delete" type="text/html"> + <# if ( 'user' === data.object ) { #> + <p><?php esc_html_e( "If you'd like to delete your current cover image, use the delete Cover Image button.", 'buddypress' ); ?></p> + <button type="button" class="button edit" id="bp-delete-cover-image"> + <?php + echo esc_html_x( 'Delete My Cover Image', 'button', 'buddypress' ); + ?> + </button> + <# } else if ( 'group' === data.object ) { #> + <p><?php esc_html_e( "If you'd like to remove the existing group cover image but not upload a new one, please use the delete group cover image button.", 'buddypress' ); ?></p> + <button type="button" class="button edit" id="bp-delete-cover-image"> + <?php + echo esc_html_x( 'Delete Group Cover Image', 'button', 'buddypress' ); + ?> + </button> + <# } else { #> + <?php + /** + * Fires inside the cover image delete frontend template markup if no other data.object condition is met. + * + * @since 3.0.0 + */ + do_action( 'bp_attachments_cover_image_delete_template' ); ?> + <# } #> +</script> + +<?php + /** + * Fires after the cover image main frontend template markup. + * + * @since 3.0.0 + */ + do_action( 'bp_attachments_cover_image_main_template' ); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php new file mode 100644 index 0000000000000000000000000000000000000000..3fad889e33c955ba4d8d9b24ad83b42af056b63a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php @@ -0,0 +1,42 @@ +<?php +/** + * BuddyPress Uploader templates. + * + * This template is used to create the BuddyPress Uploader Backbone views. + * + * @since 2.3.0 + * @version 3.1.0 + */ + +?> +<script type="text/html" id="tmpl-upload-window"> + <?php if ( ! _device_can_upload() ) : ?> + <h3 class="upload-instructions"><?php esc_html_e( 'The web browser on your device cannot be used to upload files.', 'buddypress' ); ?></h3> + <?php elseif ( is_multisite() && ! is_upload_space_available() ) : ?> + <h3 class="upload-instructions"><?php esc_html_e( 'Upload Limit Exceeded', 'buddypress' ); ?></h3> + <?php else : ?> + <div id="{{data.container}}"> + <div id="{{data.drop_element}}"> + <div class="drag-drop-inside"> + <p class="drag-drop-info"><?php esc_html_e( 'Drop your file here', 'buddypress' ); ?></p> + + <p class="drag-drop-buttons"> + <label for="{{data.browse_button}}" class="<?php echo is_admin() ? 'screen-reader-text' : 'bp-screen-reader-text'; ?>"> + <?php esc_html_e( 'Select your file', 'buddypress' ); ?> + </label> + <input id="{{data.browse_button}}" type="button" value="<?php echo esc_attr_x( 'Select your file', 'button', 'buddypress' ); ?>" class="button" /> + </p> + </div> + </div> + </div> + <?php endif; ?> +</script> + +<script type="text/html" id="tmpl-progress-window"> + <div id="{{data.id}}"> + <div class="bp-progress"> + <div class="bp-bar"></div> + </div> + <div class="filename">{{data.filename}}</div> + </div> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/emails/single-bp-email.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/emails/single-bp-email.php new file mode 100644 index 0000000000000000000000000000000000000000..0a5ec474bcd1f2d35e12fc6c1e23adc53c6bc3c4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/emails/single-bp-email.php @@ -0,0 +1,249 @@ +<?php +/** + * BuddyPress email template. + * + * Magic numbers: + * 1.618 = golden mean. + * 1.35 = default body_text_size multipler. Gives default heading of 20px. + * + * @since 2.5.0 + * @version 3.1.0 + * + * @package BuddyPress + * @subpackage Core + */ + +/* +Based on the Cerberus "Fluid" template by Ted Goas (http://tedgoas.github.io/Cerberus/). +License for the original template: + + +The MIT License (MIT) + +Copyright (c) 2017 Ted Goas + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +$settings = bp_email_get_appearance_settings(); + +?><!DOCTYPE html> +<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"> +<head> + <meta charset="<?php echo esc_attr( get_bloginfo( 'charset' ) ); ?>"> + <meta name="viewport" content="width=device-width"> <!-- Forcing initial-scale shouldn't be necessary --> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- Use the latest (edge) version of IE rendering engine --> + <meta name="x-apple-disable-message-reformatting"> <!-- Disable auto-scale in iOS 10 Mail entirely --> + <title></title> <!-- The title tag shows in email notifications, like Android 4.4. --> + + <!-- CSS Reset --> + <style type="text/css"> + /* What it does: Remove spaces around the email design added by some email clients. */ + /* Beware: It can remove the padding / margin and add a background color to the compose a reply window. */ + html, + body { + Margin: 0 !important; + padding: 0 !important; + height: 100% !important; + width: 100% !important; + } + + /* What it does: Stops email clients resizing small text. */ + * { + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; + } + + /* What is does: Centers email on Android 4.4 */ + div[style*="margin: 16px 0"] { + margin: 0 !important; + } + + /* What it does: Stops Outlook from adding extra spacing to tables. */ + table, + td { + mso-table-lspace: 0pt !important; + mso-table-rspace: 0pt !important; + } + + /* What it does: Fixes webkit padding issue. Fix for Yahoo mail table alignment bug. Applies table-layout to the first 2 tables then removes for anything nested deeper. */ + table { + border-spacing: 0 !important; + border-collapse: collapse !important; + table-layout: fixed !important; + Margin: 0 auto !important; + } + table table table { + table-layout: auto; + } + + /* What it does: Uses a better rendering method when resizing images in IE. */ + /* & manages img max widths to ensure content body images don't exceed template width. */ + img { + -ms-interpolation-mode:bicubic; + height: auto; + max-width: 100%; + } + + /* What it does: A work-around for email clients meddling in triggered links. */ + *[x-apple-data-detectors], /* iOS */ + .x-gmail-data-detectors, /* Gmail */ + .x-gmail-data-detectors *, + .aBn { + border-bottom: 0 !important; + cursor: default !important; + color: inherit !important; + text-decoration: none !important; + font-size: inherit !important; + font-family: inherit !important; + font-weight: inherit !important; + line-height: inherit !important; + } + + /* What it does: Prevents Gmail from displaying an download button on large, non-linked images. */ + .a6S { + display: none !important; + opacity: 0.01 !important; + } + + /* If the above doesn't work, add a .g-img class to any image in question. */ + img.g-img + div { + display: none !important; + } + + /* What it does: Prevents underlining the button text in Windows 10 */ + .button-link { + text-decoration: none !important; + } + </style> + +</head> +<body class="email_bg" width="100%" bgcolor="<?php echo esc_attr( $settings['email_bg'] ); ?>" style="margin: 0; mso-line-height-rule: exactly;"> +<table cellpadding="0" cellspacing="0" border="0" height="100%" width="100%" bgcolor="<?php echo esc_attr( $settings['email_bg'] ); ?>" style="border-collapse:collapse;" class="email_bg"><tr><td valign="top"> + <center style="width: 100%; text-align: <?php echo esc_attr( $settings['direction'] ); ?>;"> + + <!-- Visually Hidden Preheader Text : BEGIN --> + <div style="display: none; font-size: 1px; line-height: 1px; max-height: 0px; max-width: 0px; opacity: 0; overflow: hidden; mso-hide: all; font-family: sans-serif;"> + {{email.preheader}} + </div> + <!-- Visually Hidden Preheader Text : END --> + + <div style="max-width: 600px; margin: auto;" class="email-container"> + <!--[if mso]> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="600" align="center"> + <tr> + <td> + <![endif]--> + + <!-- Email Header : BEGIN --> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" width="100%" style="max-width: 600px; border-top: 7px solid <?php echo esc_attr( $settings['highlight_color'] ); ?>" bgcolor="<?php echo esc_attr( $settings['header_bg'] ); ?>" class="header_bg"> + <tr> + <td style="text-align: center; padding: 15px 0; font-family: sans-serif; mso-height-rule: exactly; font-weight: bold; color: <?php echo esc_attr( $settings['header_text_color'] ); ?>; font-size: <?php echo esc_attr( $settings['header_text_size'] . 'px' ); ?>" class="header_text_color header_text_size"> + <?php + /** + * Fires before the display of the email template header. + * + * @since 2.5.0 + */ + do_action( 'bp_before_email_header' ); + + echo bp_get_option( 'blogname' ); + + /** + * Fires after the display of the email template header. + * + * @since 2.5.0 + */ + do_action( 'bp_after_email_header' ); + ?> + </td> + </tr> + </table> + <!-- Email Header : END --> + + <!-- Email Body : BEGIN --> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="center" bgcolor="<?php echo esc_attr( $settings['body_bg'] ); ?>" width="100%" style="max-width: 600px; border-radius: 5px;" class="body_bg"> + + <!-- 1 Column Text : BEGIN --> + <tr> + <td> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" width="100%"> + <tr> + <td style="padding: 20px; font-family: sans-serif; mso-height-rule: exactly; line-height: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.618 ) . 'px' ); ?>; color: <?php echo esc_attr( $settings['body_text_color'] ); ?>; font-size: <?php echo esc_attr( $settings['body_text_size'] . 'px' ); ?>" class="body_text_color body_text_size"> + <span style="font-weight: bold; font-size: <?php echo esc_attr( floor( $settings['body_text_size'] * 1.35 ) . 'px' ); ?>" class="welcome"><?php bp_email_the_salutation( $settings ); ?></span> + <hr color="<?php echo esc_attr( $settings['email_bg'] ); ?>"><br> + {{{content}}} + </td> + </tr> + </table> + </td> + </tr> + <!-- 1 Column Text : BEGIN --> + + </table> + <!-- Email Body : END --> + + <!-- Email Footer : BEGIN --> + <br> + <table role="presentation" cellspacing="0" cellpadding="0" border="0" align="<?php echo esc_attr( $settings['direction'] ); ?>" width="100%" style="max-width: 600px; border-radius: 5px;" bgcolor="<?php echo esc_attr( $settings['footer_bg'] ); ?>" class="footer_bg"> + <tr> + <td style="padding: 20px; width: 100%; font-size: <?php echo esc_attr( $settings['footer_text_size'] . 'px' ); ?>; font-family: sans-serif; mso-height-rule: exactly; line-height: <?php echo esc_attr( floor( $settings['footer_text_size'] * 1.618 ) . 'px' ); ?>; text-align: <?php echo esc_attr( $settings['direction'] ); ?>; color: <?php echo esc_attr( $settings['footer_text_color'] ); ?>;" class="footer_text_color footer_text_size"> + <?php + /** + * Fires before the display of the email template footer. + * + * @since 2.5.0 + */ + do_action( 'bp_before_email_footer' ); + ?> + + <span class="footer_text"><?php echo nl2br( stripslashes( $settings['footer_text'] ) ); ?></span> + <br><br> + <a href="{{{unsubscribe}}}" style="text-decoration: underline;"><?php echo esc_html_x( 'unsubscribe', 'email', 'buddypress' ); ?></a> + + <?php + /** + * Fires after the display of the email template footer. + * + * @since 2.5.0 + */ + do_action( 'bp_after_email_footer' ); + ?> + </td> + </tr> + </table> + <!-- Email Footer : END --> + + <!--[if mso]> + </td> + </tr> + </table> + <![endif]--> + </div> + </center> +</td></tr></table> +<?php +if ( function_exists( 'is_customize_preview' ) && is_customize_preview() ) { + wp_footer(); +} +?> +</body> +</html> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..6f09bdd1143c0882974e35d310e6a5744cdb0931 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/activity.php @@ -0,0 +1,21 @@ +<?php +/** + * @version 3.0.0 + */ + +if ( bp_activity_embed_has_activity( bp_current_action() ) ) : +?> + + <?php + while ( bp_activities() ) : + bp_the_activity(); + ?> + + <div class="bp-embed-excerpt"><?php bp_activity_embed_excerpt(); ?></div> + + <?php bp_activity_embed_media(); ?> + + <?php endwhile; ?> + +<?php +endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/footer.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/footer.php new file mode 100644 index 0000000000000000000000000000000000000000..28738f385e58a017bb5cdcdb7ef48b2fc51d691a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/footer.php @@ -0,0 +1,15 @@ +<?php +/** + * @version 3.0.0 + */ +?> + <div class="wp-embed-footer"> + <?php the_embed_site_title(); ?> + + <div class="wp-embed-meta"> + <?php + /** This action is documented in wp-includes/theme-compat/embed-content.php */ + do_action( 'embed_content_meta' ); + ?> + </div> + </div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header-activity.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header-activity.php new file mode 100644 index 0000000000000000000000000000000000000000..e568defbf63f04c34fd0317ec11cfe97102f98ba --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header-activity.php @@ -0,0 +1,33 @@ +<?php +/** + * @version 3.0.0 + */ +?> +<div id="bp-embed-header"> + <div class="bp-embed-avatar"> + <a href="<?php bp_displayed_user_link(); ?>"> + <?php bp_displayed_user_avatar( 'type=thumb&width=45&height=45' ); ?> + </a> + </div> + + <?php if ( bp_activity_embed_has_activity( bp_current_action() ) ) : ?> + + <?php + while ( bp_activities() ) : + bp_the_activity(); + ?> + <p class="bp-embed-activity-action"> + <?php bp_activity_action( array( 'no_timestamp' => true ) ); ?> + </p> + <?php endwhile; ?> + + <?php endif; ?> + + <p class="bp-embed-header-meta"> + <?php if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() ) : ?> + <span class="bp-embed-mentionname">@<?php bp_displayed_user_mentionname(); ?> · </span> + <?php endif; ?> + + <span class="bp-embed-timestamp"><a href="<?php bp_activity_thread_permalink(); ?>"><?php echo date_i18n( get_option( 'time_format' ) . ' - ' . get_option( 'date_format' ), strtotime( bp_get_activity_date_recorded() ) ); ?></a></span> + </p> +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header.php new file mode 100644 index 0000000000000000000000000000000000000000..938d2deabb09979dd79beba7bee517a2d54a1bdc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/assets/embeds/header.php @@ -0,0 +1,23 @@ +<?php +/** + * @version 3.0.0 + */ +?> + + <div id="bp-embed-header"> + <div class="bp-embed-avatar"> + <a href="<?php bp_displayed_user_link(); ?>"> + <?php bp_displayed_user_avatar( 'type=thumb&width=36&height=36' ); ?> + </a> + </div> + + <p class="wp-embed-heading"> + <a href="<?php bp_displayed_user_link(); ?>"> + <?php bp_displayed_user_fullname(); ?> + </a> + </p> + + <?php if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() ) : ?> + <p class="bp-embed-mentionname">@<?php bp_displayed_user_mentionname(); ?></p> + <?php endif; ?> + </div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/blogs-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/blogs-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..88263a31601416ee222cf2ee14b688708defb622 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/blogs-loop.php @@ -0,0 +1,71 @@ +<?php +/** + * BuddyPress - Blogs Loop + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_before_loop(); ?> + +<?php if ( bp_has_blogs( bp_ajax_querystring( 'blogs' ) ) ) : ?> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <ul id="blogs-list" class="<?php bp_nouveau_loop_classes(); ?>"> + + <?php + while ( bp_blogs() ) : + bp_the_blog(); + ?> + + <li <?php bp_blog_class( array( 'item-entry' ) ); ?>> + <div class="list-wrap"> + + <div class="item-avatar"> + <a href="<?php bp_blog_permalink(); ?>"><?php bp_blog_avatar( bp_nouveau_avatar_args() ); ?></a> + </div> + + <div class="item"> + + <div class="item-block"> + + <h2 class="list-title blogs-title"><a href="<?php bp_blog_permalink(); ?>"><?php bp_blog_name(); ?></a></h2> + + <p class="last-activity item-meta"><?php bp_blog_last_active(); ?></p> + + <?php if ( bp_nouveau_blog_has_latest_post() ) : ?> + <p class="meta last-post"> + + <?php bp_blog_latest_post(); ?> + + </p> + <?php endif; ?> + + <?php bp_nouveau_blogs_loop_buttons( array( 'container' => 'ul' ) ); ?> + + </div> + + <?php bp_nouveau_blogs_loop_item(); ?> + + </div> + + + + </div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php else : ?> + + bp_nouveau_user_feedback( 'blogs-loop-none' ); + +<?php endif; ?> + +<?php +bp_nouveau_after_loop(); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/create.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/create.php new file mode 100644 index 0000000000000000000000000000000000000000..3c3ab616d069d98dc10730a90251e9cbd87539c1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/create.php @@ -0,0 +1,30 @@ +<?php +/** + * BuddyPress - Blogs Create + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_blogs_create_hook( 'before', 'content_template' ); ?> + +<?php bp_nouveau_template_notices(); ?> + +<?php bp_nouveau_blogs_create_hook( 'before', 'content' ); ?> + +<?php if ( bp_blog_signup_enabled() ) : ?> + + <?php bp_show_blog_signup_form(); ?> + +<?php +else : + + bp_nouveau_user_feedback( 'blogs-no-signup' ); + +endif; +?> + +<?php +bp_nouveau_blogs_create_hook( 'after', 'content' ); + +bp_nouveau_blogs_create_hook( 'after', 'content_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/index.php new file mode 100644 index 0000000000000000000000000000000000000000..cf9ec795b6a861927b585b47487302b3aec7466f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/blogs/index.php @@ -0,0 +1,28 @@ +<?php +/** + * BuddyPress - Blogs Directory + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + + <?php bp_nouveau_before_blogs_directory_content(); ?> + + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'common/nav/directory-nav' ); ?> + + <?php endif; ?> + + <div class="screen-content"> + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + + <div id="blogs-dir-list" class="blogs dir-list" data-bp-list="blogs"> + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'directory-blogs-loading' ); ?></div> + </div><!-- #blogs-dir-list --> + + <?php bp_nouveau_after_blogs_directory_content(); ?> + </div><!-- // .screen-content --> + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/directory-filters.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/directory-filters.php new file mode 100644 index 0000000000000000000000000000000000000000..8a23a9ef0b8674b6e8ecde01d7d350c8b6c1c87c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/directory-filters.php @@ -0,0 +1,24 @@ +<?php +/** + * BP Nouveau Component's filters template. + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<div id="dir-filters" class="component-filters clearfix"> + <div id="<?php bp_nouveau_filter_container_id(); ?>" class="last filter"> + <label class="bp-screen-reader-text" for="<?php bp_nouveau_filter_id(); ?>"> + <span ><?php bp_nouveau_filter_label(); ?></span> + </label> + <div class="select-wrap"> + <select id="<?php bp_nouveau_filter_id(); ?>" data-bp-filter="<?php bp_nouveau_filter_component(); ?>"> + + <?php bp_nouveau_filter_options(); ?> + + </select> + <span class="select-arrow" aria-hidden="true"></span> + </div> + </div> +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/groups-screens-filters.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/groups-screens-filters.php new file mode 100644 index 0000000000000000000000000000000000000000..4acbfb2cedf0061a11966b06172227142609cd36 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/groups-screens-filters.php @@ -0,0 +1,23 @@ +<?php +/** + * BP Nouveau Groups screens filters + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> +<div id="comp-filters" class="component-filters clearfix"> + <div id="<?php bp_nouveau_filter_container_id(); ?>" class="last filter"> + <label for="<?php bp_nouveau_filter_id(); ?>" class="bp-screen-reader-text"> + <span ><?php bp_nouveau_filter_label(); ?></span> + </label> + <div class="select-wrap"> + <select id="<?php bp_nouveau_filter_id(); ?>" data-bp-filter="<?php bp_nouveau_filter_component(); ?>"> + + <?php bp_nouveau_filter_options(); ?> + + </select> + <span class="select-arrow" aria-hidden="true"></span> + </div> + </div> +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/user-screens-filters.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/user-screens-filters.php new file mode 100644 index 0000000000000000000000000000000000000000..cf2ad94bea9be9466a42c3103abd5af6bac61f34 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/filters/user-screens-filters.php @@ -0,0 +1,23 @@ +<?php +/** + * BP Nouveau User screens filters + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> +<div id="comp-filters" class="component-filters clearfix"> + <div id="<?php bp_nouveau_filter_container_id(); ?>" class="last filter"> + <label for="<?php bp_nouveau_filter_id(); ?>" class="bp-screen-reader-text"> + <span ><?php bp_nouveau_filter_label(); ?></span> + </label> + <div class="select-wrap"> + <select id="<?php bp_nouveau_filter_id(); ?>" data-bp-filter="<?php bp_nouveau_filter_component(); ?>"> + + <?php bp_nouveau_filter_options(); ?> + + </select> + <span class="select-arrow" aria-hidden="true"></span> + </div> + </div> +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/activity/form.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/activity/form.php new file mode 100644 index 0000000000000000000000000000000000000000..ef5cfbbfd5e36261f9fede96dd96837b2e23780c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/activity/form.php @@ -0,0 +1,45 @@ +<?php +/** + * Activity Post form JS Templates + * + * @version 3.1.0 + */ +?> + +<script type="text/html" id="tmpl-activity-post-form-feedback"> + <span class="bp-icon" aria-hidden="true"></span><p>{{{data.message}}}</p> +</script> + +<script type="text/html" id="tmpl-activity-post-form-avatar"> + <# if ( data.display_avatar ) { #> + <a href="{{data.user_domain}}"> + <img src="{{data.avatar_url}}" class="avatar user-{{data.user_id}}-avatar avatar-{{data.avatar_width}} photo" width="{{data.avatar_width}}" height="{{data.avatar_width}}" alt="{{data.avatar_alt}}" /> + </a> + <# } #> +</script> + +<script type="text/html" id="tmpl-activity-post-form-options"> + <?php bp_nouveau_activity_hook( '', 'post_form_options' ); ?> +</script> + +<script type="text/html" id="tmpl-activity-post-form-buttons"> + <button type="button" class="button dashicons {{data.icon}}" data-button="{{data.id}}"><span class="bp-screen-reader-text">{{data.caption}}</span></button> +</script> + +<script type="text/html" id="tmpl-activity-target-item"> + <# if ( data.selected ) { #> + <input type="hidden" value="{{data.id}}"> + <# } #> + + <# if ( data.avatar_url ) { #> + <img src="{{data.avatar_url}}" class="avatar {{data.object_type}}-{{data.id}}-avatar photo" alt="" /> + <# } #> + + <span class="bp-item-name">{{data.name}}</span> + + <# if ( data.selected ) { #> + <button type="button" class="bp-remove-item dashicons dashicons-no" data-item_id="{{data.id}}"> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Remove item', 'button', 'buddypress' ); ?></span> + </button> + <# } #> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php new file mode 100644 index 0000000000000000000000000000000000000000..10fbf8dd50bfeed5f967f261bd8bd2c803443809 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php @@ -0,0 +1,155 @@ +<?php +/** + * BP Nouveau Invites main template. + * + * This template is used to inject the BuddyPress Backbone views + * dealing with invites. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php if ( bp_is_group_create() ) : ?> + + <h3 class="bp-screen-title creation-step-name"> + <?php esc_html_e( 'Invite Members', 'buddypress' ); ?> + </h3> + +<?php else : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Invite Members', 'buddypress' ); ?> + </h2> + +<?php endif; ?> + +<div id="group-invites-container"> + + <nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Group invitations menu', 'buddypress' ); ?>"></nav> + + <div class="group-invites-column"> + <div class="subnav-filters group-subnav-filters bp-invites-filters"></div> + <div class="bp-invites-feedback"></div> + <div class="members bp-invites-content"></div> + </div> + +</div> + +<script type="text/html" id="tmpl-bp-group-invites-feedback"> + <div class="bp-feedback {{data.type}}"> + <span class="bp-icon" aria-hidden="true"></span> + <p>{{{data.message}}}</p> + </div> +</script> + +<script type="text/html" id="tmpl-bp-invites-nav"> + <a href="{{data.href}}" class="bp-invites-nav-item" data-nav="{{data.id}}">{{data.name}}</a> +</script> + +<script type="text/html" id="tmpl-bp-invites-users"> + <div class="item-avatar"> + <img src="{{data.avatar}}" class="avatar" alt=""> + </div> + + <div class="item"> + <div class="list-title member-name"> + {{data.name}} + </div> + + <# if ( undefined !== data.is_sent ) { #> + <div class="item-meta"> + + <# if ( undefined !== data.invited_by ) { #> + <ul class="group-inviters"> + <li><?php esc_html_e( 'Invited by:', 'buddypress' ); ?></li> + <# for ( i in data.invited_by ) { #> + <li><a href="{{data.invited_by[i].user_link}}" class="bp-tooltip" data-bp-tooltip="{{data.invited_by[i].user_name}}"><img src="{{data.invited_by[i].avatar}}" width="30px" class="avatar mini" alt="{{data.invited_by[i].user_name}}"></a></li> + <# } #> + </ul> + <# } #> + + <p class="status"> + <# if ( false === data.is_sent ) { #> + <?php esc_html_e( 'The invite has not been sent yet.', 'buddypress' ); ?> + <# } else { #> + <?php esc_html_e( 'The invite has been sent.', 'buddypress' ); ?> + <# } #> + </p> + + </div> + <# } #> + </div> + + <div class="action"> + <# if ( undefined === data.is_sent || ( false === data.is_sent && true === data.can_edit ) ) { #> + <button type="button" class="button invite-button group-add-remove-invite-button bp-tooltip bp-icons<# if ( data.selected ) { #> selected<# } #>" data-bp-tooltip="<# if ( data.selected ) { #><?php esc_attr_e( 'Cancel invitation', 'buddypress' ); ?><# } else { #><?php echo esc_attr_x( 'Invite', 'button', 'buddypress' ); ?><# } #>"> + <span class="icons" aria-hidden="true"></span> + <span class="bp-screen-reader-text"> + <# if ( data.selected ) { #> + <?php echo esc_html_x( 'Cancel invitation', 'button', 'buddypress' ); ?> + <# } else { #> + <?php echo esc_html_x( 'Invite', 'button', 'buddypress' ); ?> + <# } #> + </span> + </button> + <# } #> + + <# if ( undefined !== data.can_edit && true === data.can_edit ) { #> + <button type="button" class="button invite-button group-remove-invite-button bp-tooltip bp-icons" data-bp-tooltip="<?php echo esc_attr_x( 'Cancel invitation', 'button', 'buddypress' ); ?>"> + <span class=" icons" aria-hidden="true"></span> + <span class="bp-screen-reader-text"><?php echo esc_attr_x( 'Cancel invitation', 'button', 'buddypress' ); ?></span> + </button> + <# } #> + </div> + +</script> + +<script type="text/html" id="tmpl-bp-invites-selection"> + <a href="#uninvite-user-{{data.id}}" class="bp-tooltip" data-bp-tooltip="{{data.uninviteTooltip}}" aria-label="{{data.uninviteTooltip}}"> + <img src="{{data.avatar}}" class="avatar" alt=""/> + </a> +</script> + +<script type="text/html" id="tmpl-bp-invites-form"> + + <label for="send-invites-control"><?php esc_html_e( 'Optional: add a message to your invite.', 'buddypress' ); ?></label> + <textarea id="send-invites-control" class="bp-faux-placeholder-label"></textarea> + + <div class="action"> + <button type="button" id="bp-invites-reset" class="button bp-secondary-action"><?php echo esc_html_x( 'Cancel', 'button', 'buddypress' ); ?></button> + <button type="button" id="bp-invites-send" class="button bp-primary-action"><?php echo esc_html_x( 'Send', 'button', 'buddypress' ); ?></button> + </div> +</script> + +<script type="text/html" id="tmpl-bp-invites-filters"> + <div class="group-invites-search subnav-search clearfix" role="search" > + <div class="bp-search"> + <form action="" method="get" id="group_invites_search_form" class="bp-invites-search-form" data-bp-search="{{data.scope}}"> + <label for="group_invites_search" class="bp-screen-reader-text"><?php bp_nouveau_search_default_text( _x( 'Search Members', 'heading', 'buddypress' ), false ); ?></label> + <input type="search" id="group_invites_search" placeholder="<?php echo esc_attr_x( 'Search', 'search placeholder text', 'buddypress' ); ?>"/> + + <button type="submit" id="group_invites_search_submit" class="nouveau-search-submit"> + <span class="dashicons dashicons-search" aria-hidden="true"></span> + <span id="button-text" class="bp-screen-reader-text"><?php echo esc_html_x( 'Search', 'button', 'buddypress' ); ?></span> + </button> + </form> + </div> + </div> +</script> + +<script type="text/html" id="tmpl-bp-invites-paginate"> + <# if ( 1 !== data.page ) { #> + <a href="#previous-page" id="bp-invites-prev-page" class="button invite-button bp-tooltip" data-bp-tooltip="<?php echo esc_attr_x( 'Previous page', 'link', 'buddypress' ); ?>"> + <span class="dashicons dashicons-arrow-left" aria-hidden="true"></span> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Previous page', 'link', 'buddypress' ); ?></span> + </a> + <# } #> + + <# if ( data.total_page !== data.page ) { #> + <a href="#next-page" id="bp-invites-next-page" class="button invite-button bp-tooltip" data-bp-tooltip="<?php echo esc_attr_x( 'Next page', 'link', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Next page', 'link', 'buddypress' ); ?></span> + <span class="dashicons dashicons-arrow-right" aria-hidden="true"></span> + </button> + <# } #> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php new file mode 100644 index 0000000000000000000000000000000000000000..8aa71cf835259f1a3c2e080c85e3376336aca0c0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php @@ -0,0 +1,360 @@ +<?php +/** + * BP Nouveau Messages main template. + * + * This template is used to inject the BuddyPress Backbone views + * dealing with user's private messages. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> +<div class="subnav-filters filters user-subnav bp-messages-filters" id="subsubnav"></div> + +<div class="bp-messages-feedback"></div> +<div class="bp-messages-content"></div> + +<script type="text/html" id="tmpl-bp-messages-feedback"> + <div class="bp-feedback {{data.type}}"> + <span class="bp-icon" aria-hidden="true"></span> + <p>{{{data.message}}}</p> + </div> +</script> + +<?php +/** + * This view is used to inject hooks buffer + */ +?> +<script type="text/html" id="tmpl-bp-messages-hook"> + {{{data.extraContent}}} +</script> + +<script type="text/html" id="tmpl-bp-messages-form"> + <?php bp_nouveau_messages_hook( 'before', 'compose_content' ); ?> + + <label for="send-to-input"><?php esc_html_e( 'Send @Username', 'buddypress' ); ?></label> + <input type="text" name="send_to" class="send-to-input" id="send-to-input" /> + + <label for="subject"><?php _e( 'Subject', 'buddypress' ); ?></label> + <input type="text" name="subject" id="subject"/> + + <div id="bp-message-content"></div> + + <?php bp_nouveau_messages_hook( 'after', 'compose_content' ); ?> + + <div class="submit"> + <input type="button" id="bp-messages-send" class="button bp-primary-action" value="<?php echo esc_attr_x( 'Send', 'button', 'buddypress' ); ?>"/> + <input type="button" id="bp-messages-reset" class="text-button small bp-secondary-action" value="<?php echo esc_attr_x( 'Reset', 'form reset button', 'buddypress' ); ?>"/> + </div> +</script> + +<script type="text/html" id="tmpl-bp-messages-editor"> + <?php + // Add a temporary filter on editor buttons + add_filter( 'mce_buttons', 'bp_nouveau_messages_mce_buttons', 10, 1 ); + + wp_editor( + '', + 'message_content', + array( + 'textarea_name' => 'message_content', + 'teeny' => false, + 'media_buttons' => false, + 'dfw' => false, + 'tinymce' => true, + 'quicktags' => false, + 'tabindex' => '3', + 'textarea_rows' => 5, + ) + ); + + // Remove the temporary filter on editor buttons + remove_filter( 'mce_buttons', 'bp_nouveau_messages_mce_buttons', 10, 1 ); + ?> +</script> + +<script type="text/html" id="tmpl-bp-messages-paginate"> + <# if ( 1 !== data.page ) { #> + <button id="bp-messages-prev-page"class="button messages-button"> + <span class="dashicons dashicons-arrow-left"></span> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Previous page', 'link', 'buddypress' ); ?></span> + </button> + <# } #> + + <# if ( data.total_page !== data.page ) { #> + <button id="bp-messages-next-page"class="button messages-button"> + <span class="dashicons dashicons-arrow-right"></span> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Next page', 'link', 'buddypress' ); ?></span> + </button> + <# } #> +</script> + +<script type="text/html" id="tmpl-bp-messages-filters"> + <li class="user-messages-search" role="search" data-bp-search="{{data.box}}"> + <div class="bp-search messages-search"> + <form action="" method="get" id="user_messages_search_form" class="bp-messages-search-form" data-bp-search="messages"> + <label for="user_messages_search" class="bp-screen-reader-text"> + <?php _e( 'Search Messages', 'buddypress' ); ?> + </label> + <input type="search" id="user_messages_search" placeholder="<?php echo esc_attr_x( 'Search', 'search placeholder text', 'buddypress' ); ?>"/> + <button type="submit" id="user_messages_search_submit"> + <span class="dashicons dashicons-search" aria-hidden="true"></span> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Search', 'button', 'buddypress' ); ?></span> + </button> + </form> + </div> + </li> + <li class="user-messages-bulk-actions"></li> +</script> + +<script type="text/html" id="tmpl-bp-bulk-actions"> + <input type="checkbox" id="user_messages_select_all" value="1"/> + <label for="user_messages_select_all"><?php esc_html_e( 'All Messages', 'buddypress' ); ?></label> + <div class="bulk-actions-wrap bp-hide"> + <div class="bulk-actions select-wrap"> + <label for="user-messages-bulk-actions" class="bp-screen-reader-text"> + <?php esc_html_e( 'Select bulk action', 'buddypress' ); ?> + </label> + <select id="user-messages-bulk-actions"> + <# for ( i in data ) { #> + <option value="{{data[i].value}}">{{data[i].label}}</option> + <# } #> + </select> + <span class="select-arrow" aria-hidden="true"></span> + </div> + <button class="messages-button bulk-apply bp-tooltip" type="submit" data-bp-tooltip="<?php echo esc_attr_x( 'Apply', 'button', 'buddypress' ); ?>"> + <span class="dashicons dashicons-yes" aria-hidden="true"></span> + <span class="bp-screen-reader-text"><?php echo esc_html_x( 'Apply', 'button', 'buddypress' ); ?></span> + </button> + </div> +</script> + +<script type="text/html" id="tmpl-bp-messages-thread"> + <div class="thread-cb"> + <input class="message-check" type="checkbox" name="message_ids[]" id="bp-message-thread-{{data.id}}" value="{{data.id}}"> + <label for="bp-message-thread-{{data.id}}" class="bp-screen-reader-text"><?php esc_html_e( 'Select message:', 'buddypress' ); ?> {{data.subject}}</label> + </div> + + <# if ( ! data.recipientsCount ) { #> + <div class="thread-from"> + <a class="user-link" href="{{data.sender_link}}"> + <img class="avatar" src="{{data.sender_avatar}}" alt="" /> + <span class="bp-screen-reader-text"><?php esc_html_e( 'From:', 'buddypress' ); ?></span> + <span class="user-name">{{data.sender_name}}</span> + </a> + </div> + <# } else { + var recipient = _.first( data.recipients ); + #> + <div class="thread-to"> + <a class="user-link" href="{{recipient.user_link}}"> + <img class="avatar" src="{{recipient.avatar}}" alt="" /> + <span class="bp-screen-reader-text"><?php esc_html_e( 'To:', 'buddypress' ); ?></span> + <span class="user-name">{{recipient.user_name}}</span> + </a> + + <# if ( data.toOthers ) { #> + <span class="num-recipients">{{data.toOthers}}</span> + <# } #> + </div> + <# } #> + + <div class="thread-content" data-thread-id="{{data.id}}"> + <div class="thread-subject"> + <span class="thread-count">({{data.count}})</span> + <a class="subject" href="../view/{{data.id}}/">{{data.subject}}</a> + </div> + <p class="excerpt">{{data.excerpt}}</p> + </div> + <div class="thread-date"> + <time datetime="{{data.date.toISOString()}}">{{data.display_date}}</time> + </div> +</script> + +<script type="text/html" id="tmpl-bp-messages-preview"> + <# if ( undefined !== data.content ) { #> + + <h2 class="message-title preview-thread-title"><?php esc_html_e( 'Active conversation:', 'buddypress' ); ?><span class="messages-title">{{{data.subject}}}</span></h2> + <div class="preview-content"> + <header class="preview-pane-header"> + + <# if ( undefined !== data.recipients ) { #> + <dl class="thread-participants"> + <dt><?php esc_html_e( 'Participants:', 'buddypress' ); ?></dt> + <dd> + <ul class="participants-list"> + <# for ( i in data.recipients ) { #> + <li><a href="{{data.recipients[i].user_link}}" class="bp-tooltip" data-bp-tooltip="{{data.recipients[i].user_name}}"><img class="avatar mini" src="{{data.recipients[i].avatar}}" alt="{{data.recipients[i].user_name}}" /></a></li> + <# } #> + </ul> + </dd> + </dl> + <# } #> + + <div class="actions"> + + <button type="button" class="message-action-delete bp-tooltip bp-icons" data-bp-action="delete" data-bp-tooltip="<?php esc_attr_e( 'Delete conversation.', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Delete conversation.', 'buddypress' ); ?></span> + </button> + + <# if ( undefined !== data.star_link ) { #> + + <# if ( false !== data.is_starred ) { #> + <a role="button" class="message-action-unstar bp-tooltip bp-icons" href="{{data.star_link}}" data-bp-action="unstar" aria-pressed="true" data-bp-tooltip="<?php esc_attr_e( 'Unstar Conversation', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Unstar Conversation', 'buddypress' ); ?></span> + </a> + <# } else { #> + <a role="button" class="message-action-star bp-tooltip bp-icons" href="{{data.star_link}}" data-bp-action="star" aria-pressed="false" data-bp-tooltip="<?php esc_attr_e( 'Star Conversation', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Star Conversation', 'buddypress' ); ?></span> + </a> + <# } #> + + <# } #> + + <a href="../view/{{data.id}}/" class="message-action-view bp-tooltip bp-icons" data-bp-action="view" data-bp-tooltip="<?php esc_attr_e( 'View full conversation and reply.', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'View full conversation and reply.', 'buddypress' ); ?></span> + </a> + + <# if ( data.threadOptions ) { #> + <span class="bp-messages-hook thread-options"> + {{{data.threadOptions}}} + </span> + <# } #> + </div> + </header> + + <div class='preview-message'> + {{{data.content}}} + </div> + + <# if ( data.inboxListItem ) { #> + <table class="bp-messages-hook inbox-list-item"> + <tbody> + <tr>{{{data.inboxListItem}}}</tr> + </tbody> + </table> + <# } #> + </div> + <# } #> +</script> + +<script type="text/html" id="tmpl-bp-messages-single-header"> + <h2 id="message-subject" class="message-title single-thread-title">{{{data.subject}}}</h2> + <header class="single-message-thread-header"> + <# if ( undefined !== data.recipients ) { #> + <dl class="thread-participants"> + <dt><?php esc_html_e( 'Participants:', 'buddypress' ); ?></dt> + <dd> + <ul class="participants-list"> + <# for ( i in data.recipients ) { #> + <li><a href="{{data.recipients[i].user_link}}" class="bp-tooltip" data-bp-tooltip="{{data.recipients[i].user_name}}"><img class="avatar mini" src="{{data.recipients[i].avatar}}" alt="{{data.recipients[i].user_name}}" /></a></li> + <# } #> + </ul> + </dd> + </dl> + <# } #> + + <div class="actions"> + <button type="button" class="message-action-delete bp-tooltip bp-icons" data-bp-action="delete" data-bp-tooltip="<?php esc_attr_e( 'Delete conversation.', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Delete conversation.', 'buddypress' ); ?></span> + </button> + </div> + </header> +</script> + +<script type="text/html" id="tmpl-bp-messages-single-list"> + <div class="message-metadata"> + <# if ( data.beforeMeta ) { #> + <div class="bp-messages-hook before-message-meta">{{{data.beforeMeta}}}</div> + <# } #> + + <a href="{{data.sender_link}}" class="user-link"> + <img class="avatar" src="{{data.sender_avatar}}" alt="" /> + <strong>{{data.sender_name}}</strong> + </a> + + <time datetime="{{data.date.toISOString()}}" class="activity">{{data.display_date}}</time> + + <div class="actions"> + <# if ( undefined !== data.star_link ) { #> + + <button type="button" class="message-action-unstar bp-tooltip bp-icons <# if ( false === data.is_starred ) { #>bp-hide<# } #>" data-bp-star-link="{{data.star_link}}" data-bp-action="unstar" data-bp-tooltip="<?php esc_attr_e( 'Unstar Message', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Unstar Message', 'buddypress' ); ?></span> + </button> + + <button type="button" class="message-action-star bp-tooltip bp-icons <# if ( false !== data.is_starred ) { #>bp-hide<# } #>" data-bp-star-link="{{data.star_link}}" data-bp-action="star" data-bp-tooltip="<?php esc_attr_e( 'Star Message', 'buddypress' ); ?>"> + <span class="bp-screen-reader-text"><?php esc_html_e( 'Star Message', 'buddypress' ); ?></span> + </button> + + <# } #> + </div> + + <# if ( data.afterMeta ) { #> + <div class="bp-messages-hook after-message-meta">{{{data.afterMeta}}}</div> + <# } #> + </div> + + <# if ( data.beforeContent ) { #> + <div class="bp-messages-hook before-message-content">{{{data.beforeContent}}}</div> + <# } #> + + <div class="message-content">{{{data.content}}}</div> + + <# if ( data.afterContent ) { #> + <div class="bp-messages-hook after-message-content">{{{data.afterContent}}}</div> + <# } #> + +</script> + +<script type="text/html" id="tmpl-bp-messages-single"> + <?php bp_nouveau_messages_hook( 'before', 'thread_content' ); ?> + + <div id="bp-message-thread-header" class="message-thread-header"></div> + + <?php bp_nouveau_messages_hook( 'before', 'thread_list' ); ?> + + <ul id="bp-message-thread-list"></ul> + + <?php bp_nouveau_messages_hook( 'after', 'thread_list' ); ?> + + <?php bp_nouveau_messages_hook( 'before', 'thread_reply' ); ?> + + <form id="send-reply" class="standard-form send-reply"> + <div class="message-box"> + <div class="message-metadata"> + + <?php bp_nouveau_messages_hook( 'before', 'reply_meta' ); ?> + + <div class="avatar-box"> + <?php bp_loggedin_user_avatar( 'type=thumb&height=30&width=30' ); ?> + + <strong><?php esc_html_e( 'Send a Reply', 'buddypress' ); ?></strong> + </div> + + <?php bp_nouveau_messages_hook( 'after', 'reply_meta' ); ?> + + </div><!-- .message-metadata --> + + <div class="message-content"> + + <?php bp_nouveau_messages_hook( 'before', 'reply_box' ); ?> + + <label for="message_content" class="bp-screen-reader-text"><?php _e( 'Reply to Message', 'buddypress' ); ?></label> + <div id="bp-message-content"></div> + + <?php bp_nouveau_messages_hook( 'after', 'reply_box' ); ?> + + <div class="submit"> + <input type="submit" name="send" value="<?php echo esc_attr_x( 'Send Reply', 'button', 'buddypress' ); ?>" id="send_reply_button"/> + </div> + + </div><!-- .message-content --> + + </div><!-- .message-box --> + </form> + + <?php bp_nouveau_messages_hook( 'after', 'thread_reply' ); ?> + + <?php bp_nouveau_messages_hook( 'after', 'thread_content' ); ?> +</script> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/nav/directory-nav.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/nav/directory-nav.php new file mode 100644 index 0000000000000000000000000000000000000000..82587f22b763bf71ac180aaf8157793b5b97c045 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/nav/directory-nav.php @@ -0,0 +1,37 @@ +<?php +/** + * BP Nouveau Component's directory nav template. + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_directory_type_navs_class(); ?>" role="navigation" aria-label="<?php esc_attr_e( 'Directory menu', 'buddypress' ); ?>"> + + <?php if ( bp_nouveau_has_nav( array( 'object' => 'directory' ) ) ) : ?> + + <ul class="component-navigation <?php bp_nouveau_directory_list_class(); ?>"> + + <?php + while ( bp_nouveau_nav_items() ) : + bp_nouveau_nav_item(); + ?> + + <li id="<?php bp_nouveau_nav_id(); ?>" class="<?php bp_nouveau_nav_classes(); ?>" <?php bp_nouveau_nav_scope(); ?> data-bp-object="<?php bp_nouveau_directory_nav_object(); ?>"> + <a href="<?php bp_nouveau_nav_link(); ?>"> + <?php bp_nouveau_nav_link_text(); ?> + + <?php if ( bp_nouveau_nav_has_count() ) : ?> + <span class="count"><?php bp_nouveau_nav_count(); ?></span> + <?php endif; ?> + </a> + </li> + + <?php endwhile; ?> + + </ul><!-- .component-navigation --> + + <?php endif; ?> + +</nav><!-- .bp-navs --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/notices/template-notices.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/notices/template-notices.php new file mode 100644 index 0000000000000000000000000000000000000000..61912fb9b84a09de5b02120a69267936cf416fd9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/notices/template-notices.php @@ -0,0 +1,18 @@ +<?php +/** + * BP Nouveau template notices template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> +<aside class="<?php bp_nouveau_template_message_classes(); ?>"> + <span class="bp-icon" aria-hidden="true"></span> + <?php bp_nouveau_template_message(); ?> + + <?php if ( bp_nouveau_has_dismiss_button() ) : ?> + + <button type="button" class="bp-tooltip" data-bp-tooltip="<?php echo esc_attr_x( 'Close', 'button', 'buddypress' ); ?>" aria-label="<?php esc_attr_e( 'Close this notice', 'buddypress' ); ?>" data-bp-close="<?php bp_nouveau_dismiss_button_type(); ?>"><span class="dashicons dashicons-dismiss" aria-hidden="true"></span></button> + + <?php endif; ?> +</aside> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php new file mode 100644 index 0000000000000000000000000000000000000000..20441b2f3d42702578e96c2eb1a70bd0c6585f16 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php @@ -0,0 +1,31 @@ +<?php +/** + * BP Nouveau Search & filters bar + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> +<div class="subnav-filters filters no-ajax" id="subnav-filters"> + + <?php if ( 'friends' !== bp_current_component() ) : ?> + <div class="subnav-search clearfix"> + + <?php if ( 'activity' === bp_current_component() ) : ?> + <div class="feed"><a href="<?php bp_sitewide_activity_feed_link(); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'RSS Feed', 'buddypress' ); ?>"><span class="bp-screen-reader-text"><?php esc_html_e( 'RSS', 'buddypress' ); ?></span></a></div> + <?php endif; ?> + + <?php bp_nouveau_search_form(); ?> + + </div> + <?php endif; ?> + + <?php if ( bp_is_user() && ! bp_is_current_action( 'requests' ) ) : ?> + <?php bp_get_template_part( 'common/filters/user-screens-filters' ); ?> + <?php elseif ( 'groups' === bp_current_component() ) : ?> + <?php bp_get_template_part( 'common/filters/groups-screens-filters' ); ?> + <?php else : ?> + <?php bp_get_template_part( 'common/filters/directory-filters' ); ?> + <?php endif; ?> + +</div><!-- search & filters --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search/search-form.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search/search-form.php new file mode 100644 index 0000000000000000000000000000000000000000..69ba7dc70cf67984eddb89eddd4d2e6676f7725a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/common/search/search-form.php @@ -0,0 +1,23 @@ +<?php +/** + * BP Object search form + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<div class="<?php bp_nouveau_search_container_class(); ?> bp-search" data-bp-search="<?php bp_nouveau_search_object_data_attr() ;?>"> + <form action="" method="get" class="bp-dir-search-form" id="<?php bp_nouveau_search_selector_id( 'search-form' ); ?>" role="search"> + + <label for="<?php bp_nouveau_search_selector_id( 'search' ); ?>" class="bp-screen-reader-text"><?php bp_nouveau_search_default_text( '', false ); ?></label> + + <input id="<?php bp_nouveau_search_selector_id( 'search' ); ?>" name="<?php bp_nouveau_search_selector_name(); ?>" type="search" placeholder="<?php bp_nouveau_search_default_text(); ?>" /> + + <button type="submit" id="<?php bp_nouveau_search_selector_id( 'search-submit' ); ?>" class="nouveau-search-submit" name="<?php bp_nouveau_search_selector_name( 'search_submit' ); ?>"> + <span class="dashicons dashicons-search" aria-hidden="true"></span> + <span id="button-text" class="bp-screen-reader-text"><?php echo esc_html_x( 'Search', 'button', 'buddypress' ); ?></span> + </button> + + </form> +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/create.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/create.php new file mode 100644 index 0000000000000000000000000000000000000000..774bc49aa90fe0280674e6a3a47fa5218127c00d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/create.php @@ -0,0 +1,50 @@ +<?php +/** + * BuddyPress - Groups Create + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_groups_create_hook( 'before', 'page' ); ?> + + <h2 class="bp-subhead"><?php esc_html_e( 'Create A New Group', 'buddypress' ); ?></h2> + + <?php bp_nouveau_groups_create_hook( 'before', 'content_template' ); ?> + + <?php if ( 'group-invites' !== bp_get_groups_current_create_step() ) : ?> + <form action="<?php bp_group_creation_form_action(); ?>" method="post" id="create-group-form" class="standard-form" enctype="multipart/form-data"> + <?php else : ?> + <div id="create-group-form" class="standard-form"> + <?php endif; ?> + + <?php bp_nouveau_groups_create_hook( 'before' ); ?> + + <?php bp_nouveau_template_notices(); ?> + + <div class="item-body" id="group-create-body"> + + <nav class="<?php bp_nouveau_groups_create_steps_classes(); ?>" id="group-create-tabs" role="navigation" aria-label="<?php esc_attr_e( 'Group creation menu', 'buddypress' ); ?>"> + <ol class="group-create-buttons button-tabs"> + + <?php bp_group_creation_tabs(); ?> + + </ol> + </nav> + + <?php bp_nouveau_group_creation_screen(); ?> + + </div><!-- .item-body --> + + <?php bp_nouveau_groups_create_hook( 'after' ); ?> + + <?php if ( 'group-invites' !== bp_get_groups_current_create_step() ) : ?> + </form><!-- #create-group-form --> + <?php else : ?> + </div><!-- #create-group-form --> + <?php endif; ?> + + <?php bp_nouveau_groups_create_hook( 'after', 'content_template' ); ?> + +<?php +bp_nouveau_groups_create_hook( 'after', 'page' ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..d6b50e9a434e2f3740be90d607d5de56e0c564a4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/groups-loop.php @@ -0,0 +1,84 @@ +<?php +/** + * BuddyPress - Groups Loop + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_before_loop(); ?> + +<?php if ( bp_get_current_group_directory_type() ) : ?> + <p class="current-group-type"><?php bp_current_group_directory_type_message(); ?></p> +<?php endif; ?> + +<?php if ( bp_has_groups( bp_ajax_querystring( 'groups' ) ) ) : ?> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <ul id="groups-list" class="<?php bp_nouveau_loop_classes(); ?>"> + + <?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"> + + <?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-block"> + + <h2 class="list-title groups-title"><?php bp_group_link(); ?></h2> + + <?php if ( bp_nouveau_group_has_meta() ) : ?> + + <p class="item-meta group-details"><?php bp_nouveau_group_meta(); ?></p> + + <?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> + + </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_buttons(); ?> + + </div> + + + </div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'groups-loop-none' ); ?> + +<?php endif; ?> + +<?php +bp_nouveau_after_loop(); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/index.php new file mode 100644 index 0000000000000000000000000000000000000000..1558985e12d46d024e74a68fe09eda0a70c20d2e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/index.php @@ -0,0 +1,30 @@ +<?php +/** + * BP Nouveau - Groups Directory + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + + <?php bp_nouveau_before_groups_directory_content(); ?> + + <?php bp_nouveau_template_notices(); ?> + + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'common/nav/directory-nav' ); ?> + + <?php endif; ?> + + <div class="screen-content"> + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + + <div id="groups-dir-list" class="groups dir-list" data-bp-list="groups"> + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'directory-groups-loading' ); ?></div> + </div><!-- #groups-dir-list --> + + <?php bp_nouveau_after_groups_directory_content(); ?> + </div><!-- // .screen-content --> + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..716ef6f67508e2d1b5763a48793bdae1450a1ee9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/activity.php @@ -0,0 +1,39 @@ +<?php +/** + * BuddyPress - Groups Activity + * + * @since 3.0.0 + * @version 3.1.0 + */ + +?> + +<h2 class="bp-screen-title<?php echo ( ! bp_is_group_home() ) ? ' bp-screen-reader-text' : ''; ?>"> + <?php esc_html_e( 'Group Activities', 'buddypress' ); ?> +</h2> + +<?php bp_nouveau_groups_activity_post_form(); ?> + +<div class="subnav-filters filters clearfix"> + + <ul> + + <li class="feed"><a href="<?php bp_group_activity_feed_link(); ?>" class="bp-tooltip no-ajax" data-bp-tooltip="<?php esc_attr_e( 'RSS Feed', 'buddypress' ); ?>"><span class="bp-screen-reader-text"><?php esc_html_e( 'RSS', 'buddypress' ); ?></span></a></li> + + <li class="group-act-search"><?php bp_nouveau_search_form(); ?></li> + + </ul> + + <?php bp_get_template_part( 'common/filters/groups-screens-filters' ); ?> +</div><!-- // .subnav-filters --> + +<?php bp_nouveau_group_hook( 'before', 'activity_content' ); ?> + +<div id="activity-stream" class="activity single-group" data-bp-list="activity"> + + <li id="bp-activity-ajax-loader"><?php bp_nouveau_user_feedback( 'group-activity-loading' ); ?></li> + +</div><!-- .activity --> + +<?php +bp_nouveau_group_hook( 'after', 'activity_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin.php new file mode 100644 index 0000000000000000000000000000000000000000..8fba67560cfc2b1ff103d5970017685d268b5780 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin.php @@ -0,0 +1,16 @@ +<?php +/** + * BuddyPress - Groups Admin + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_get_template_part( 'groups/single/parts/admin-subnav' ); ?> + +<form action="<?php bp_group_admin_form_action(); ?>" name="group-settings-form" id="group-settings-form" class="standard-form" method="post" enctype="multipart/form-data"> + + <?php bp_nouveau_group_manage_screen(); ?> + +</form><!-- #group-settings-form --> + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/delete-group.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/delete-group.php new file mode 100644 index 0000000000000000000000000000000000000000..12ccbd00f2a72e09e3b5a7b89d09b58a4b4cb1d4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/delete-group.php @@ -0,0 +1,19 @@ +<?php +/** + * BP Nouveau Group's delete group template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<h2 class="bp-screen-title warn"> + <?php esc_html_e( 'Delete this group', 'buddypress' ); ?> +</h2> + +<?php bp_nouveau_user_feedback( 'group-delete-warning' ); ?> + +<label for="delete-group-understand" class="bp-label-text warn"> + <input type="checkbox" name="delete-group-understand" id="delete-group-understand" value="1" onclick="if(this.checked) { document.getElementById( 'delete-group-button' ).disabled = ''; } else { document.getElementById( 'delete-group-button' ).disabled = 'disabled'; }" /> + <?php esc_html_e( 'I understand the consequences of deleting this group.', 'buddypress' ); ?> +</label> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php new file mode 100644 index 0000000000000000000000000000000000000000..1878f24f26c7072a8ec3885ce2a50a0ccad17184 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php @@ -0,0 +1,36 @@ +<?php +/** + * BP Nouveau Group's edit details template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php if ( bp_is_group_create() ) : ?> + + <h3 class="bp-screen-title creation-step-name"> + <?php esc_html_e( 'Enter Group Name & Description', 'buddypress' ); ?> + </h3> + +<?php else : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Edit Group Name & Description', 'buddypress' ); ?> + </h2> + +<?php endif; ?> + +<label for="group-name"><?php esc_html_e( 'Group Name (required)', 'buddypress' ); ?></label> +<input type="text" name="group-name" id="group-name" value="<?php bp_is_group_create() ? bp_new_group_name() : bp_group_name(); ?>" aria-required="true" /> + +<label for="group-desc"><?php esc_html_e( 'Group Description (required)', 'buddypress' ); ?></label> +<textarea name="group-desc" id="group-desc" aria-required="true"><?php bp_is_group_create() ? bp_new_group_description() : bp_group_description_editable(); ?></textarea> + +<?php if ( ! bp_is_group_create() ) : ?> + <p class="bp-controls-wrap"> + <label for="group-notify-members" class="bp-label-text"> + <input type="checkbox" name="group-notify-members" id="group-notify-members" value="1" /> <?php esc_html_e( 'Notify group members of these changes via email', 'buddypress' ); ?> + </label> + </p> +<?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php new file mode 100644 index 0000000000000000000000000000000000000000..0c6aba6f097159998c4321400a7aaf783a971c34 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php @@ -0,0 +1,121 @@ +<?php +/** + * BP Nouveau Group's avatar template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php if ( bp_is_group_create() ) : ?> + + <h3 class="bp-screen-title creation-step-name"> + <?php esc_html_e( 'Upload Group Avatar', 'buddypress' ); ?> + </h3> + +<?php else : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Change Group Avatar', 'buddypress' ); ?> + </h2> + +<?php endif; ?> + +<?php if ( ! bp_is_group_create() ) : ?> + <?php if ( ! bp_get_group_has_avatar() ) : ?> + <p class="bp-help-text"><?php esc_html_e( 'Add an image to use as a profile photo for this group. The image will be shown on the main group page, and in search results.', 'buddypress' ); ?></p> + <?php else : ?> + <p class="bp-help-text"><?php esc_html_e( 'Edit or update your avatar image for this group.', 'buddypress' ); ?></p> + <?php endif; ?> +<?php endif; ?> + + +<?php if ( 'upload-image' === bp_get_avatar_admin_step() ) : ?> + <?php if ( bp_is_group_create() ) : ?> + + + <div class="left-menu"> + + <?php bp_new_group_avatar(); ?> + + </div><!-- .left-menu --> + + <div class="main-column"> + <?php endif; ?> + + <p class="bp-help-text"><?php esc_html_e( 'Upload an image to use as a profile photo for this group. The image will be shown on the main group page, and in search results.', 'buddypress' ); ?></p> + + <p> + <label for="file" class="bp-screen-reader-text"><?php esc_html_e( 'Select an image', 'buddypress' ); ?></label> + <input type="file" name="file" id="file" /> + <input type="submit" name="upload" id="upload" value="<?php esc_attr_e( 'Upload Image', 'buddypress' ); ?>" /> + <input type="hidden" name="action" id="action" value="bp_avatar_upload" /> + </p> + + <?php if ( bp_is_group_create() ) : ?> + <p class="bp-help-text"><?php esc_html_e( 'To skip the group profile photo upload process, hit the "Next Step" button.', 'buddypress' ); ?></p> + </div><!-- .main-column --> + + <?php elseif ( bp_get_group_has_avatar() ) : ?> + + <p><?php esc_html_e( "If you'd like to remove the existing group profile photo but not upload a new one, please use the delete group profile photo button.", 'buddypress' ); ?></p> + + <?php + bp_button( + array( + 'id' => 'delete_group_avatar', + 'component' => 'groups', + 'wrapper_id' => 'delete-group-avatar-button', + 'link_class' => 'edit', + 'link_href' => bp_get_group_avatar_delete_link(), + 'link_title' => __( 'Delete Group Profile Photo', 'buddypress' ), + 'link_text' => __( 'Delete Group Profile Photo', 'buddypress' ), + ) + ); + ?> + + <?php + endif; + + /** + * Load the Avatar UI templates + * + * @since 2.3.0 + */ + bp_avatar_get_templates(); + + if ( ! bp_is_group_create() ) { + wp_nonce_field( 'bp_avatar_upload' ); + } + ?> + +<?php +endif; + +if ( 'crop-image' === bp_get_avatar_admin_step() ) : +?> + + <h2><?php esc_html_e( 'Crop Group Profile Photo', 'buddypress' ); ?></h2> + + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-to-crop" class="avatar" alt="<?php esc_attr_e( 'Profile photo to crop', 'buddypress' ); ?>" /> + + <div id="avatar-crop-pane"> + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-crop-preview" class="avatar" alt="<?php esc_attr_e( 'Profile photo preview', 'buddypress' ); ?>" /> + </div> + + <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php esc_attr_e( 'Crop Image', 'buddypress' ); ?>" /> + + <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src(); ?>" /> + <input type="hidden" id="x" name="x" /> + <input type="hidden" id="y" name="y" /> + <input type="hidden" id="w" name="w" /> + <input type="hidden" id="h" name="h" /> + + <?php + if ( ! bp_is_group_create() ) { + wp_nonce_field( 'bp_avatar_cropstore' ); + } + ?> + +<?php +endif; 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 new file mode 100644 index 0000000000000000000000000000000000000000..73dd4f3a9e4e3b279f535e1e57319a917a414f24 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php @@ -0,0 +1,29 @@ +<?php +/** + * BP Nouveau Group's cover image template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php if ( bp_is_group_create() ) : ?> + + <h2 class="bp-screen-title creation-step-name"> + <?php esc_html_e( 'Upload Cover Image', 'buddypress' ); ?> + </h2> + + <div id="header-cover-image"></div> + +<?php else : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Change Cover Image', 'buddypress' ); ?> + </h2> + +<?php endif; ?> + +<p><?php esc_html_e( 'The Cover Image will be used to customize the header of your group.', 'buddypress' ); ?></p> + +<?php +bp_attachments_get_template_part( 'cover-images/index' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php new file mode 100644 index 0000000000000000000000000000000000000000..6a02a217962b01805fbab13a833dfaf649bd17f3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php @@ -0,0 +1,111 @@ +<?php +/** + * BP Nouveau Group's edit settings template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php if ( bp_is_group_create() ) : ?> + + <h3 class="bp-screen-title creation-step-name"> + <?php esc_html_e( 'Select Group Settings', 'buddypress' ); ?> + </h3> + +<?php else : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Change Group Settings', 'buddypress' ); ?> + </h2> + +<?php endif; ?> + +<div class="group-settings-selections"> + + <fieldset class="radio group-status-type"> + <legend><?php esc_html_e( 'Privacy Options', 'buddypress' ); ?></legend> + + <label for="group-status-public"> + <input type="radio" name="group-status" id="group-status-public" value="public"<?php if ( 'public' === bp_get_new_group_status() || ! bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> aria-describedby="public-group-description" /> <?php esc_html_e( 'This is a public group', 'buddypress' ); ?> + </label> + + <ul id="public-group-description"> + <li><?php esc_html_e( 'Any site member can join this group.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'Group content and activity will be visible to any site member.', 'buddypress' ); ?></li> + </ul> + + <label for="group-status-private"> + <input type="radio" name="group-status" id="group-status-private" value="private"<?php if ( 'private' === bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> aria-describedby="private-group-description" /> <?php esc_html_e( 'This is a private group', 'buddypress' ); ?> + </label> + + <ul id="private-group-description"> + <li><?php esc_html_e( 'Only people who request membership and are accepted can join the group.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'This group will be listed in the groups directory and in search results.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> + </ul> + + <label for="group-status-hidden"> + <input type="radio" name="group-status" id="group-status-hidden" value="hidden"<?php if ( 'hidden' === bp_get_new_group_status() ) { ?> checked="checked"<?php } ?> aria-describedby="hidden-group-description" /> <?php esc_html_e( 'This is a hidden group', 'buddypress' ); ?> + </label> + + <ul id="hidden-group-description"> + <li><?php esc_html_e( 'Only people who are invited can join the group.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'This group will not be listed in the groups directory or search results.', 'buddypress' ); ?></li> + <li><?php esc_html_e( 'Group content and activity will only be visible to members of the group.', 'buddypress' ); ?></li> + </ul> + + </fieldset> + +<?php +// Group type selection +$group_types = bp_groups_get_group_types( array( 'show_in_create_screen' => true ), 'objects' ); +if ( $group_types ) : ?> + + <fieldset class="group-create-types"> + <legend><?php esc_html_e( 'Group Types', 'buddypress' ); ?></legend> + + <p tabindex="0"><?php esc_html_e( 'Select the types this group should be a part of.', 'buddypress' ); ?></p> + + <?php foreach ( $group_types as $type ) : ?> + <div class="checkbox"> + <label for="<?php printf( 'group-type-%s', $type->name ); ?>"> + <input type="checkbox" name="group-types[]" id="<?php printf( 'group-type-%s', $type->name ); ?>" value="<?php echo esc_attr( $type->name ); ?>" <?php checked( bp_groups_has_group_type( bp_get_current_group_id(), $type->name ) ); ?>/> <?php echo esc_html( $type->labels['name'] ); ?> + <?php + if ( ! empty( $type->description ) ) { + printf( '– %s', '<span class="bp-group-type-desc">' . esc_html( $type->description ) . '</span>' ); + } + ?> + </label> + </div> + + <?php endforeach; ?> + + </fieldset> + +<?php endif; ?> + + <fieldset class="radio group-invitations"> + <legend><?php esc_html_e( 'Group Invitations', 'buddypress' ); ?></legend> + + <p tabindex="0"><?php esc_html_e( 'Which members of this group are allowed to invite others?', 'buddypress' ); ?></p> + + <label for="group-invite-status-members"> + <input type="radio" name="group-invite-status" id="group-invite-status-members" value="members"<?php bp_group_show_invite_status_setting( 'members' ); ?> /> + <?php esc_html_e( 'All group members', 'buddypress' ); ?> + </label> + + <label for="group-invite-status-mods"> + <input type="radio" name="group-invite-status" id="group-invite-status-mods" value="mods"<?php bp_group_show_invite_status_setting( 'mods' ); ?> /> + <?php esc_html_e( 'Group admins and mods only', 'buddypress' ); ?> + </label> + + <label for="group-invite-status-admins"> + <input type="radio" name="group-invite-status" id="group-invite-status-admins" value="admins"<?php bp_group_show_invite_status_setting( 'admins' ); ?> /> + <?php esc_html_e( 'Group admins only', 'buddypress' ); ?> + </label> + + </fieldset> + +</div><!-- // .group-settings-selections --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php new file mode 100644 index 0000000000000000000000000000000000000000..f29e351db72a51cf71726997513fec344e197f60 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php @@ -0,0 +1,123 @@ +<?php +/** + * BP Nouveau Group's manage members template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<h2 class="bp-screen-title <?php if ( bp_is_group_create() ) { echo esc_attr( 'creation-step-name' ); } ?>"> + <?php esc_html_e( 'Manage Group Members', 'buddypress' ); ?> +</h2> + + <p class="bp-help-text"><?php esc_html_e( 'Manage your group members; promote to moderators, admins or demote or ban.', 'buddypress' ); ?></p> + + <dl class="groups-manage-members-list"> + + <dt class="admin-section section-title"><?php esc_html_e( 'Administrators', 'buddypress' ); ?></dt> + + <?php if ( bp_has_members( '&include=' . bp_group_admin_ids() ) ) : ?> + <dd class="admin-listing"> + <ul id="admins-list" class="item-list single-line"> + + <?php while ( bp_members() ) : bp_the_member(); ?> + <li class="member-entry clearfix"> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => '' ) ); ?> + <p class="list-title member-name"> + <a href="<?php bp_member_permalink(); ?>"> <?php bp_member_name(); ?></a> + </p> + + <?php if ( count( bp_group_admin_ids( false, 'array' ) ) > 1 ) : ?> + + <p class="action text-links-list"> + <a class="button confirm admin-demote-to-member" href="<?php bp_group_member_demote_link( bp_get_member_user_id() ); ?>"><?php esc_html_e( 'Demote to Member', 'buddypress' ); ?></a> + </p> + + <?php endif; ?> + + </li> + <?php endwhile; ?> + + </ul> + </dd> + <?php endif; ?> + + <?php if ( bp_group_has_moderators() ) : ?> + + <dt class="moderator-section section-title"><?php esc_html_e( 'Moderators', 'buddypress' ); ?></dt> + + <dd class="moderator-listing"> + <?php if ( bp_has_members( '&include=' . bp_group_mod_ids() ) ) : ?> + <ul id="mods-list" class="item-list single-line"> + + <?php while ( bp_members() ) : bp_the_member(); ?> + <li class="members-entry clearfix"> + + <?php echo bp_core_fetch_avatar( array( 'item_id' => bp_get_member_user_id(), 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => '' ) ); ?> + <p class="list-title member-name"> + <a href="<?php bp_member_permalink(); ?>"> <?php bp_member_name(); ?></a> + </p> + + <div class="members-manage-buttons action text-links-list"> + <a href="<?php bp_group_member_promote_admin_link( array( 'user_id' => bp_get_member_user_id() ) ); ?>" class="button confirm mod-promote-to-admin"><?php esc_html_e( 'Promote to Admin', 'buddypress' ); ?></a> + <a class="button confirm mod-demote-to-member" href="<?php bp_group_member_demote_link( bp_get_member_user_id() ); ?>"><?php esc_html_e( 'Demote to Member', 'buddypress' ); ?></a> + </div> + + </li> + + <?php endwhile; ?> + + </ul> + + <?php endif; ?> + </dd> + <?php endif ?> + + + <dt class="gen-members-section section-title"><?php esc_html_e( 'Members', 'buddypress' ); ?></dt> + + <dd class="general-members-listing"> + <?php if ( bp_group_has_members( 'per_page=15&exclude_banned=0' ) ) : ?> + + <?php if ( bp_group_member_needs_pagination() ) : ?> + + <?php bp_nouveau_pagination( 'top' ) ; ?> + + <?php endif; ?> + + <ul id="members-list" class="item-list single-line"> + <?php while ( bp_group_members() ) : bp_group_the_member(); ?> + + <li class="<?php bp_group_member_css_class(); ?> members-entry clearfix"> + <?php bp_group_member_avatar_mini(); ?> + + <p class="list-title member-name"> + <?php bp_group_member_link(); ?> + <span class="banned warn"> + <?php if ( bp_get_group_member_is_banned() ) : ?> + <?php + /* translators: indicates a user is banned from a group, e.g. "Mike (banned)". */ + esc_html_e( '(banned)', 'buddypress' ); + ?> + <?php endif; ?> + </span> + </p> + + <?php bp_nouveau_groups_manage_members_buttons( array( 'container' => 'div', 'container_classes' => array( 'members-manage-buttons', 'text-links-list' ), 'parent_element' => ' ' ) ) ; ?> + + </li> + + <?php endwhile; ?> + </ul> + </dd> + +</dl> + + <?php else: + + bp_nouveau_user_feedback( 'group-manage-members-none' ); + + endif; ?> + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/membership-requests.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/membership-requests.php new file mode 100644 index 0000000000000000000000000000000000000000..f5fe26545172796f3e23d93d1ff12827a2df7daa --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/admin/membership-requests.php @@ -0,0 +1,14 @@ +<?php +/** + * BP Nouveau Group's membership requests template. + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<div class="requests" data-bp-list="group_requests"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'group-requests-loading' ); ?></div> + +</div><!-- .requests --> 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 new file mode 100644 index 0000000000000000000000000000000000000000..cd5f54c2c3b0871d75e291a9d042b755d34e3d10 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/cover-image-header.php @@ -0,0 +1,66 @@ +<?php +/** + * BuddyPress - Groups Cover Image Header. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<div id="cover-image-container"> + <div id="header-cover-image"></div> + + <div id="item-header-cover-image"> + <?php if ( ! bp_disable_group_avatar_uploads() ) : ?> + <div id="item-header-avatar"> + <a href="<?php echo esc_url( bp_get_group_permalink() ); ?>" title="<?php echo esc_attr( bp_get_group_name() ); ?>"> + + <?php bp_group_avatar(); ?> + + </a> + </div><!-- #item-header-avatar --> + <?php endif; ?> + +<?php if ( ! bp_nouveau_groups_front_page_description() ) : ?> + <div id="item-header-content"> + + <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() ); + ?> + </p> + + <?php echo bp_nouveau_group_meta()->group_type_list; ?> + <?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; ?> + + </div><!-- .item-meta --> + <?php endif; ?> + + <?php bp_nouveau_group_header_buttons(); ?> + + </div><!-- #item-header-content --> +<?php endif; ?> + + <?php bp_get_template_part( 'groups/single/parts/header-item-actions' ); ?> + + </div><!-- #item-header-cover-image --> + + +</div><!-- #cover-image-container --> + +<?php if ( ! bp_nouveau_groups_front_page_description() ) : ?> + <?php if ( ! empty( bp_nouveau_group_meta()->description ) ) : ?> + <div class="desc-wrap"> + <div class="group-description"> + <?php echo esc_html( bp_nouveau_group_meta()->description ); ?> + </div><!-- //.group_description --> + </div> + <?php endif; ?> +<?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/default-front.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/default-front.php new file mode 100644 index 0000000000000000000000000000000000000000..43871c3fa7e817a5eb74d3b0811df61c7c0153ab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/default-front.php @@ -0,0 +1,57 @@ +<?php +/** + * BP Nouveau Default group's front template. + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<div class="group-front-page"> + + <?php if ( ! is_active_sidebar( 'sidebar-buddypress-groups' ) || ! bp_nouveau_groups_do_group_boxes() ) : ?> + <?php if ( ! is_customize_preview() && bp_current_user_can( 'bp_moderate' ) ) : ?> + + <div class="bp-feedback custom-homepage-info info no-icon"> + <strong><?php esc_html_e( 'Manage the Groups default front page', 'buddypress' ); ?></strong> + + <p> + <?php + printf( + esc_html__( 'You can set your preferences for the %1$s or add %2$s to it.', 'buddypress' ), + bp_nouveau_groups_get_customizer_option_link(), + bp_nouveau_groups_get_customizer_widgets_link() + ); + ?> + </p> + + </div> + + <?php endif; ?> + <?php endif; ?> + + <?php if ( bp_nouveau_groups_front_page_description() ) : ?> + <div class="group-description"> + + <?php bp_group_description(); ?> + + </div><!-- .group-description --> + <?php endif; ?> + + <?php if ( bp_nouveau_groups_do_group_boxes() ) : ?> + <div class="bp-plugin-widgets"> + + <?php bp_custom_group_boxes(); ?> + + </div><!-- .bp-plugin-widgets --> + <?php endif; ?> + + <?php if ( is_active_sidebar( 'sidebar-buddypress-groups' ) ) : ?> + <div id="group-front-widgets" class="bp-sidebar bp-widget-area" role="complementary"> + + <?php dynamic_sidebar( 'sidebar-buddypress-groups' ); ?> + + </div><!-- .bp-sidebar.bp-widget-area --> + <?php endif; ?> + +</div> 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 new file mode 100644 index 0000000000000000000000000000000000000000..1ec05d31866a58f10f9a5187dec37efa87bb0c59 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/group-header.php @@ -0,0 +1,59 @@ +<?php +/** + * BuddyPress - Groups Header + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<?php bp_get_template_part( 'groups/single/parts/header-item-actions' ); ?> + +<?php if ( ! bp_disable_group_avatar_uploads() ) : ?> + <div id="item-header-avatar"> + <a href="<?php echo esc_url( bp_get_group_permalink() ); ?>" class="bp-tooltip" data-bp-tooltip="<?php echo esc_attr( bp_get_group_name() ); ?>"> + + <?php bp_group_avatar(); ?> + + </a> + </div><!-- #item-header-avatar --> +<?php endif; ?> + +<div id="item-header-content"> + + <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 + echo esc_html( + sprintf( + /* translators: %s = last activity timestamp (e.g. "active 1 hour ago") */ + __( 'active %s', 'buddypress' ), + bp_get_group_last_active() + ) + ); + ?> + </p> + + <?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; ?> + + </div><!-- .item-meta --> + <?php endif; ?> + + + <?php if ( ! bp_nouveau_groups_front_page_description() ) { ?> + <?php if ( bp_nouveau_group_meta()->description ) { ?> + <div class="group-description"> + <?php echo bp_nouveau_group_meta()->description; ?> + </div><!-- //.group_description --> + <?php } ?> + <?php } ?> + +</div><!-- #item-header-content --> + +<?php bp_nouveau_group_header_buttons(); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/home.php new file mode 100644 index 0000000000000000000000000000000000000000..e8c90c183da10c45b08c75aa160d3d88f29593c9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/home.php @@ -0,0 +1,43 @@ +<?php +/** + * BuddyPress - Groups Home + * + * @since 3.0.0 + * @version 3.0.0 + */ + +if ( bp_has_groups() ) : + while ( bp_groups() ) : + bp_the_group(); + ?> + + <?php bp_nouveau_group_hook( 'before', 'home_content' ); ?> + + <div id="item-header" role="complementary" data-bp-item-id="<?php bp_group_id(); ?>" data-bp-item-component="groups" class="groups-header single-headers"> + + <?php bp_nouveau_group_header_template_part(); ?> + + </div><!-- #item-header --> + + <div class="bp-wrap"> + + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'groups/single/parts/item-nav' ); ?> + + <?php endif; ?> + + <div id="item-body" class="item-body"> + + <?php bp_nouveau_group_template_part(); ?> + + </div><!-- #item-body --> + + </div><!-- // .bp-wrap --> + + <?php bp_nouveau_group_hook( 'after', 'home_content' ); ?> + + <?php endwhile; ?> + +<?php +endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..a1a9ec6020beaba5f78f7fee02d3bf68f1a3516a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members-loop.php @@ -0,0 +1,70 @@ +<?php +/** + * Group Members Loop template + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<?php if ( bp_group_has_members( bp_ajax_querystring( 'group_members' ) ) ) : ?> + + <?php bp_nouveau_group_hook( 'before', 'members_content' ); ?> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <?php bp_nouveau_group_hook( 'before', 'members_list' ); ?> + + <ul id="members-list" class="<?php bp_nouveau_loop_classes(); ?>"> + + <?php + while ( bp_group_members() ) : + bp_group_the_member(); + ?> + + <li <?php bp_member_class( array( 'item-entry' ) ); ?> data-bp-item-id="<?php echo esc_attr( bp_get_group_member_id() ); ?>" data-bp-item-component="members"> + + <div class="list-wrap"> + + <div class="item-avatar"> + <a href="<?php bp_group_member_domain(); ?>"> + <?php bp_group_member_avatar(); ?> + </a> + </div> + + <div class="item"> + + <div class="item-block"> + <h3 class="list-title member-name"><?php bp_group_member_link(); ?></h3> + + <p class="joined item-meta"> + <?php bp_group_member_joined_since(); ?> + </p> + + <?php bp_nouveau_group_hook( '', 'members_list_item' ); ?> + + <?php bp_nouveau_members_loop_buttons(); ?> + </div> + + </div> + + </div><!-- // .list-wrap --> + + </li> + + <?php endwhile; ?> + + </ul> + + <?php bp_nouveau_group_hook( 'after', 'members_list' ); ?> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + + <?php bp_nouveau_group_hook( 'after', 'members_content' ); ?> + +<?php else : ?> + + bp_nouveau_user_feedback( 'group-members-none' ); + +<?php +endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members.php new file mode 100644 index 0000000000000000000000000000000000000000..3398d24572c01731f7ce4650f585a643b75968ce --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/members.php @@ -0,0 +1,28 @@ +<?php +/** + * BuddyPress - Groups Members + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + + +<div class="subnav-filters filters clearfix no-subnav"> + + <?php bp_nouveau_search_form(); ?> + + <?php bp_get_template_part( 'common/filters/groups-screens-filters' ); ?> + +</div> + +<h2 class="bp-screen-title"> + <?php esc_html_e( 'Membership List', 'buddypress' ); ?> +</h2> + + +<div id="members-group-list" class="group_members dir-list" data-bp-list="group_members"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'group-members-loading' ); ?></div> + +</div><!-- .group_members.dir-list --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/admin-subnav.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/admin-subnav.php new file mode 100644 index 0000000000000000000000000000000000000000..4676398da5eaccda1c75b86397275721fb4eae8a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/admin-subnav.php @@ -0,0 +1,37 @@ +<?php +/** + * BuddyPress Single Groups Admin Navigation + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Group administration menu', 'buddypress' ); ?>"> + + <?php if ( bp_nouveau_has_nav( array( 'object' => 'group_manage' ) ) ) : ?> + + <ul class="subnav"> + + <?php + while ( bp_nouveau_nav_items() ) : + bp_nouveau_nav_item(); + ?> + + <li id="<?php bp_nouveau_nav_id(); ?>" class="<?php bp_nouveau_nav_classes(); ?>"> + <a href="<?php bp_nouveau_nav_link(); ?>" id="<?php bp_nouveau_nav_link_id(); ?>"> + <?php bp_nouveau_nav_link_text(); ?> + + <?php if ( bp_nouveau_nav_has_count() ) : ?> + <span class="count"><?php bp_nouveau_nav_count(); ?></span> + <?php endif; ?> + </a> + </li> + + <?php endwhile; ?> + + </ul> + + <?php endif; ?> + +</nav><!-- #isubnav --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php new file mode 100644 index 0000000000000000000000000000000000000000..79f11038492387f334a871e66a2ee85af92097f2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php @@ -0,0 +1,41 @@ +<?php +/** + * BuddyPress - Groups Header item-actions. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> +<div id="item-actions" class="group-item-actions"> + + <?php if ( bp_current_user_can( 'groups_access_group' ) ) : ?> + + <h2 class="bp-screen-reader-text"><?php esc_html_e( 'Group Leadership', 'buddypress' ); ?></h2> + + <dl class="moderators-lists"> + <dt class="moderators-title"><?php esc_html_e( 'Group Administrators', 'buddypress' ); ?></dt> + <dd class="user-list admins"><?php bp_group_list_admins(); ?> + <?php bp_nouveau_group_hook( 'after', 'menu_admins' ); ?> + </dd> + </dl> + + <?php + if ( bp_group_has_moderators() ) : + bp_nouveau_group_hook( 'before', 'menu_mods' ); + ?> + + <dl class="moderators-lists"> + <dt class="moderators-title"><?php esc_html_e( 'Group Mods', 'buddypress' ); ?></dt> + <dd class="user-list moderators"> + <?php + bp_group_list_mods(); + bp_nouveau_group_hook( 'after', 'menu_mods' ); + ?> + </dd> + </dl> + + <?php endif; ?> + + <?php endif; ?> + +</div><!-- .item-actions --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/item-nav.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/item-nav.php new file mode 100644 index 0000000000000000000000000000000000000000..bcd03ea1820ac4ded8c2879c0a7b286c16fab0ce --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/parts/item-nav.php @@ -0,0 +1,39 @@ +<?php +/** + * BuddyPress Single Groups item Navigation + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_nav_classes(); ?>" id="object-nav" role="navigation" aria-label="<?php esc_attr_e( 'Group menu', 'buddypress' ); ?>"> + + <?php if ( bp_nouveau_has_nav( array( 'object' => 'groups' ) ) ) : ?> + + <ul> + + <?php + while ( bp_nouveau_nav_items() ) : + bp_nouveau_nav_item(); + ?> + + <li id="<?php bp_nouveau_nav_id(); ?>" class="<?php bp_nouveau_nav_classes(); ?>"> + <a href="<?php bp_nouveau_nav_link(); ?>" id="<?php bp_nouveau_nav_link_id(); ?>"> + <?php bp_nouveau_nav_link_text(); ?> + + <?php if ( bp_nouveau_nav_has_count() ) : ?> + <span class="count"><?php bp_nouveau_nav_count(); ?></span> + <?php endif; ?> + </a> + </li> + + <?php endwhile; ?> + + <?php bp_nouveau_group_hook( '', 'options_nav' ); ?> + + </ul> + + <?php endif; ?> + +</nav> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/plugins.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/plugins.php new file mode 100644 index 0000000000000000000000000000000000000000..38951f4eb63614a79f003f5cd23dabb6adf3279a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/plugins.php @@ -0,0 +1,13 @@ +<?php +/** + * BuddyPress - Groups plugins + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_group_hook( 'before', 'plugin_template' ); + +bp_nouveau_plugin_hook( 'content' ); + +bp_nouveau_group_hook( 'after', 'plugin_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/request-membership.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/request-membership.php new file mode 100644 index 0000000000000000000000000000000000000000..e92cba5b4661a2512c25dfb7a94bb3517dacf427 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/request-membership.php @@ -0,0 +1,37 @@ +<?php +/** + * BuddyPress - Groups Request Membership + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_group_hook( 'before', 'request_membership_content' ); ?> + +<?php if ( ! bp_group_has_requested_membership() ) : ?> + <p> + <?php + echo esc_html( + sprintf( + /* translators: %s = group name */ + __( 'You are requesting to become a member of the group "%s".', 'buddypress' ), + bp_get_group_name() + ) + ); + ?> + </p> + + <form action="<?php bp_group_form_action( 'request-membership' ); ?>" method="post" name="request-membership-form" id="request-membership-form" class="standard-form"> + <label for="group-request-membership-comments"><?php esc_html( 'Comments (optional)', 'buddypress' ); ?></label> + <textarea name="group-request-membership-comments" id="group-request-membership-comments"></textarea> + + <?php bp_nouveau_group_hook( '', 'request_membership_content' ); ?> + + <p><input type="submit" name="group-request-send" id="group-request-send" value="<?php echo esc_attr_x( 'Send Request', 'button', 'buddypress' ); ?>" /> + + <?php wp_nonce_field( 'groups_request_membership' ); ?> + </form><!-- #request-membership-form --> +<?php endif; ?> + +<?php +bp_nouveau_group_hook( 'after', 'request_membership_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/requests-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/requests-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..fef478a1b94d47c286e9d496f1a4c24421e3150a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/requests-loop.php @@ -0,0 +1,56 @@ +<?php +/** + * BuddyPress - Groups Requests Loop + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<?php if ( bp_group_has_membership_requests( bp_ajax_querystring( 'membership_requests' ) ) ) : ?> + + <h2 class="bp-screen-title"> + <?php esc_html_e( 'Manage Membership Requests', 'buddypress' ); ?> + </h2> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <ul id="request-list" class="item-list bp-list membership-requests-list"> + <?php + while ( bp_group_membership_requests() ) : + bp_group_the_membership_request(); + ?> + + <li> + <div class="item-avatar"> + <?php bp_group_request_user_avatar_thumb(); ?> + </div> + + <div class="item"> + + <div class="item-title"> + <h3><?php bp_group_request_user_link(); ?></h3> + </div> + + <div class="item-meta"> + <span class="comments"><?php bp_group_request_comment(); ?></span> + <span class="activity"><?php bp_group_request_time_since_requested(); ?></span> + <?php bp_nouveau_group_hook( '', 'membership_requests_admin_item' ); ?> + </div> + + </div> + + <?php bp_nouveau_groups_request_buttons(); ?> + </li> + + <?php endwhile; ?> + </ul> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'group-requests-none' ); ?> + +<?php +endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/send-invites.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/send-invites.php new file mode 100644 index 0000000000000000000000000000000000000000..7ee3e6734dd6fd4f1cb3d127f9da2ea176ef7676 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/groups/single/send-invites.php @@ -0,0 +1,9 @@ +<?php +/** + * BuddyPress - Groups Send Invites + * + * @since 3.0.0 + * @version 3.0.0 + */ +// Runs do_action & calls common/js-templates/invites/index +bp_nouveau_group_invites_interface(); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/activate.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/activate.php new file mode 100644 index 0000000000000000000000000000000000000000..a0ec42b6356f9b8354262bd429b8c561f71dd51a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/activate.php @@ -0,0 +1,56 @@ +<?php +/** + * BuddyPress - Members Activate + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + + <?php bp_nouveau_activation_hook( 'before', 'page' ); ?> + + <div class="page" id="activate-page"> + + <?php bp_nouveau_template_notices(); ?> + + <?php bp_nouveau_activation_hook( 'before', 'content' ); ?> + + <?php if ( bp_account_was_activated() ) : ?> + + <?php if ( isset( $_GET['e'] ) ) : ?> + <p><?php esc_html_e( 'Your account was activated successfully! Your account details have been sent to you in a separate email.', 'buddypress' ); ?></p> + <?php else : ?> + <p> + <?php + echo esc_html( + sprintf( + __( 'Your account was activated successfully! You can now <a href="%s">log in</a> with the username and password you provided when you signed up.', 'buddypress' ), + wp_login_url( bp_get_root_domain() ) + ) + ); + ?> + </p> + <?php endif; ?> + + <?php else : ?> + + <p><?php esc_html_e( 'Please provide a valid activation key.', 'buddypress' ); ?></p> + + <form action="" method="post" class="standard-form" id="activation-form"> + + <label for="key"><?php esc_html_e( 'Activation Key:', 'buddypress' ); ?></label> + <input type="text" name="key" id="key" value="<?php echo esc_attr( bp_get_current_activation_key() ); ?>" /> + + <p class="submit"> + <input type="submit" name="submit" value="<?php echo esc_attr_x( 'Activate', 'button', 'buddypress' ); ?>" /> + </p> + + </form> + + <?php endif; ?> + + <?php bp_nouveau_activation_hook( 'after', 'content' ); ?> + + </div><!-- .page --> + + <?php bp_nouveau_activation_hook( 'after', 'page' ); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/index.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/index.php new file mode 100644 index 0000000000000000000000000000000000000000..b2e6e5db0e2901a9650b4af5f42275177432611c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/index.php @@ -0,0 +1,27 @@ +<?php +/** + * BuddyPress Members Directory + * + * @version 3.0.0 + */ + +?> + + <?php bp_nouveau_before_members_directory_content(); ?> + + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'common/nav/directory-nav' ); ?> + + <?php endif; ?> + + <div class="screen-content"> + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + + <div id="members-dir-list" class="members dir-list" data-bp-list="members"> + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'directory-members-loading' ); ?></div> + </div><!-- #members-dir-list --> + + <?php bp_nouveau_after_members_directory_content(); ?> + </div><!-- // .screen-content --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/members-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/members-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..9cc1f606e6e11cd7fcd0a60d5a4ba960556439b4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/members-loop.php @@ -0,0 +1,82 @@ +<?php +/** + * BuddyPress - Members Loop + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_before_loop(); ?> + +<?php if ( bp_get_current_member_type() ) : ?> + <p class="current-member-type"><?php bp_current_member_type_message(); ?></p> +<?php endif; ?> + +<?php if ( bp_has_members( bp_ajax_querystring( 'members' ) ) ) : ?> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <ul id="members-list" class="<?php bp_nouveau_loop_classes(); ?>"> + + <?php while ( bp_members() ) : bp_the_member(); ?> + + <li <?php bp_member_class( array( 'item-entry' ) ); ?> data-bp-item-id="<?php bp_member_user_id(); ?>" data-bp-item-component="members"> + <div class="list-wrap"> + + <div class="item-avatar"> + <a href="<?php bp_member_permalink(); ?>"><?php bp_member_avatar( bp_nouveau_avatar_args() ); ?></a> + </div> + + <div class="item"> + + <div class="item-block"> + + <h2 class="list-title member-name"> + <a href="<?php bp_member_permalink(); ?>"><?php bp_member_name(); ?></a> + </h2> + + <?php if ( bp_nouveau_member_has_meta() ) : ?> + <p class="item-meta last-activity"> + <?php bp_nouveau_member_meta(); ?> + </p><!-- #item-meta --> + <?php endif; ?> + + <?php + bp_nouveau_members_loop_buttons( + array( + 'container' => 'ul', + 'button_element' => 'button', + ) + ); +?> + + </div> + + <?php if ( bp_get_member_latest_update() && ! bp_nouveau_loop_is_grid() ) : ?> + <div class="user-update"> + <p class="update"> <?php bp_member_latest_update(); ?></p> + </div> + <?php endif; ?> + + </div><!-- // .item --> + + + + </div> + </li> + + <?php endwhile; ?> + + </ul> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php +else : + + bp_nouveau_user_feedback( 'members-loop-none' ); + +endif; +?> + +<?php bp_nouveau_after_loop(); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/register.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/register.php new file mode 100644 index 0000000000000000000000000000000000000000..6eeb8629fdd65dcedf084750adeea10ea43e0a91 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/register.php @@ -0,0 +1,117 @@ +<?php +/** + * BuddyPress - Members/Blogs Registration forms + * + * @since 3.0.0 + * @version 3.1.0 + */ + +?> + + <?php bp_nouveau_signup_hook( 'before', 'page' ); ?> + + <div id="register-page"class="page register-page"> + + <?php bp_nouveau_template_notices(); ?> + + <?php bp_nouveau_user_feedback( bp_get_current_signup_step() ); ?> + + <form action="" name="signup_form" id="signup-form" class="standard-form signup-form clearfix" method="post" enctype="multipart/form-data"> + + <div class="layout-wrap"> + + <?php if ( 'request-details' === bp_get_current_signup_step() ) : ?> + + <?php bp_nouveau_signup_hook( 'before', 'account_details' ); ?> + + <div class="register-section default-profile" id="basic-details-section"> + + <?php /***** Basic Account Details ******/ ?> + + <h2 class="bp-heading"><?php esc_html_e( 'Account Details', 'buddypress' ); ?></h2> + + <?php bp_nouveau_signup_form(); ?> + + </div><!-- #basic-details-section --> + + <?php bp_nouveau_signup_hook( 'after', 'account_details' ); ?> + + <?php /***** Extra Profile Details ******/ ?> + + <?php if ( bp_is_active( 'xprofile' ) && bp_nouveau_base_account_has_xprofile() ) : ?> + + <?php bp_nouveau_signup_hook( 'before', 'signup_profile' ); ?> + + <div class="register-section extended-profile" id="profile-details-section"> + + <h2 class="bp-heading"><?php esc_html_e( 'Profile Details', 'buddypress' ); ?></h2> + + <?php /* Use the profile field loop to render input fields for the 'base' profile field group */ ?> + <?php while ( bp_profile_groups() ) : bp_the_profile_group(); ?> + + <?php while ( bp_profile_fields() ) : bp_the_profile_field(); ?> + + <div<?php bp_field_css_class( 'editfield' ); ?>> + <fieldset> + + <?php + $field_type = bp_xprofile_create_field_type( bp_get_the_profile_field_type() ); + $field_type->edit_field_html(); + + bp_nouveau_xprofile_edit_visibilty(); + ?> + + </fieldset> + </div> + + <?php endwhile; ?> + + <input type="hidden" name="signup_profile_field_ids" id="signup_profile_field_ids" value="<?php bp_the_profile_field_ids(); ?>" /> + + <?php endwhile; ?> + + <?php bp_nouveau_signup_hook( '', 'signup_profile' ); ?> + + </div><!-- #profile-details-section --> + + <?php bp_nouveau_signup_hook( 'after', 'signup_profile' ); ?> + + <?php endif; ?> + + <?php if ( bp_get_blog_signup_allowed() ) : ?> + + <?php bp_nouveau_signup_hook( 'before', 'blog_details' ); ?> + + <?php /***** Blog Creation Details ******/ ?> + + <div class="register-section blog-details" id="blog-details-section"> + + <h2><?php esc_html_e( 'Site Details', 'buddypress' ); ?></h2> + + <p><label for="signup_with_blog"><input type="checkbox" name="signup_with_blog" id="signup_with_blog" value="1" <?php checked( (int) bp_get_signup_with_blog_value(), 1 ); ?>/> <?php esc_html_e( "Yes, i'd like to create a new site", 'buddypress' ); ?></label></p> + + <div id="blog-details"<?php if ( (int) bp_get_signup_with_blog_value() ) : ?>class="show"<?php endif; ?>> + + <?php bp_nouveau_signup_form( 'blog_details' ); ?> + + </div> + + </div><!-- #blog-details-section --> + + <?php bp_nouveau_signup_hook( 'after', 'blog_details' ); ?> + + <?php endif; ?> + + </div><!-- //.layout-wrap --> + + <?php bp_nouveau_submit_button( 'register' ); ?> + + <?php endif; // request-details signup step ?> + + <?php bp_nouveau_signup_hook( 'custom', 'steps' ); ?> + + </form> + + </div> + + <?php bp_nouveau_signup_hook( 'after', 'page' ); ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/activity.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..b0a94c270b0111c566a821f5c0bdee750e695b72 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/activity.php @@ -0,0 +1,40 @@ +<?php +/** + * BuddyPress - Users Activity + * + * @since 3.0.0 + * @version 3.0.0 + */ + +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Activity menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> +</nav><!-- .item-list-tabs#subnav --> + +<h2 class="bp-screen-title<?php echo ( bp_displayed_user_has_front_template() ) ? ' bp-screen-reader-text' : ''; ?>"> + <?php esc_html_e( 'Member Activities', 'buddypress' ); ?> +</h2> + +<?php bp_nouveau_activity_member_post_form(); ?> + +<?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + +<?php bp_nouveau_member_hook( 'before', 'activity_content' ); ?> + +<div id="activity-stream" class="activity single-user" data-bp-list="activity"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'member-activity-loading' ); ?></div> + + <ul class="<?php bp_nouveau_loop_classes(); ?>" > + + </ul> + +</div><!-- .activity --> + +<?php +bp_nouveau_member_hook( 'after', 'activity_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/blogs.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/blogs.php new file mode 100644 index 0000000000000000000000000000000000000000..5ee5b1c0b43bfc39e1c1af84a6c3298b1ca548d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/blogs.php @@ -0,0 +1,42 @@ +<?php +/** + * BuddyPress - Users Blogs + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Sites menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> +</nav><!-- .bp-navs --> + +<?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + +<?php +switch ( bp_current_action() ) : + + // Home/My Blogs + case 'my-sites': + bp_nouveau_member_hook( 'before', 'blogs_content' ); + ?> + + <div class="blogs myblogs" data-bp-list="blogs"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'member-blogs-loading' ); ?></div> + + </div><!-- .blogs.myblogs --> + + <?php + bp_nouveau_member_hook( 'after', 'blogs_content' ); + break; + + // Any other + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; 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 new file mode 100644 index 0000000000000000000000000000000000000000..5315091c2a162eecf85978755d6871d8b9ce69e5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php @@ -0,0 +1,51 @@ +<?php +/** + * BuddyPress - Users Cover Image Header + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<div id="cover-image-container"> + <div id="header-cover-image"></div> + + <div id="item-header-cover-image"> + <div id="item-header-avatar"> + <a href="<?php bp_displayed_user_link(); ?>"> + + <?php bp_displayed_user_avatar( 'type=full' ); ?> + + </a> + </div><!-- #item-header-avatar --> + + <div id="item-header-content"> + + <?php if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() ) : ?> + <h2 class="user-nicename">@<?php bp_displayed_user_mentionname(); ?></h2> + <?php endif; ?> + + <?php + bp_nouveau_member_header_buttons( + array( + 'container' => 'ul', + 'button_element' => 'button', + 'container_classes' => array( 'member-header-actions' ), + ) + ); +?> + + <?php bp_nouveau_member_hook( 'before', 'header_meta' ); ?> + + <?php if ( bp_nouveau_member_has_meta() ) : ?> + <div class="item-meta"> + + <?php bp_nouveau_member_meta(); ?> + + </div><!-- #item-meta --> + <?php endif; ?> + + </div><!-- #item-header-content --> + + </div><!-- #item-header-cover-image --> +</div><!-- #cover-image-container --> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/default-front.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/default-front.php new file mode 100644 index 0000000000000000000000000000000000000000..1dcadd3de64f13f3bc1ffa593ab049dc02d876d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/default-front.php @@ -0,0 +1,58 @@ +<?php +/** + * BP Nouveau Default user's front template. + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<div class="member-front-page"> + + <?php if ( ! is_customize_preview() && bp_current_user_can( 'bp_moderate' ) && ! is_active_sidebar( 'sidebar-buddypress-members' ) ) : ?> + + <div class="bp-feedback custom-homepage-info info"> + <strong><?php esc_html_e( 'Manage the members default front page', 'buddypress' ); ?></strong> + <button type="button" class="bp-tooltip" data-bp-tooltip="<?php echo esc_attr_x( 'Close', 'button', 'buddypress' ); ?>" aria-label="<?php esc_attr_e( 'Close this notice', 'buddypress' ); ?>" data-bp-close="remove"><span class="dashicons dashicons-dismiss" aria-hidden="true"></span></button><br/> + <?php + printf( + esc_html__( 'You can set the preferences of the %1$s or add %2$s to it.', 'buddypress' ), + bp_nouveau_members_get_customizer_option_link(), + bp_nouveau_members_get_customizer_widgets_link() + ); + ?> + </div> + + <?php endif; ?> + + <?php if ( bp_nouveau_members_wp_bio_info() ) : ?> + + <div class="member-description"> + + <?php if ( get_the_author_meta( 'description', bp_displayed_user_id() ) ) : ?> + <blockquote class="member-bio"> + <?php bp_nouveau_member_description( bp_displayed_user_id() ); ?> + </blockquote><!-- .member-bio --> + <?php endif; ?> + + <?php + if ( bp_is_my_profile() ) : + + bp_nouveau_member_description_edit_link(); + + endif; + ?> + + </div><!-- .member-description --> + + <?php endif; ?> + + <?php if ( is_active_sidebar( 'sidebar-buddypress-members' ) ) : ?> + + <div id="member-front-widgets" class="bp-sidebar bp-widget-area" role="complementary"> + <?php dynamic_sidebar( 'sidebar-buddypress-members' ); ?> + </div><!-- .bp-sidebar.bp-widget-area --> + + <?php endif; ?> + +</div> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends.php new file mode 100644 index 0000000000000000000000000000000000000000..a6c3848c503b4817032236a25289d4d298864ff3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends.php @@ -0,0 +1,48 @@ +<?php +/** + * BuddyPress - Users Friends + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Friends menu', 'buddypress' ); ?>"> + <ul class="subnav"> + <?php if ( bp_is_my_profile() ) : ?> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + <?php endif; ?> + </ul> +</nav><!-- .bp-navs --> + +<?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + +<?php +switch ( bp_current_action() ) : + + // Home/My Friends + case 'my-friends': + bp_nouveau_member_hook( 'before', 'friends_content' ); + ?> + + <div class="members friends" data-bp-list="members"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'member-friends-loading' ); ?></div> + + </div><!-- .members.friends --> + + <?php + bp_nouveau_member_hook( 'after', 'friends_content' ); + break; + + case 'requests': + bp_get_template_part( 'members/single/friends/requests' ); + break; + + // Any other + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends/requests.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends/requests.php new file mode 100644 index 0000000000000000000000000000000000000000..df0c435efd2d6339e627d783163feb6bde01d9f9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/friends/requests.php @@ -0,0 +1,53 @@ +<?php +/** + * BuddyPress - Members Friends Requests + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<h2 class="screen-heading friendship-requests-screen"><?php esc_html_e( 'Friendship Requests', 'buddypress' ); ?></h2> + +<?php bp_nouveau_member_hook( 'before', 'friend_requests_content' ); ?> + +<?php if ( bp_has_members( 'type=alphabetical&include=' . bp_get_friendship_requests() ) ) : ?> + + <?php bp_nouveau_pagination( 'top' ); ?> + + <ul id="friend-list" class="<?php bp_nouveau_loop_classes(); ?>" data-bp-list="friendship_requests"> + <?php + while ( bp_members() ) : + bp_the_member(); + ?> + + <li id="friendship-<?php bp_friend_friendship_id(); ?>" <?php bp_member_class( array( 'item-entry' ) ); ?> data-bp-item-id="<?php bp_friend_friendship_id(); ?>" data-bp-item-component="members"> + <div class="item-avatar"> + <a href="<?php bp_member_link(); ?>"><?php bp_member_avatar( array( 'type' => 'full' ) ); ?></a> + </div> + + <div class="item"> + <div class="item-title"><a href="<?php bp_member_link(); ?>"><?php bp_member_name(); ?></a></div> + <div class="item-meta"><span class="activity"><?php bp_member_last_active(); ?></span></div> + + <?php bp_nouveau_friend_hook( 'requests_item' ); ?> + </div> + + <?php bp_nouveau_members_loop_buttons(); ?> + </li> + + <?php endwhile; ?> + </ul> + + <?php bp_nouveau_friend_hook( 'requests_content' ); ?> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'member-requests-none' ); ?> + +<?php endif; ?> + +<?php +bp_nouveau_member_hook( 'after', 'friend_requests_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups.php new file mode 100644 index 0000000000000000000000000000000000000000..bcea565c8781b66a5c66b38b39f880bcdc7eec52 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups.php @@ -0,0 +1,57 @@ +<?php +/** + * BuddyPress - Users Groups + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Groups menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php if ( bp_is_my_profile() ) : ?> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + <?php endif; ?> + + </ul> +</nav><!-- .bp-navs --> + +<?php if ( ! bp_is_current_action( 'invites' ) ) : ?> + + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + +<?php endif; ?> + +<?php + +switch ( bp_current_action() ) : + + // Home/My Groups + case 'my-groups': + bp_nouveau_member_hook( 'before', 'groups_content' ); + ?> + + <div class="groups mygroups" data-bp-list="groups"> + + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'member-groups-loading' ); ?></div> + + </div> + + <?php + bp_nouveau_member_hook( 'after', 'groups_content' ); + break; + + // Group Invitations + case 'invites': + bp_get_template_part( 'members/single/groups/invites' ); + break; + + // Any other + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php new file mode 100644 index 0000000000000000000000000000000000000000..31e509e5442c0143c3a9b35892530c1dbd5c021a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php @@ -0,0 +1,81 @@ +<?php +/** + * BuddyPress - Members Single Group Invites + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<h2 class="screen-heading group-invites-screen"><?php esc_html_e( 'Group Invites', 'buddypress' ); ?></h2> + +<?php bp_nouveau_group_hook( 'before', 'invites_content' ); ?> + +<?php if ( bp_has_groups( 'type=invites&user_id=' . bp_loggedin_user_id() ) ) : ?> + + <ul id="group-list" class="invites item-list bp-list" data-bp-list="groups_invites"> + + <?php + while ( bp_groups() ) : + bp_the_group(); + ?> + + <li class="item-entry invites-list" data-bp-item-id="<?php bp_group_id(); ?>" data-bp-item-component="groups"> + + <div class="wrap"> + + <?php if ( ! bp_disable_group_avatar_uploads() ) : ?> + <div class="item-avatar"> + <a href="<?php bp_group_permalink(); ?>"><?php bp_group_avatar(); ?></a> + </div> + <?php endif; ?> + + <div class="item"> + <h2 class="list-title groups-title"><?php bp_group_link(); ?></h2> + <p class="meta group-details"> + <span class="small"> + <?php + printf( + /* translators: %s = number of members */ + _n( + '%s member', + '%s members', + bp_get_group_total_members( false ), + 'buddypress' + ), + number_format_i18n( bp_get_group_total_members( false ) ) + ); + ?> + </span> + </p> + + <p class="desc"> + <?php bp_group_description_excerpt(); ?> + </p> + + <?php bp_nouveau_group_hook( '', 'invites_item' ); ?> + + <?php + bp_nouveau_groups_invite_buttons( + array( + 'container' => 'ul', + 'button_element' => 'button', + ) + ); + ?> + </div> + + </div> + </li> + + <?php endwhile; ?> + </ul> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'member-invites-none' ); ?> + +<?php endif; ?> + +<?php +bp_nouveau_group_hook( 'after', 'invites_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/home.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/home.php new file mode 100644 index 0000000000000000000000000000000000000000..c31df45c46753ef19248f9e9bf1b503e7ca7d8b8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/home.php @@ -0,0 +1,32 @@ +<?php +/** + * BuddyPress - Members Home + * + * @since 1.0.0 + * @version 3.0.0 + */ +?> + + <?php bp_nouveau_member_hook( 'before', 'home_content' ); ?> + + <div id="item-header" role="complementary" data-bp-item-id="<?php echo esc_attr( bp_displayed_user_id() ); ?>" data-bp-item-component="members" class="users-header single-headers"> + + <?php bp_nouveau_member_header_template_part(); ?> + + </div><!-- #item-header --> + + <div class="bp-wrap"> + <?php if ( ! bp_nouveau_is_object_nav_in_sidebar() ) : ?> + + <?php bp_get_template_part( 'members/single/parts/item-nav' ); ?> + + <?php endif; ?> + + <div id="item-body" class="item-body"> + + <?php bp_nouveau_member_template_part(); ?> + + </div><!-- #item-body --> + </div><!-- // .bp-wrap --> + + <?php bp_nouveau_member_hook( 'after', 'home_content' ); ?> 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 new file mode 100644 index 0000000000000000000000000000000000000000..e82926bed97d900449e7f805db2cf23b4f17db46 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/member-header.php @@ -0,0 +1,35 @@ +<?php +/** + * BuddyPress - Users Header + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<div id="item-header-avatar"> + <a href="<?php bp_displayed_user_link(); ?>"> + + <?php bp_displayed_user_avatar( 'type=full' ); ?> + + </a> +</div><!-- #item-header-avatar --> + +<div id="item-header-content"> + + <?php if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() ) : ?> + <h2 class="user-nicename">@<?php bp_displayed_user_mentionname(); ?></h2> + <?php endif; ?> + + <?php bp_nouveau_member_hook( 'before', 'header_meta' ); ?> + + <?php if ( bp_nouveau_member_has_meta() ) : ?> + <div class="item-meta"> + + <?php bp_nouveau_member_meta(); ?> + + </div><!-- #item-meta --> + <?php endif; ?> + + <?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/messages.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/messages.php new file mode 100644 index 0000000000000000000000000000000000000000..a4f7b588a2e94e09092931819486c8f6ced03dcf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/messages.php @@ -0,0 +1,27 @@ +<?php +/** + * BuddyPress - Users Messages + * + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Messages menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> +</nav><!-- .bp-navs --> + +<?php +if ( ! in_array( bp_current_action(), array( 'inbox', 'sentbox', 'starred', 'view', 'compose', 'notices' ), true ) ) : + + bp_get_template_part( 'members/single/plugins' ); + +else : + + bp_nouveau_messages_member_interface(); + +endif; +?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications.php new file mode 100644 index 0000000000000000000000000000000000000000..0f335edd85cf22e1a5d7c3973726cd6f1f336576 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications.php @@ -0,0 +1,40 @@ +<?php +/** + * BuddyPress - Users Notifications + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Notifications menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> +</nav> + +<?php +switch ( bp_current_action() ) : + + case 'unread': + case 'read': + ?> + + + <?php bp_get_template_part( 'common/search-and-filters-bar' ); ?> + + + <div id="notifications-user-list" class="notifications dir-list" data-bp-list="notifications"> + <div id="bp-ajax-loader"><?php bp_nouveau_user_feedback( 'member-notifications-loading' ); ?></div> + </div><!-- #groups-dir-list --> + + <?php + break; + + // Any other actions. + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..009432a22020678b649bb5044c586ea7ee0131b9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php @@ -0,0 +1,61 @@ +<?php +/** + * BuddyPress - Members Notifications Loop + * + * @since 3.0.0 + * @version 3.1.0 + */ + +if ( bp_has_notifications( bp_ajax_querystring( 'notifications' ) ) ) : + + bp_nouveau_pagination( 'top' ); ?> + + <form action="" method="post" id="notifications-bulk-management" class="standard-form"> + <table class="notifications bp-tables-user"> + <thead> + <tr> + <th class="icon"></th> + <th class="bulk-select-all"><input id="select-all-notifications" type="checkbox"><label class="bp-screen-reader-text" for="select-all-notifications"><?php esc_html_e( 'Select all', 'buddypress' ); ?></label></th> + <th class="title"><?php esc_html_e( 'Notification', 'buddypress' ); ?></th> + <th class="date"> + <?php esc_html_e( 'Date Received', 'buddypress' ); ?> + <?php bp_nouveau_notifications_sort_order_links(); ?> + </th> + <th class="actions"><?php esc_html_e( 'Actions', 'buddypress' ); ?></th> + </tr> + </thead> + + <tbody> + + <?php + while ( bp_the_notifications() ) : + bp_the_notification(); + ?> + + <tr> + <td></td> + <td class="bulk-select-check"><label for="<?php bp_the_notification_id(); ?>"><input id="<?php bp_the_notification_id(); ?>" type="checkbox" name="notifications[]" value="<?php bp_the_notification_id(); ?>" class="notification-check"><span class="bp-screen-reader-text"><?php esc_html_e( 'Select this notification', 'buddypress' ); ?></span></label></td> + <td class="notification-description"><?php bp_the_notification_description(); ?></td> + <td class="notification-since"><?php bp_the_notification_time_since(); ?></td> + <td class="notification-actions"><?php bp_the_notification_action_links(); ?></td> + </tr> + + <?php endwhile; ?> + + </tbody> + </table> + + <div class="notifications-options-nav"> + <?php bp_nouveau_notifications_bulk_management_dropdown(); ?> + </div><!-- .notifications-options-nav --> + + <?php wp_nonce_field( 'notifications_bulk_nonce', 'notifications_bulk_nonce' ); ?> + </form> + + <?php bp_nouveau_pagination( 'bottom' ); ?> + +<?php else : ?> + + <?php bp_nouveau_user_feedback( 'member-notifications-none' ); ?> + +<?php endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-nav.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-nav.php new file mode 100644 index 0000000000000000000000000000000000000000..15d1e4df942d5732fe14c4691a2bc97377468df8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-nav.php @@ -0,0 +1,39 @@ +<?php +/** + * BuddyPress Single Members item Navigation + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_nav_classes(); ?>" id="object-nav" role="navigation" aria-label="<?php esc_attr_e( 'Member menu', 'buddypress' ); ?>"> + + <?php if ( bp_nouveau_has_nav( array( 'type' => 'primary' ) ) ) : ?> + + <ul> + + <?php + while ( bp_nouveau_nav_items() ) : + bp_nouveau_nav_item(); + ?> + + <li id="<?php bp_nouveau_nav_id(); ?>" class="<?php bp_nouveau_nav_classes(); ?>"> + <a href="<?php bp_nouveau_nav_link(); ?>" id="<?php bp_nouveau_nav_link_id(); ?>"> + <?php bp_nouveau_nav_link_text(); ?> + + <?php if ( bp_nouveau_nav_has_count() ) : ?> + <span class="count"><?php bp_nouveau_nav_count(); ?></span> + <?php endif; ?> + </a> + </li> + + <?php endwhile; ?> + + <?php bp_nouveau_member_hook( '', 'options_nav' ); ?> + + </ul> + + <?php endif; ?> + +</nav> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-subnav.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-subnav.php new file mode 100644 index 0000000000000000000000000000000000000000..67d0fd51fe810b950229bb58a846532620f9d3a7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/item-subnav.php @@ -0,0 +1,29 @@ +<?php +/** + * BuddyPress Single Members item Sub Navigation + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<?php if ( bp_nouveau_has_nav( array( 'type' => 'secondary' ) ) ) : ?> + + <?php + while ( bp_nouveau_nav_items() ) : + bp_nouveau_nav_item(); + ?> + + <li id="<?php bp_nouveau_nav_id(); ?>" class="<?php bp_nouveau_nav_classes(); ?>" <?php bp_nouveau_nav_scope(); ?>> + <a href="<?php bp_nouveau_nav_link(); ?>" id="<?php bp_nouveau_nav_link_id(); ?>"> + <?php bp_nouveau_nav_link_text(); ?> + + <?php if ( bp_nouveau_nav_has_count() ) : ?> + <span class="count"><?php bp_nouveau_nav_count(); ?></span> + <?php endif; ?> + </a> + </li> + + <?php endwhile; ?> + +<?php endif; ?> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php new file mode 100644 index 0000000000000000000000000000000000000000..24d9b43dbacb41a37570e4ed30ede21d4a98503a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php @@ -0,0 +1,50 @@ +<?php +/** + * BuddyPress - Members Single Profile Edit Field visibility + * + * @since 3.0.0 + * @version 3.1.0 + */ + +if ( empty( $GLOBALS['profile_template'] ) ) { + return; +} +?> + +<?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?> + + <p class="field-visibility-settings-toggle field-visibility-settings-header" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id(); ?>"> + + <?php + printf( + /* translators: field visibility level, e.g. "...seen by: everyone". */ + __( 'This field may be seen by: %s', 'buddypress' ), + '<span class="current-visibility-level">' . bp_get_the_profile_field_visibility_level_label() . '</span>' + ); + ?> + <button class="visibility-toggle-link text-button" type="button"><?php echo esc_html_x( 'Change', 'button', 'buddypress' ); ?></button> + + </p> + + <div class="field-visibility-settings" id="field-visibility-settings-<?php bp_the_profile_field_id(); ?>"> + <fieldset> + <legend><?php esc_html_e( 'Who is allowed to see this field?', 'buddypress' ); ?></legend> + + <?php bp_profile_visibility_radio_buttons(); ?> + + </fieldset> + <button class="field-visibility-settings-close button" type="button"><?php echo esc_html_x( 'Close', 'button', 'buddypress' ); ?></button> + </div> + +<?php else : ?> + + <p class="field-visibility-settings-notoggle field-visibility-settings-header" id="field-visibility-settings-toggle-<?php bp_the_profile_field_id(); ?>"> + <?php + printf( + esc_html__( 'This field may be seen by: %s', 'buddypress' ), + '<span class="current-visibility-level">' . bp_get_the_profile_field_visibility_level_label() . '</span>' + ); + ?> + </p> + +<?php endif; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/plugins.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/plugins.php new file mode 100644 index 0000000000000000000000000000000000000000..ff2f4d116952c3c4f4b67605111c4899ddb27814 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/plugins.php @@ -0,0 +1,37 @@ +<?php +/** + * BuddyPress - Users Plugins Template + * + * 3rd-party plugins should use this template to easily add template + * support to their plugins for the members component. + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_member_hook( 'before', 'plugin_template' ); ?> + +<?php if ( ! bp_is_current_component_core() ) : ?> + + <nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + <?php bp_nouveau_member_hook( '', 'plugin_options_nav' ); ?> + + </ul> + </nav> + +<?php endif; ?> + +<?php if ( has_action( 'bp_template_title' ) ) : ?> + + <h2><?php bp_nouveau_plugin_hook( 'title' ); ?></h2> + +<?php endif; ?> + +<?php +bp_nouveau_plugin_hook( 'content' ); + +bp_nouveau_member_hook( 'after', 'plugin_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile.php new file mode 100644 index 0000000000000000000000000000000000000000..5acccb444ad66e23b042796ab70380a6dff48c61 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile.php @@ -0,0 +1,62 @@ +<?php +/** + * BuddyPress - Users Profile + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Profile menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> +</nav><!-- .item-list-tabs --> + +<?php bp_nouveau_member_hook( 'before', 'profile_content' ); ?> + +<div class="profile <?php echo bp_current_action(); ?>"> + +<?php +switch ( bp_current_action() ) : + + // Edit + case 'edit': + bp_get_template_part( 'members/single/profile/edit' ); + break; + + // Change Avatar + case 'change-avatar': + bp_get_template_part( 'members/single/profile/change-avatar' ); + break; + + // Change Cover Image + case 'change-cover-image': + bp_get_template_part( 'members/single/profile/change-cover-image' ); + break; + + // Compose + case 'public': + // Display XProfile + if ( bp_is_active( 'xprofile' ) ) { + bp_get_template_part( 'members/single/profile/profile-loop' ); + + // Display WordPress profile (fallback) + } else { + bp_get_template_part( 'members/single/profile/profile-wp' ); + } + + break; + + // Any other + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; +?> +</div><!-- .profile --> + +<?php +bp_nouveau_member_hook( 'after', 'profile_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php new file mode 100644 index 0000000000000000000000000000000000000000..fa1b4e1e8a91221564ea0b80338c8ba81df90813 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php @@ -0,0 +1,82 @@ +<?php +/** + * BuddyPress - Members Profile Change Avatar + * + * @since 3.0.0 + * @version 3.1.0 + */ +?> + +<h2 class="screen-heading change-avatar-screen"><?php esc_html_e( 'Change Profile Photo', 'buddypress' ); ?></h2> + +<?php bp_nouveau_member_hook( 'before', 'avatar_upload_content' ); ?> + +<?php if ( ! (int) bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?> + + <p class="bp-feedback info"> + <span class="bp-icon" aria-hidden="true"></span> + <span class="bp-help-text"><?php esc_html_e( 'Your profile photo will be used on your profile and throughout the site. If there is a <a href="https://gravatar.com">Gravatar</a> associated with your account email we will use that, or you can upload an image from your computer.', 'buddypress' ); ?></span> + </p> + + <form action="" method="post" id="avatar-upload-form" class="standard-form" enctype="multipart/form-data"> + + <?php if ( 'upload-image' === bp_get_avatar_admin_step() ) : ?> + + <?php wp_nonce_field( 'bp_avatar_upload' ); ?> + <p class="bp-help-text"><?php esc_html_e( "Click below to select a JPG, GIF or PNG format photo from your computer and then click 'Upload Image' to proceed.", 'buddypress' ); ?></p> + + <p id="avatar-upload"> + <label for="file" class="bp-screen-reader-text"><?php esc_html_e( 'Select an image', 'buddypress' ); ?></label> + <input type="file" name="file" id="file" /> + <input type="submit" name="upload" id="upload" value="<?php esc_attr_e( 'Upload Image', 'buddypress' ); ?>" /> + <input type="hidden" name="action" id="action" value="bp_avatar_upload" /> + </p> + + <?php if ( bp_get_user_has_avatar() ) : ?> + <p class="bp-help-text"><?php esc_html_e( "If you'd like to delete your current profile photo, use the delete profile photo button.", 'buddypress' ); ?></p> + <p><a class="button edit" href="<?php bp_avatar_delete_link(); ?>"><?php esc_html_e( 'Delete My Profile Photo', 'buddypress' ); ?></a></p> + <?php endif; ?> + + <?php endif; ?> + + <?php if ( 'crop-image' === bp_get_avatar_admin_step() ) : ?> + + <p class="bp-help-text screen-header"><?php esc_html_e( 'Crop Your New Profile Photo', 'buddypress' ); ?></p> + + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-to-crop" class="avatar" alt="<?php esc_attr_e( 'Profile photo to crop', 'buddypress' ); ?>" /> + + <div id="avatar-crop-pane"> + <img src="<?php bp_avatar_to_crop(); ?>" id="avatar-crop-preview" class="avatar" alt="<?php esc_attr_e( 'Profile photo preview', 'buddypress' ); ?>" /> + </div> + + <input type="submit" name="avatar-crop-submit" id="avatar-crop-submit" value="<?php esc_attr_e( 'Crop Image', 'buddypress' ); ?>" /> + + <input type="hidden" name="image_src" id="image_src" value="<?php bp_avatar_to_crop_src(); ?>" /> + <input type="hidden" id="x" name="x" /> + <input type="hidden" id="y" name="y" /> + <input type="hidden" id="w" name="w" /> + <input type="hidden" id="h" name="h" /> + + <?php wp_nonce_field( 'bp_avatar_cropstore' ); ?> + + <?php endif; ?> + + </form> + + <?php + /** + * Load the Avatar UI templates + * + * @since 2.3.0 + */ + bp_avatar_get_templates(); + ?> + +<?php else : ?> + + <p class="bp-help-text"><?php esc_html_e( 'Your profile photo will be used on your profile and throughout the site. To change your profile photo, create an account with <a href="https://gravatar.com">Gravatar</a> using the same email address as you used to register with this site.', 'buddypress' ); ?></p> + +<?php endif; ?> + +<?php +bp_nouveau_member_hook( 'after', 'avatar_upload_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-cover-image.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-cover-image.php new file mode 100644 index 0000000000000000000000000000000000000000..344f3ea35929ba2c4a1c89829c2ebb9c87b01f63 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/change-cover-image.php @@ -0,0 +1,24 @@ +<?php +/** + * BuddyPress - Members Profile Change Cover Image + * + * @since 3.0.0 + * @version 3.1.0 + */ + +?> + +<h2 class="screen-heading change-cover-image-screen"><?php esc_html_e( 'Change Cover Image', 'buddypress' ); ?></h2> + +<?php bp_nouveau_member_hook( 'before', 'edit_cover_image' ); ?> + +<p class="info bp-feedback"> + <span class="bp-icon" aria-hidden="true"></span> + <span class="bp-help-text"><?php esc_html_e( 'Your Cover Image will be used to customize the header of your profile.', 'buddypress' ); ?></span> +</p> + +<?php +// Load the cover image UI +bp_attachments_get_template_part( 'cover-images/index' ); + +bp_nouveau_member_hook( 'after', 'edit_cover_image' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/edit.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/edit.php new file mode 100644 index 0000000000000000000000000000000000000000..feba0f7e90d37468dbc1c56a53b1d8ad3f8258d1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/edit.php @@ -0,0 +1,73 @@ +<?php +/** + * BuddyPress - Members Single Profile Edit + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_xprofile_hook( 'before', 'edit_content' ); ?> + +<h2 class="screen-heading edit-profile-screen"><?php esc_html_e( 'Edit Profile', 'buddypress' ); ?></h2> + +<?php if ( bp_has_profile( 'profile_group_id=' . bp_get_current_profile_group_id() ) ) : + while ( bp_profile_groups() ) : + bp_the_profile_group(); + ?> + + <form action="<?php bp_the_profile_group_edit_form_action(); ?>" method="post" id="profile-edit-form" class="standard-form profile-edit <?php bp_the_profile_group_slug(); ?>"> + + <?php bp_nouveau_xprofile_hook( 'before', 'field_content' ); ?> + + <?php if ( bp_profile_has_multiple_groups() ) : ?> + <ul class="button-tabs button-nav"> + + <?php bp_profile_group_tabs(); ?> + + </ul> + <?php endif; ?> + + <h3 class="screen-heading profile-group-title edit"> + <?php + printf( + /* translators: %s = profile field group name */ + __( 'Editing "%s" Profile Group', 'buddypress' ), + bp_get_the_profile_group_name() + ) + ?> + </h3> + + <?php + while ( bp_profile_fields() ) : + bp_the_profile_field(); + ?> + + <div<?php bp_field_css_class( 'editfield' ); ?>> + <fieldset> + + <?php + $field_type = bp_xprofile_create_field_type( bp_get_the_profile_field_type() ); + $field_type->edit_field_html(); + ?> + + <?php bp_nouveau_xprofile_edit_visibilty(); ?> + + </fieldset> + </div> + + <?php endwhile; ?> + + <?php bp_nouveau_xprofile_hook( 'after', 'field_content' ); ?> + + <input type="hidden" name="field_ids" id="field_ids" value="<?php bp_the_profile_field_ids(); ?>" /> + + <?php bp_nouveau_submit_button( 'member-profile-edit' ); ?> + + </form> + + <?php endwhile; ?> + +<?php endif; ?> + +<?php +bp_nouveau_xprofile_hook( 'after', 'edit_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php new file mode 100644 index 0000000000000000000000000000000000000000..2edf478153655e6d69cb26249c06bbb8321c9283 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php @@ -0,0 +1,69 @@ +<?php +/** + * BuddyPress - Members Profile Loop + * + * @since 3.0.0 + * @version 3.1.0 + */ + +?> + +<h2 class="screen-heading view-profile-screen"><?php esc_html_e( 'View Profile', 'buddypress' ); ?></h2> + +<?php bp_nouveau_xprofile_hook( 'before', 'loop_content' ); ?> + +<?php if ( bp_has_profile() ) : ?> + + <?php + while ( bp_profile_groups() ) : + bp_the_profile_group(); + ?> + + <?php if ( bp_profile_group_has_fields() ) : ?> + + <?php bp_nouveau_xprofile_hook( 'before', 'field_content' ); ?> + + <div class="bp-widget <?php bp_the_profile_group_slug(); ?>"> + + <h3 class="screen-heading profile-group-title"> + <?php bp_the_profile_group_name(); ?> + </h3> + + <table class="profile-fields bp-tables-user"> + + <?php + while ( bp_profile_fields() ) : + bp_the_profile_field(); + ?> + + <?php if ( bp_field_has_data() ) : ?> + + <tr<?php bp_field_css_class(); ?>> + + <td class="label"><?php bp_the_profile_field_name(); ?></td> + + <td class="data"><?php bp_the_profile_field_value(); ?></td> + + </tr> + + <?php endif; ?> + + <?php bp_nouveau_xprofile_hook( '', 'field_item' ); ?> + + <?php endwhile; ?> + + </table> + </div> + + <?php bp_nouveau_xprofile_hook( 'after', 'field_content' ); ?> + + <?php endif; ?> + + <?php endwhile; ?> + + <?php bp_nouveau_xprofile_hook( '', 'field_buttons' ); ?> + +<?php endif; ?> + +<?php +bp_nouveau_xprofile_hook( 'after', 'loop_content' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-wp.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-wp.php new file mode 100644 index 0000000000000000000000000000000000000000..d2d1fc01ab1d9131cc1c816c36cd94f060da0c19 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/profile/profile-wp.php @@ -0,0 +1,55 @@ +<?php +/** + * BuddyPress - Members Single Profile WP + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_wp_profile_hooks( 'before' ); ?> + +<div class="bp-widget wp-profile"> + + <h2 class="screen-heading wp-profile-screen"> + <?php + if ( bp_is_my_profile() ) { + esc_html_e( 'My Profile', 'buddypress' ); + } else { + printf( + /* Translators: a member's profile, e.g. "Paul's profile". */ + __( "%s's Profile", 'buddypress' ), + bp_get_displayed_user_fullname() + ); + } + ?> + </h2> + + <?php if ( bp_nouveau_has_wp_profile_fields() ) : ?> + + <table class="wp-profile-fields"> + + <?php + while ( bp_nouveau_wp_profile_fields() ) : + bp_nouveau_wp_profile_field(); + ?> + + <tr id="<?php bp_nouveau_wp_profile_field_id(); ?>"> + <td class="label"><?php bp_nouveau_wp_profile_field_label(); ?></td> + <td class="data"><?php bp_nouveau_wp_profile_field_data(); ?></td> + </tr> + + <?php endwhile; ?> + + </table> + + <?php else : ?> + + <?php bp_nouveau_user_feedback( 'member-wp-profile-none' ); ?> + + <?php endif; ?> + +</div> + +<?php +bp_nouveau_wp_profile_hooks( 'after' ); + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings.php new file mode 100644 index 0000000000000000000000000000000000000000..bacded04f80d6ec13d1a28d9ee7f7a302a918f5a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings.php @@ -0,0 +1,45 @@ +<?php +/** + * BuddyPress - Users Settings + * + * @version 3.0.0 + */ + +?> + +<?php if ( bp_core_can_edit_settings() ) : ?> + + <nav class="<?php bp_nouveau_single_item_subnav_classes(); ?>" id="subnav" role="navigation" aria-label="<?php esc_attr_e( 'Settings menu', 'buddypress' ); ?>"> + <ul class="subnav"> + + <?php bp_get_template_part( 'members/single/parts/item-subnav' ); ?> + + </ul> + </nav> + +<?php +endif; + +switch ( bp_current_action() ) : + case 'notifications': + bp_get_template_part( 'members/single/settings/notifications' ); + break; + case 'capabilities': + bp_get_template_part( 'members/single/settings/capabilities' ); + break; + case 'delete-account': + bp_get_template_part( 'members/single/settings/delete-account' ); + break; + case 'general': + bp_get_template_part( 'members/single/settings/general' ); + break; + case 'profile': + bp_get_template_part( 'members/single/settings/profile' ); + break; + case 'invites': + bp_get_template_part( 'members/single/settings/group-invites' ); + break; + default: + bp_get_template_part( 'members/single/plugins' ); + break; +endswitch; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/capabilities.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/capabilities.php new file mode 100644 index 0000000000000000000000000000000000000000..7a36b4242775c707ab81fe796ffd6980e2256e69 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/capabilities.php @@ -0,0 +1,27 @@ +<?php +/** + * BuddyPress - Members Settings ( Capabilities ) + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_member_hook( 'before', 'settings_template' ); ?> + +<h2 class="screen-heading member-capabilities-screen"> + <?php esc_html_e( 'Members Capabilities', 'buddypress' ); ?> +</h2> + +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/capabilities/' ); ?>" name="account-capabilities-form" id="account-capabilities-form" class="standard-form" method="post"> + + <label for="user-spammer"> + <input type="checkbox" name="user-spammer" id="user-spammer" value="1" <?php checked( bp_is_user_spammer( bp_displayed_user_id() ) ); ?> /> + <?php esc_html_e( 'This member is a spammer.', 'buddypress' ); ?> + </label> + + <?php bp_nouveau_submit_button( 'member-capabilities' ); ?> + +</form> + +<?php +bp_nouveau_member_hook( 'after', 'settings_template' ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..5dd764d81de39e170bafd0ef9963be05ec58ff18 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php @@ -0,0 +1,29 @@ +<?php +/** + * BuddyPress - Members Settings ( Delete Account ) + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_member_hook( 'before', 'settings_template' ); ?> + +<h2 class="screen-heading delete-account-screen warn"> + <?php esc_html_e( 'Delete Account', 'buddypress' ); ?> +</h2> + +<?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"> + + <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" /> + <?php esc_html_e( 'I understand the consequences.', 'buddypress' ); ?> + </label> + + <?php bp_nouveau_submit_button( 'member-delete-account' ); ?> + +</form> + +<?php +bp_nouveau_member_hook( 'after', 'settings_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php new file mode 100644 index 0000000000000000000000000000000000000000..462191faa0c71b048d223e9a3f4db3a157e0633c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/general.php @@ -0,0 +1,49 @@ +<?php +/** + * BuddyPress - Members Settings ( General ) + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_member_hook( 'before', 'settings_template' ); ?> + +<h2 class="screen-heading general-settings-screen"> + <?php _e( 'Email & Password', 'buddypress' ); ?> +</h2> + +<p class="info email-pwd-info"> + <?php _e( 'Update your email and or password.', 'buddypress' ); ?> +</p> + +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/general' ); ?>" method="post" class="standard-form" id="settings-form"> + + <?php if ( ! is_super_admin() ) : ?> + + <label for="pwd"><?php _e( 'Current Password <span>(required to update email or change current password)</span>', 'buddypress' ); ?></label> + <input type="password" name="pwd" id="pwd" size="16" value="" class="settings-input small" <?php bp_form_field_attributes( 'password' ); ?>/> <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>"><?php esc_html_e( 'Lost your password?', 'buddypress' ); ?></a> + + <?php endif; ?> + + <label for="email"><?php _e( 'Account Email', 'buddypress' ); ?></label> + <input type="email" name="email" id="email" value="<?php echo esc_attr( bp_get_displayed_user_email() ); ?>" class="settings-input" <?php bp_form_field_attributes( 'email' ); ?>/> + + <div class="info bp-feedback"> + <span class="bp-icon" aria-hidden="true"></span> + <p class="text"><?php esc_html_e( 'Leave password fields blank for no change', 'buddypress' ); ?></p> + </div> + + <label for="pass1"><?php esc_html_e( 'Add Your New Password', 'buddypress' ); ?></label> + <input type="password" name="pass1" id="pass1" size="16" value="" class="settings-input small password-entry" <?php bp_form_field_attributes( 'password' ); ?>/> + + <label for="pass2" class="repeated-pwd"><?php esc_html_e( 'Repeat Your New Password', 'buddypress' ); ?></label> + <input type="password" name="pass2" id="pass2" size="16" value="" class="settings-input small password-entry-confirm" <?php bp_form_field_attributes( 'password' ); ?>/> + + <div id="pass-strength-result"></div> + + <?php bp_nouveau_submit_button( 'members-general-settings' ); ?> + +</form> + +<?php +bp_nouveau_member_hook( 'after', 'settings_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/group-invites.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/group-invites.php new file mode 100644 index 0000000000000000000000000000000000000000..1caa2ee6100adfbdd3dd1e5bfe1ef55c22c7b8f8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/group-invites.php @@ -0,0 +1,32 @@ +<?php +/** + * BuddyPress - Members Settings ( Group Invites ) + * + * @since 3.0.0 + * @version 3.0.0 + */ +?> + +<h2 class="screen-heading group-invites-screen"> + <?php _e( 'Group Invites', 'buddypress' ); ?> +</h2> + +<?php +if ( 1 === bp_nouveau_groups_get_group_invites_setting() ) { + bp_nouveau_user_feedback( 'member-group-invites-friends-only' ); +} else { + bp_nouveau_user_feedback( 'member-group-invites-all' ); +} +?> + + +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/invites/' ); ?>" name="account-group-invites-form" id="account-group-invites-form" class="standard-form" method="post"> + + <label for="account-group-invites-preferences"> + <input type="checkbox" name="account-group-invites-preferences" id="account-group-invites-preferences" value="1" <?php checked( 1, bp_nouveau_groups_get_group_invites_setting() ); ?>/> + <?php esc_html_e( 'I want to restrict Group invites to my friends only.', 'buddypress' ); ?> + </label> + + <?php bp_nouveau_submit_button( 'member-group-invites' ); ?> + +</form> diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/notifications.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/notifications.php new file mode 100644 index 0000000000000000000000000000000000000000..c01b6e77499ff1f42915b32277e35c499f440b8e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/notifications.php @@ -0,0 +1,28 @@ +<?php +/** + * BuddyPress - Members Settings ( Notifications ) + * + * @since 3.0.0 + * @version 3.0.0 + */ + +bp_nouveau_member_hook( 'before', 'settings_template' ); ?> + +<h2 class="screen-heading email-settings-screen"> + <?php _e( 'Email Notifications', 'buddypress' ); ?> +</h2> + +<p class="bp-help-text email-notifications-info"> + <?php _e( 'Set your email notification preferences.', 'buddypress' ); ?> +</p> + +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/notifications' ); ?>" method="post" class="standard-form" id="settings-form"> + + <?php bp_nouveau_member_email_notice_settings(); ?> + + <?php bp_nouveau_submit_button( 'member-notifications-settings' ); ?> + +</form> + +<?php +bp_nouveau_member_hook( 'after', 'settings_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php new file mode 100644 index 0000000000000000000000000000000000000000..3f968d99d4e348bda5c021c569a419185e529063 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php @@ -0,0 +1,68 @@ +<?php +/** + * BuddyPress - Members Settings ( Profile ) + * + * @since 3.0.0 + * @version 3.1.0 + */ + +bp_nouveau_member_hook( 'before', 'settings_template' ); ?> + +<h2 class="screen-heading profile-settings-screen"> + <?php esc_html_e( 'Profile Visibility Settings', 'buddypress' ); ?> +</h2> + +<p class="bp-help-text profile-visibility-info"> + <?php esc_html_e( 'Select who may see your profile details.', 'buddypress' ); ?> +</p> + +<form action="<?php echo esc_url( bp_displayed_user_domain() . bp_get_settings_slug() . '/profile/' ); ?>" method="post" class="standard-form" id="settings-form"> + + <?php if ( bp_xprofile_get_settings_fields() ) : ?> + + <?php + while ( bp_profile_groups() ) : + bp_the_profile_group(); + ?> + + <?php if ( bp_profile_fields() ) : ?> + + <table class="profile-settings bp-tables-user" id="<?php echo esc_attr( 'xprofile-settings-' . bp_get_the_profile_group_slug() ); ?>"> + <thead> + <tr> + <th class="title field-group-name"><?php bp_the_profile_group_name(); ?></th> + <th class="title"><?php esc_html_e( 'Visibility', 'buddypress' ); ?></th> + </tr> + </thead> + + <tbody> + + <?php + while ( bp_profile_fields() ) : + bp_the_profile_field(); + ?> + + <tr <?php bp_field_css_class(); ?>> + <td class="field-name"><?php bp_the_profile_field_name(); ?></td> + <td class="field-visibility"><?php bp_profile_settings_visibility_select(); ?></td> + </tr> + + <?php endwhile; ?> + + </tbody> + </table> + + <?php endif; ?> + + <?php endwhile; ?> + + <?php endif; ?> + + <input type="hidden" name="field_ids" id="field_ids" value="<?php bp_the_profile_field_ids(); ?>" /> + + <?php bp_nouveau_submit_button( 'members-profile-settings' ); ?> + +</form> + +<?php +bp_nouveau_member_hook( 'after', 'settings_template' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss new file mode 100644 index 0000000000000000000000000000000000000000..898ac72035fdfc3f469cde43087404ec6732dad4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-mixins.scss @@ -0,0 +1,664 @@ +// +// BuddyPress Sass Mixins +// +// @version 3.0.0 + +// This file provides some basic mixins for BP elements +// such as box sizing, radius, calc etc + + +// ======= Typography ====== + +// BP provides two mixins for font size, one basic that states +// a value and can produce rem & px versions the other that calculates +// a reduced size for small +// screen sizes or series of screens described as breakpoints & can +// be termed responsive font sizing. + + +// Font size decs are used with caution BP doesn't manage +// layout sizes & must take care to work with existing layout sizes. + +@mixin font-size($font-size: 16) { + $rem-font-value: ($font-size / 10); + font-size: ($font-size * 1px); + // font-size: $rem-font-value + rem; +} + + +// The following Sass map handles some basic re-sizing of BP fonts. +// Sizes are set to change on the medium breakpoint. +// It is hard for BP to know what the theme is doing so we are +// limited in what we can do here. +// The dev can feed a value to the mixin which will then be calculated +// below to find a reduced size. + +@mixin responsive-font($res-size: 16) { + + $the-sizes: $res-size; + + $small: round(($the-sizes / 1.2)); + $larger: $the-sizes; + + $the-sizes: ( + null: $small, + 46.8em: $larger + ); + + @each $font-breakpoint, $resonsive-font-size in $the-sizes { + + @if $font-breakpoint == null { + font-size: $resonsive-font-size + px; + } @else { + + @media screen and (min-width: $font-breakpoint) { + font-size: $resonsive-font-size + px; + } + } + } + +} + +// Essential em based breakpoints +// mixin wraps rulesets or properties. +// written as: +// @include medium-up() { +// body {property: value;} +// } + + +@mixin small-up { + + @media screen and (min-width: 24em) { + + @content; + } +} + +@mixin medium-small-max { + + @media screen and (max-width: 32em) { + + @content; + } +} + +@mixin medium-small-up { + + @media screen and (min-width: 32em) { + + @content; + } +} + +@mixin medium-max { + + @media screen and (max-width: 46.8em) { + + @content; + } +} + +@mixin medium-up { + + @media screen and (min-width: 46.8em) { + + @content; + } +} + +@mixin medium-lrg-up { + + @media screen and (min-width: 55em) { + + @content; + } +} + +@mixin large-up { + + @media screen and (min-width: 75em) { + + @content; + } +} + +// 'clearfix-element' allows us to pass an element, class or id to the mixin. +// Use where we need to have float containment and where getting to +// the physical element to add a class of 'clearfix' is problematic. + +@mixin clearfix-element($item) { + + #{$item}:before, + #{$item}:after { + content: " "; + display: table; + } + + #{$item}:after { + clear: both; + } + +} + +// These two mixins add hide/show properties for clicked/focussed elements. +// They may be added to existing rulesets or added to a class selector +// rulesets to use hardcoded to template markup. + +// Convenience helper to add hide properties to rulesets + +@mixin hide() { + display: none; +} + +// companion mixins properties for showing the element for :focus/:hover +// or via JS added hooks. + +@mixin show() { + height: auto; + left: 0; + overflow: visible; + position: static; + top: 0; +} + +// Box model - defaults to value 'border-box' +// Vendor prefixes are pretty much redundant for this property, +// consider removing + +@mixin box-model($box-type: null) { + + @if $box-type { + // if a param was passed through + $box-type: $box-type; + } @else { + $box-type: border-box; + } + + -webkit-box-sizing: $box-type; + -moz-box-sizing: $box-type; + box-sizing: $box-type; +} + +// Border radius + +@mixin border-radius($radius) { + -webkit-border-radius: $radius; + -moz-border-radius: $radius; + -ms-border-radius: $radius; + border-radius: $radius; + background-clip: padding-box; +} + +@mixin border-top-radius($radius) { + -webkit-border-top-right-radius: $radius; + border-top-right-radius: $radius; + -webkit-border-top-left-radius: $radius; + border-top-left-radius: $radius; + background-clip: padding-box; +} + +@mixin border-right-radius($radius) { + -webkit-border-bottom-right-radius: $radius; + border-bottom-right-radius: $radius; + -webkit-border-top-right-radius: $radius; + border-top-right-radius: $radius; + background-clip: padding-box; +} + +@mixin border-bottom-radius($radius) { + -webkit-border-bottom-right-radius: $radius; + border-bottom-right-radius: $radius; + -webkit-border-bottom-left-radius: $radius; + border-bottom-left-radius: $radius; + background-clip: padding-box; +} + +@mixin border-left-radius($radius) { + -webkit-border-bottom-left-radius: $radius; + border-bottom-left-radius: $radius; + -webkit-border-top-left-radius: $radius; + border-top-left-radius: $radius; + background-clip: padding-box; +} + +// very basic box-shadow mixin - this needs to be +// updated & improved + +@mixin box-shadow($values...) { + -webkit-box-shadow: $values; + -moz-box-shadow: $values; + box-shadow: $values; +} + +// There can be a need to override the themes global styles +// Provide a box-shadow: none; + +@mixin box-shadow-none() { + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} + +// Calc e.g (100% - 10px) + +@mixin calc($property, $expression) { + #{$property}: -webkit-calc(#{$expression}); + #{$property}: -moz-calc(#{$expression}); + #{$property}: calc(#{$expression}); +} + +// Flexbox Mixins + +// Set display to box flex & set the direction and wrapping behavior +// shorthand for flex-direction & flex wrap - default ( row wrap ) + +@mixin flex-box-dir($flex-dir: "row", $flex-wrap: "nowrap") { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: unquote($flex-dir) unquote($flex-wrap); + -moz-flex-flow: unquote($flex-dir) unquote($flex-wrap); + -ms-flex-flow: unquote($flex-dir) unquote($flex-wrap); + -o-flex-flow: unquote($flex-dir) unquote($flex-wrap); + flex-flow: unquote($flex-dir) unquote($flex-wrap); +} + +// align child items +// flex-start | flex-end | center | baseline | stretch (default) + +@mixin flex-align($align: stretch) { + -ms-flex-align: $align; //older? + -webkit-align-items: $align; + -webkit-box-align: $align; // old + align-items: $align; // current specs +} + +// Box-order - shuffle item order for columns + +@mixin box-order($box-order-number: 1) { + -webkit-box-order: $box-order-number; + -moz-order: $box-order-number; + -ms-order: $box-order-number; + -o-order: $box-order-number; + order: $box-order-number; +} + +// shorthand: flex-grow, flex-shrink, flex-basis for child items +// defaults 0 | 1 | auto + +@mixin box-item-size($grow: 0, $shrink: 1, $basis: auto) { + -webkit-flex: $grow $shrink $basis; + -moz-flex: $grow $shrink $basis; + -ms-flex: $grow $shrink $basis; + -o-flex: $grow $shrink $basis; + flex: $grow $shrink $basis; +} + +// Vertical centering - all in one, this is a +// fixed mixin for one result/requirement. +// This class allows us to center child elements +// using flexbox. This is a progressive enhancement, +// it won't work in all browsers, older browser will simply +// fall back to non centered or using older techniques. +// N.B It would be preferable to remove the older property syntax + +@mixin center-vert() { + display: -webkit-box; // older + display: -ms-flexbox; // older + display: -webkit-flex; // current prefix + display: flex; // current specs + -ms-flex-align: center; //older? + -webkit-align-items: center; + -webkit-box-align: center; // old + align-items: center; // current specs +} + +// Layout elements / lists as grids +// A combined mixin to set flex-flow & flex. +// This mixin must be called on the parent i.e 'ul' + +@mixin build-flex-layout($row-wrap: wrap, $align: stretch, $basis: auto, $grow: 0 ) { + + @include flex-box-dir($flex-dir: "row", $flex-wrap: $row-wrap); + @include flex-align($align: $align); + + > * { + + @include box-item-size($grow: $grow, $shrink: 1, $basis: $basis); + } +} + +// Links as a tabbed effect. +// Renders links in a horizontal layout as a +// tab effect on the current selected links. + +@mixin tabbed-links() { + + .tabbed-links { + + ul, + ol { + border-bottom: 1px solid $bp-border-dark; + float: none; + margin: $marg-lrg 0 $marg-sml; + + &:before, + &:after { + content: " "; + display: block; + } + + &:after { + clear: both; + } + + li { + float: left; + list-style: none; + margin: 0 $marg-sml 0 0; + + a, + span:not(.count) { + background: none; + border: none; + display: block; + padding: 4px 10px; + } + + a:focus, + a:hover { + background: none; + } + } + + li:not(.current) { + margin-bottom: 2px; + } + + li.current { + border-color: $bp-border-dark $bp-border-dark #fff; + border-style: solid; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-width: 1px; + margin-bottom: -1px; + padding: 0 $pad-sml 1px; + + a { + background: none; + color: $black; + } + } + } + } + + // we don't want top margin if tabs are on the top subnav position + .bp-subnavs.tabbed-links > ul { + margin-top: 0; + } +} + +// Provides the properties to style vert navs in a visual tab style. +// This allows rulesets to be applied without having to re-write. +// e.g dir-navs use this in _bp_layouts.scss if the navs tabs class set. + +@mixin primary-navs-vert-tabs() { + + ul { + + li:not(.selected) { + + a:hover, + a:focus { + background: none; + } + } + + li.selected { + background: none; + border: 1px solid $med-light-grey; + border-right-color: #fff; + + a { + background: none; + color: $black; + font-weight: 600; + + span { + background: $dark-grey; + border: 1px solid $med-light-grey; + color: $white; + } + } + } + + } +} + +// BP message boxes + +// BP message boxes +// Creates a message box with border, background color +// If no text-color passed in then the background used for +// text is darkened by 50%. +@mixin message-box($background: #fff, $text-color: null, $border: null) { + + @if $text-color { + // if a param was passed through + $text-color: $text-color; + } @else { + $text-color: darken($background, 50%); + } + + background: $background; + + @if $border != none { + + @if $border { + border: $border; + } @else { + border: 1px solid darken($background, 10%); + } + } + + color: $text-color; +} + +// Password warn colors + +@mixin pwd-bad-colors($color: inherit, $background: null, $border: null) { + + @if $background { + $background: $background; + } @else { + $background: $background-bad; + } + + background-color: $background; + + @if $border { + $border: $border; + } @else { + $border: $border-bad; + } + + border-color: $border; + + color: $color; +} + +@mixin pwd-short-colors($color: inherit, $background: null, $border: null) { + + @if $background { + $background: $background; + } @else { + $background: $background-short; + } + + background-color: $background; + + @if $border { + $border: $border; + } @else { + $border: $border-short; + } + + border-color: $border; + + color: $color; +} + +@mixin pwd-good-colors($color: inherit, $background: null, $border: null) { + + @if $background { + $background: $background; + } @else { + $background: $background-good; + } + + background-color: $background; + + @if $border { + $border: $border; + } @else { + $border: $border-good; + } + + border-color: $border; + + color: $color; +} + +// BP Tooltips + +// Bottom center tooltip - Default + +@mixin bp-tooltip-default { + + &:after { + left: 50%; + margin-top: $tooltip-tip-area; + top: 110%; + -webkit-transform: translate(-50%, 0); + -ms-transform: translate(-50%, 0); + transform: translate(-50%, 0); + } + +} + +// Bottom left tooltip + +@mixin bp-tooltip-bottom-left { + + &:after { + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + } + +} + +// Bottom right tooltip + +@mixin bp-tooltip-bottom-right { + + &:after { + left: auto; + right: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + } + +} + +// Top center tooltip + +@mixin bp-tooltip-top { + + &:after { + bottom: 110%; + left: 50%; + margin-bottom: $tooltip-tip-area; + margin-top: 0; + top: auto; + -webkit-transform: translateX(-50%); + -ms-transform: translateX(-50%); + transform: translateX(-50%); + } + +} + +// Top left tooltip + +@mixin bp-tooltip-top-left { + + &:after { + bottom: 110%; + left: 0; + margin-bottom: $tooltip-tip-area; + margin-top: 0; + top: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + +} + +// Top right tooltip + +@mixin bp-tooltip-top-right { + + &:after { + bottom: 110%; + left: auto; + margin-bottom: $tooltip-tip-area; + margin-top: 0; + right: 0; + top: auto; + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + +} + +// Left tooltip + +@mixin bp-tooltip-left { + + &:after { + bottom: 50%; + left: auto; + margin-right: 10px; + margin-top: 0; + right: 100%; + top: auto; + -webkit-transform: translate(0, 50%); + -ms-transform: translate(0, 50%); + transform: translate(0, 50%); + } + +} + +// Right tooltip + +@mixin bp-tooltip-right { + + &:after { + bottom: 50%; + left: 100%; + margin-left: 10px; + margin-top: 0; + top: auto; + -webkit-transform: translate(0, 50%); + -ms-transform: translate(0, 50%); + transform: translate(0, 50%); + } + +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-variables.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-variables.scss new file mode 100644 index 0000000000000000000000000000000000000000..1d97187b6483ae813a413bd691dca66d09b32afa --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp-variables.scss @@ -0,0 +1,99 @@ +// +// BuddyPress scss Variables +// +// @version 3.0.0 + +// This file provides colors, and any other values that benefit +// from a variable definition that can be managed and changed from one +// central position for all instances of the property/value. + +// Spacing values - used primarily for main elements to allow us +// to adjust values in a grouped manner. + +$pad-xsml: 0.3em !default; +$pad-sml: 0.5em !default; +$pad-med: 1em !default; +$pad-lrg: 2em !default; +$pad-xlrg: 4em !default; + +$marg-xsml: 5px !default; +$marg-sml: 10px !default; +$marg-med: 15px !default; +$marg-lrg: 20px !default; +$marg-xlrg: 30px !default; + +// Colours + +$dark-grey: #555 !default; +$light-text: #767676 !default; // lightest gray on #fff with 4.5:1 contrast ratio +$light-text-plus: #737373 !default; // $light-text on #fafafa background +$primary-grey: #ccc !default; +$light-grey: #eaeaea !default; +$med-light-grey: #d6d6d6 !default; +$blue: #5087e5 !default; +$black: #333 !default; +$grey: $primary-grey !default; +$golden: #edbb34 !default; + +$highlight: $blue !default; // for various elements such as span qnt indications +$text-link-hover: #5087e5 !default; +$text-link-visited: $med-light-grey !default; +$bp-border-color: #eee !default; +$bp-border-dark: $primary-grey !default; +$buttons-background: #ededed !default; +$off-white: #fafafa !default; +$white: #fff !default; +$form-border-color: $med-light-grey !default; +$bp-text: $dark-grey !default; +$form-text: $light-text-plus !default; +$primary-headings: $light-text !default; +$textarea-bck: $white !default; +$meta-text: $light-text-plus !default; +$meta-text-dark: $dark-grey !default; +$focussed-border-clr: rgba(31, 179, 221, 0.9) !default; // textareas? e.g whats-new + +// Message colors + +// used on text == red & input validation pseudo classes +$warn: #b71717 !default; +$valid: #91cc2c !default; + +// The colors for boxes +$warnings: #d33 !default; +$informational: #0b80a4 !default; +$loading: #ffd087 !default; +$update-success: #8a2 !default; + +// password warn colors & border-short +// These may be overidden on the @include mixin call +$pwd-background: #eee !default; +$background-short: #ffa0a0 !default; +$border-short: #f04040 !default; +$background-good: #66d66e !default; +$border-good: #438c48 !default; +$background-bad: #ffb78c !default; +$border-bad: #ff853c !default; + +// Animation loader-pulsate border / shadow colors + +$border-color-from: #aaa !default; +$border-color-to: #ccc !default; +$shadow-color-from: #ccc !default; +$shadow-color-to: #f8f8f8 !default; + +// BP Tooltips + +$tooltip-background: $white !default; +$tooltip-border: $light-text-plus !default; +$tooltip-border-radius: 1px !default; +$tooltip-box-shadow: 4px 4px 8px rgba(0, 0, 0, 0.2) !default; // 1px 1px 0 1px rgba(132, 132, 132, 0.3) !default; +$tooltip-font-family: "Helvetica Neue", helvetica, arial, san-serif; +$tooltip-font-size: 12px !default; +$tooltip-font-weight: 400 !default; +$tooltip-max-width: 200px !default; +$tooltip-padding-hor: 8px !default; +$tooltip-padding-vert: 5px !default; +$tooltip-text-color: $black !default; +$tooltip-tip-area: 7px !default; // bp-tooltip arrow's height, width, & margin +$tooltip-tip-background: $white !default; +$tooltip-z-index: 100000 !default; diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_comments.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_comments.scss new file mode 100644 index 0000000000000000000000000000000000000000..69229044661154a28c2c487f2ab1fdb2f30c702d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_comments.scss @@ -0,0 +1,156 @@ +// BP activity comment entries in response to activity loop entries +// @version 3.0.0 +.buddypress-wrap { + + .activity-comments { + clear: both; + margin: 0 5%; + overflow: hidden; + position: relative; + width: auto; + + ul { + clear: both; + list-style: none; + margin: $marg-med 0 0; + padding: 0; + + li { + border-top: 1px solid $bp-border-color; + border-bottom: 0; + padding: $pad-med 0 0; + + ul { + // indent any nested comments - comment to a comment + margin-left: 5%; + } + } + + li:first-child { + border-top: 0; + } + + li:last-child { + margin-bottom: 0; + } + } // close ul + + div.acomment-avatar { + width: auto; + + img { + border-width: 1px; + float: left; + height: 25px; + max-width: none; + width: 25px; + } + } + + .acomment-meta, + .acomment-content p { + + @include font-size(14); + } + + .acomment-meta { + color: $dark-grey; + overflow: hidden; + padding-left: 2%; + } + + .acomment-content { + border-left: 1px solid $bp-border-dark; + margin: $marg-med 0 0 10%; + padding: $pad-sml $pad-med; + + p { + margin-bottom: 0.5em; + } + } + + .acomment-options { + float: left; + margin: $marg-sml 0 $marg-sml $marg-lrg; + + a { + color: $light-text; + + @include font-size(14); + + &:focus, + &:hover { + color: inherit; + } + } + + } // close .acomment-options + + .activity-meta.action { + background: none; + margin-top: $marg-sml; + + // if button element in use + button { + + @include font-size(14); + font-weight: 400; + text-transform: none; + } + } + + .show-all { + + button { + + @include font-size(14); + text-decoration: underline; + padding-left: $pad-sml; + + span { + text-decoration: none; + } + + &:hover, + &:focus { + + span { + color: $blue; + } + } + } + } + + } // close .activity-comments + + // Activity li.mini Comments + + .mini { + + .activity-comments { + clear: both; + margin-top: 0; + } + + } + +} // close .buddypress-wrap + +// Single Activity Comment Entry View +body.activity-permalink { + + .activity-comments { + background: none; + width: auto; + + > ul { + padding: 0 $pad-sml 0 $pad-med; + } + + ul li > ul { + margin-top: $marg-sml; + } + + } + +} //close .activity-permalink diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss new file mode 100644 index 0000000000000000000000000000000000000000..b294474a156cd168ff9d0e5de9ef46899eea714b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_activity_entries.scss @@ -0,0 +1,428 @@ +// BP Activity Entries - activity loop +// @version 3.0.0 + +.activity-list { + + padding: $pad-sml; + + .activity-item:before, + .activity-item:after { + content: " "; + display: table; + } + + .activity-item:after { + clear: both; + } + + .activity-item { // li element - (entries) + list-style: none; + padding: $pad-med; + + &.has-comments { + padding-bottom: $pad-med; + } + + + div.item-avatar { // 'div' for weight + margin: 0 auto; + text-align: center; + width: auto; + + img { + height: auto; + max-width: 40%; + } + } + + @include medium-up() { + + div.item-avatar { // 'div' for weight + margin: 0 2% 0 0; + text-align: left; + width: 15%; + + img { + max-width: 80%; + } + } + } + + &.mini { + + @include font-size(13); + position: relative; + + .activity-avatar { + margin-left: 0 auto; + text-align: center; + width: auto; + + img.avatar, + img.FB_profile_pic { /* stylelint-disable-line selector-class-pattern */ + max-width: 15%; + } + } + + @include medium-up() { + + .activity-avatar { + margin-left: $marg-med; + text-align: left; + width: 15%; + + img.avatar, + img.FB_profile_pic { /* stylelint-disable-line selector-class-pattern */ + max-width: 60%; + } + } + } + } // close .mini + + &.new_forum_post, + &.new_forum_topic { + + .activity-inner { + border-left: 2px solid $light-grey; + margin-left: $marg-sml; + padding-left: $pad-med; + } + } // close li forum elements + + + &.newest_mentions_activity, + &.newest_friends_activity, + &.newest_groups_activity, + &.newest_blogs_activity { + // why? + background: rgba(31, 179, 221, 0.1); + } + + .activity-inreplyto { + color: $light-text; + + @include font-size(13); + + > p { + display: inline; + margin: 0; + } + + blockquote, + .activity-inner { + background: none; + border: 0; + display: inline; + margin: 0; + overflow: hidden; + padding: 0; + } + } + + // The header elements: date stamp, author etc; + .activity-header { + margin: 0 auto; + width: 80%; + + // ensure elements are display inline, some themes setting avatars as block + a, + img { + display: inline; + } + + .avatar { + display: inline-block; + margin: 0 $marg-xsml; + vertical-align: bottom; + } + + .time-since { + + @include font-size(14); + color: $light-text; + text-decoration: none; + + &:hover { + color: $light-text; + cursor: pointer; + text-decoration: underline; + } + } + + } // close .activity-header + + .activity-content { + + .activity-header, + .comment-header { + color: $light-text; + margin-bottom: $marg-sml; + } + + .activity-inner, + blockquote { + background: $off-white; + margin: $marg-med 0 $marg-sml; + overflow: hidden; + padding: $pad-med; + } + + p { + margin: 0; + } + + } // close .activity-content + + .activity-inner { + + p { + word-wrap: break-word; + } + } + + .activity-read-more { + margin-left: 1em; // proportional to the text size please! + white-space: nowrap; + } + + // The footer elements, buttons etc + + // if this is a ul then... + // else we'll skip this for the rules below. + ul.activity-meta { + margin: 0; + padding-left: 0; + + li { + // if a list is being used keep it inline + border: 0; + display: inline-block; + } + } + + .activity-meta.action { + border: 1px solid transparent; + background: $off-white; + padding: 2px; + position: relative; + text-align: left; + + // this wrapper has generic margins in _bp_lists.scss + // remove for act stream actions. + div.generic-button { + margin: 0; + } + + .button { + background: transparent; + } + + a { + padding: 4px 8px; + } + + // we don't want a background hover if icons used + .button:focus, + .button:hover { + background: none; + } + + // Uncomment .acomment-reply class for icon us + .button:before, + .icons:before { + font-family: dashicons; + font-size: 18px; + vertical-align: middle; + } + + .acomment-reply.button:before { + content: "\f101"; + } + + .view:before { + content: "\f125"; + } + + .fav:before { + content: "\f154"; + } + + .unfav:before { + content: "\f155"; + } + + .delete-activity:before { + content: "\f153"; + } + + .delete-activity:hover { + color: #800; + } + + .button { + border: 0; + box-shadow: none; + + span { + background: none; + color: #555; + font-weight: 700; + } + } + + } // close .activity-meta + + } // close .activity-item + +} // close .activity-list + +@include medium-up() { + + .activity-list.bp-list { + padding: 30px; + } + + .activity-list { + + .activity-item { + + .activity-content { + margin: 0; + position: relative; + + &:after { + clear: both; + content: ""; + display: table; + } + } + + .activity-header { + margin: 0 $marg-med 0 0; + width: auto; + } + + } // li entry item + } +} + +.buddypress-wrap { + + // load more link + .activity-list { + + .load-more, + .load-newest { + background: $off-white; + border: 1px solid $bp-border-color; + font-size: 110%; + margin: $marg-med 0; + padding: 0; + text-align: center; + + a { + color: $dark-grey; + display: block; + padding: $pad-sml 0; + + &:focus, + &:hover, { + background: $white; + color: $black; + } + } + + &:focus, + &:hover { + border-color: darken($bp-border-color, 5%); + + @include box-shadow(0 0 6px 0 $light-grey); + } + } + + } +} + +// Single Activity Entry View +body.activity-permalink { + + .activity-list { + + li { + border-width: 1px; + padding: $pad-med 0 0 0; + + &:first-child { + padding-top: 0; + } + + &.has-comments { + padding-bottom: 0; + } + + } // close li + + .activity-avatar { + width: auto; + + a { + display: block; + } + + img { + max-width: 100%; + } + } + + .activity-content { + border: 0; + font-size: 100%; + line-height: 1.5; + padding: 0; + + .activity-header { + margin: 0; + padding: $pad-sml 0 0 0; + text-align: center; + width: 100%; + } + + .activity-inner, + blockquote { + margin-left: 0; + margin-top: $marg-sml; + } + } + + .activity-meta { + margin: $marg-sml 0 $marg-sml; + } + + .activity-comments { + margin-bottom: $marg-sml; + } + + @include medium-up() { + + .activity-avatar { + left: -20px; + margin-right: 0; + position: relative; + top: -20px; + } + + .activity-content { + margin-right: $marg-sml; + + .activity-header { + + p { + text-align: left; + } + } + } + + } // close @media + + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_animations.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_animations.scss new file mode 100644 index 0000000000000000000000000000000000000000..7457ab836175f4747ac71c660caf1a62e40ac583 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_animations.scss @@ -0,0 +1,85 @@ +// Provides any animation or transition type effects for BP elements +// @version 3.0.0 + +// Fade in hover transition +#buddypress-wrap { + + * { + transition: opacity 0.1s ease-in-out 0.1s; + } + + button, + a.generic-button, + a.button, + input[type="submit"], + input[type="reset"] { + transition: background 0.1s ease-in-out 0.1s, color 0.1s ease-in-out 0.1s, border-color 0.1s ease-in-out 0.1s; + } + +} + +// Historical animation sequence for ajax loading effects. +// Ajax Animations and styles +// scss-lint:disable VendorPrefix +.buddypress-wrap { + + a.loading, + input.loading { + -moz-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + -webkit-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + animation: loader-pulsate 0.5s infinite ease-in-out alternate; + border-color: #aaa; + } + + @-webkit-keyframes loader-pulsate { + + from { + border-color: $border-color-from; + -webkit-box-shadow: 0 0 6px $shadow-color-from; + box-shadow: 0 0 6px $shadow-color-from; + } + + to { + border-color: $border-color-to; + -webkit-box-shadow: 0 0 6px $shadow-color-to; + box-shadow: 0 0 6px $shadow-color-to; + } + } + + @-moz-keyframes loader-pulsate { + + from { + border-color: $border-color-from; + -moz-box-shadow: 0 0 6px $shadow-color-from; + box-shadow: 0 0 6px $shadow-color-from; + } + + to { + border-color: $border-color-to; + -moz-box-shadow: 0 0 6px $shadow-color-to; + box-shadow: 0 0 6px $shadow-color-to; + } + } + + @keyframes loader-pulsate { + + from { + border-color: $border-color-from; + -moz-box-shadow: 0 0 6px $shadow-color-from; + box-shadow: 0 0 6px $shadow-color-from; + } + + to { + border-color: $border-color-to; + -moz-box-shadow: 0 0 6px $shadow-color-to; + box-shadow: 0 0 6px $shadow-color-to; + } + } + + a.loading:hover, + input.loading:hover { + color: #777; + } + +} +// scss-lint:enable VendorPrefix 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 new file mode 100644 index 0000000000000000000000000000000000000000..279215208616607991f6946fe2886b3ddacd44a0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_blogs_loop.scss @@ -0,0 +1,46 @@ +// BP Blogs loop. +// @version 3.0.0 + +.buddypress-wrap { + + .blogs-list { // ul + + li { + + @include medium-up() { + + .item-block { + float: none; + width: auto; + } + + .item-meta { + clear: left; + float: none; + } + } // close @media + + } // close li + + } // close .blogs-list +} + +// If BP Dir Navs are selected as vertical +// We need to just adjust the loop item elements a little +// to cope with the decreased width. + +@include medium-up() { + + .buddypress-wrap { + + .bp-dir-vert-nav { + + .blogs-list { + + .list-title { + width: auto; + } + } + } + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..a1ff806bb4569f21ffd8c3ed781139c8228644fb --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_buttons.scss @@ -0,0 +1,404 @@ +// BP Buttons, Submits, Icons and general clicky things styling. +// @version 3.0.0 + +// Buttons by default are styled as simple boxes but we may +// change that by adding a parent class ( on any close parent to +// the element ) .text-link-list + +.buddypress { + + // this doubling avoids issues applying styles from body class + // to general theme elements - changing body class would be better though. + .buddypress-wrap { + + button, + a.button, + input[type="submit"], + input[type="button"], + input[type="reset"], + ul.button-nav:not(.button-tabs) li a, + .generic-button a, + .comment-reply-link, + a.bp-title-button, + .activity-read-more a { + background: $white; /* Old browsers */ + border-color: $bp-border-dark; + border-style: solid; + border-width: 1px; + color: $dark-grey; + cursor: pointer; + font-size: inherit; + font-weight: 400; + outline: none; + padding: $pad-xsml $pad-sml; + text-align: center; + text-decoration: none; + width: auto; + } + + // Re-instate the quick-tag padding to avoid the above ruleset + // causing styling issues. + .button-small[type="button"] { + padding: 0 8px 1px; + } + + 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"]:focus, + input[type="reset"]:hover, + .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: $buttons-background; + border-color: darken($bp-border-dark, 20%); + color: $black; + outline: none; + text-decoration: none; + } + + 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"], + button.pending, + button.disabled, + div.pending a, + a.disabled { + border-color: $bp-border-color; + color: $light-text; + cursor: default; + } + + 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 { + border-color: $bp-border-color; + color: $light-text; + } + + // provide a class to style elements as text only non button. + button.text-button, + input.text-button { + background: none; + border: 0; + + @include box-shadow-none(); + color: $light-text; + + &.small { + + @include font-size(13); + } + + &:focus, + &:hover { + background: none; + text-decoration: underline; + } + } + + .activity-list { + + a.button { + border: none; + } + } + + .bp-invites-content { + + ul.bp-list { + + li { + + a.invite-button:hover { + color: #1fb3dd; + } + } + + li.selected, + li { + + a.invite-button:hover, + a.group-remove-invite-button:hover { + color: #a00; + } + } + + } + } + + #item-buttons:empty { + display: none; + } + + input:disabled { + + &:hover, + &:focus { + background: none; + } + } + + // Style action links as text links + // .text-links-list would be stated for anchors parent wrapping element + // Example usage on group members manage screen. + + .text-links-list { + + a.button { + background: none; + border: none; + border-right: 1px solid $bp-border-color; + color: $light-text-plus; + display: inline-block; + padding: $pad-xsml $pad-med; + + &:visited { + color: $text-link-visited; + } + + &:focus, + &:hover { + color: $text-link-hover; + } + + } + + a:first-child { + padding-left: 0; + } + + a:last-child { + border-right: none; + } + + } // close text-links-list + + // In grids style the basic action button a little differently + + .bp-list.grid { + + .action { + + a, + button { + border: 1px solid $bp-border-dark; + display: block; + margin: 0; + + &:focus, + &:hover { + background: $buttons-background; + } + } + } // .action + } + + } // close .buddypress + + // The group or site create link as either a button or plain link. + // @todo this will need further classes & styles depending on nav layouts? + // The class 'create-button' will be hardcoded for the moment on the li + // this could be a user selected choice to style as a button though? + + #buddypress { + + // Style the create link as a button - this would be better served + // as a modifier class but we need to be able to allow user selection + // between button style & plain text. For the moment we'll force a + // choice, vert dir navs get button style, horizontal dir navs a text link. + + .create-button { // the parent, i.e li element. + background: none; + + a:focus, + a:hover { + text-decoration: underline; + } + + @include medium-up { + float: right; + } + text-align: center; + + a { + border: 1px solid $bp-border-dark; + + @include border-radius(5px); + @include box-shadow(inset 0 0 6px 0 $light-grey); + margin: 0.2em 0; + width: auto; + + &:focus, + &:hover { + background: none; + border-color: $bp-border-dark; + + @include box-shadow(inset 0 0 12px 0 $light-grey ); + } + } + + } // .create-button + + &.bp-dir-vert-nav { + + @include medium-up { + + .create-button { + float: none; + padding-top: $pad-lrg; + + + a { + margin-right: 0.5em; + } + } + } + } + + &.bp-dir-hori-nav { + + .create-button { + float: left; + + a, + a:hover { + background: none; + border: 0; + + @include box-shadow-none(); + margin: 0; + } + } + } + } // close #buddypress + +} // close body class .buddypress @todo this should be removed in time + +// ==== Icons ==== + +.buddypress-wrap { + + // buttons that are visually rendering as icons only won't + // want the general button styles. + // We'll use a class hook to identify those elements. + button { + + &.bp-icons, + &.ac-reply-cancel { + + background: none; + border: 0; + } + + &.bp-icons { + + &:focus, + &:hover { + background: none; + } + } + + &.ac-reply-cancel { + + &:focus, + &:hover { + background: none; + text-decoration: underline; + } + } + } + + .filter label:before, + .feed a:before, + .bp-invites-filters .invite-button span.icons:before, + .bp-messages-filters li a.messages-button:before, + .bp-invites-content li .invite-button span.icons:before { + font-family: dashicons; + font-size: 18px; + } + + .bp-invites-content .item-list li .invite-button span.icons:before { + + @include responsive-font(32); + } + + // If icons are required for anchors e.g '<a class="button"' + // then we may have .button background hovers being inherited + // Use this grouped selector ruleset to add elements that need + // no change. As we need weight this is specific to bp-lists + + // This is probably a less than optimal solution & a better one will exist to + // implemented when time allows. + .bp-list { + + a.button.invite-button { + + &:focus, + &:hover { + background: none; + } + } + } + + .filter label:before { + content: "\f536"; + } + + div.feed a:before, + li.feed a:before { + content: "\f303"; + } + + ul.item-list { + + li { + + .invite-button:not(.group-remove-invite-button) { + + span.icons:before { + content: "\f502"; + } + } + } + + li.selected .invite-button, + li .group-remove-invite-button { + + span.icons:before { + content: "\f153"; + } + } + } // close ul.item-list + + .bp-invites-filters ul li #bp-invites-next-page:before, + .bp-messages-filters ul li #bp-messages-next-page:before { + content: "\f345"; + } + + .bp-invites-filters ul li #bp-invites-prev-page:before, + .bp-messages-filters ul li #bp-messages-prev-page:before { + content: "\f341"; + } +} // close .buddypress-wrap diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_comment_form.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_comment_form.scss new file mode 100644 index 0000000000000000000000000000000000000000..33d82986f78eb318dd5a55e35b503202130fdcd0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_comment_form.scss @@ -0,0 +1,61 @@ +// BP Activity Comments Form +// @version 3.0.0 +form.ac-form { + display: none; + padding: $pad-med; + + .ac-reply-avatar { + float: left; + + img { + border: 1px solid #eee; + } + } + + .ac-reply-content { + color: $light-text; + padding-left: $pad-med; + + a { + text-decoration: none; + } + + .ac-textarea { + margin-bottom: $marg-med; + padding: 0 $pad-sml; + overflow: hidden; + + textarea { + background: transparent; + box-shadow: none; + color: $bp-text; + font-family: inherit; + font-size: 100%; + height: 60px; + margin: 0; + outline: none; + padding: 0.5em; + width: 100%; + + &:focus { + + @include box-shadow( 0 0 6px $med-light-grey ); + } + } + } + + input { + margin-top: $marg-sml; + } + } + +} + +.activity-comments li form.ac-form { + clear: both; + margin-right: $marg-med; +} + +.activity-comments form.root { + margin-left: 0; +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_cover_image.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_cover_image.scss new file mode 100644 index 0000000000000000000000000000000000000000..0d0a732e172eefe688bdc93fffe4316b0078b8e2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_cover_image.scss @@ -0,0 +1,42 @@ +// Cover image container generic styles. +// These properties manage the required positioning of +// the image container overlay. +// @version 3.0.0 + +/* +* Default required cover image rules +*/ + +#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 { + //padding: 0 1em; + position: relative; + z-index: 2; + + #item-header-avatar { + padding: 0 1em; + } +} + +/* +* end cover image block +*/ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_filters.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_filters.scss new file mode 100644 index 0000000000000000000000000000000000000000..386fc54cafefe74df21406faa2c4ac9dc42432c0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_filters.scss @@ -0,0 +1,204 @@ +// BP Directory Filters +// Specific Styling & Positioning +// N.B. See _bp_navigation for additional rules and properties. +// @version 3.0.0. +.buddypress-wrap { + + .dir-component-filters { // ul + + .filter { // li + + label { + display: inline; + } + } + } + + // User account filters .subnav-filters + + @include clearfix-element(".subnav-filters"); + + .subnav-filters { + background: none; + list-style: none; + margin: $marg-med 0 0; + padding: 0; + + div { + margin: 0; + } + + > ul { + float: left; + list-style: none; + } + + &.bp-messages-filters { + + ul { + width: 100%; + } + + .messages-search { + margin-bottom: 1em; + + @include medium-up { + + margin-bottom: 0; + } + } + } + + div { + float: none; + + select, + input[type="search"] { + + @include font-size(16); + } + + button.nouveau-search-submit { + padding: 5px 0.8em 6px; + } + + button#user_messages_search_submit { + padding: 7px 0.8em; + } + } + + .component-filters { + margin-top: $marg-sml; + } + + .feed { + margin-right: $marg-med; + } + + .last.filter { + + label { + display: inline; + } + + } + + .user-messages-bulk-actions { + + @include clearfix-element(".bulk-actions-wrap"); + + .bulk-actions-wrap { + + &.bp-show { + display: inline-block; + } + + &.bp-hide { + display: none; + } + } + + .select-wrap { + border: 0; + } + + .select-wrap:focus, + .select-wrap:hover { + outline: 1px solid $med-light-grey; + } + + .bulk-actions { + float: left; + } + + label { + display: inline-block; + font-weight: 300; + margin-right: 25px; + padding: 5px 0; + } + + div { + + select { + -webkit-appearance: textfield; + } + } + + .bulk-apply { + border: 0; + border-radius: none; + font-weight: 400; + line-height: 1.8; + margin: 0 0 0 10px; + padding: 3px 5px; + text-align: center; + text-transform: none; + width: auto; + + span { + vertical-align: middle; + } + } + } + + //position for wider screens + + @include medium-small-up() { + + li { + margin-bottom: 0; + } + + .subnav-search, + .subnav-search form, + .feed, + .bp-search, + .dir-search, + .user-messages-bulk-actions, + .user-messages-search, + .group-invites-search, + .group-act-search { + float: left; + } + + .last, + .component-filters { + float: right; + margin-top: 0; + width: auto; + + select { + max-width: 250px; + } + } + + .user-messages-search { + float: right; + } + + } // @media + + } // close .subnav-filters + + .notifications-options-nav { + + input#notification-bulk-manage { + border: 0; + border-radius: 0; + line-height: 1.6; + } + } + + .group-subnav-filters { + + .group-invites-search { + margin-bottom: 1em; + } + + .last { + text-align: center; + } + } + +} // close .buddypress-wrap 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 new file mode 100644 index 0000000000000000000000000000000000000000..fa0f83c98b0c876ad2b6e96ecf24a9528aff934c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_forms.scss @@ -0,0 +1,408 @@ +// BP Forms Elements Global Styles +// @version 3.0.0 + +// Some essential classes used for forms elements: +// labels - sizing especially for standalone controls +// 'bp-label-text' +// +// Where a 'p' element is used to wrap form controls +// that element should be classed with 'bp-controls-wrap' + +.buddypress-wrap { + + .filter, + #whats-new-post-in-box { // has no form element and can't hold rules below. + + select { + border: 1px solid $form-border-color; + } + } + + input.action[disabled] { + cursor: pointer; + opacity: 0.4; + } + + #notification-bulk-manage[disabled] { + display: none; + } + + fieldset { + + legend { + font-size: inherit; + font-weight: 600; + } + } + + textarea, + input[type="text"], + input[type="email"], + input[type="url"], + input[type="tel"], + input[type="password"] { + + &:focus { + + @include box-shadow(0 0 8px $light-grey); + } + } + + // Ensure select elements aren't given a relative/fixed height. + + select { + height: auto; + } + + // Preserve fluid widths, prevent horizontal resize of textareas. + textarea { + resize: vertical; + } + + .standard-form { + + .bp-controls-wrap { + margin: 1em 0; + } + + 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="search"], + input[type="tel"], + input[type="time"], + input[type="url"], + input[type="week"], + select, + input[type="password"], + [data-bp-search] input[type="search"], + [data-bp-search] input[type="text"], + .groups-members-search input[type="search"], + .groups-members-search input[type="text"] { + background: $off-white; + border: 1px solid $form-border-color; + border-radius: 0; + font: inherit; + font-size: 100%; + padding: $pad-sml; + } + + // Manage browser pseudo class validation states & static 'invalid' class + input, + textarea, + select { + + &[required] { + + // FF adds red shadow on password inputs, remove! + box-shadow: none; + border-width: 2px; + + // IE Edge uses outline for invalid controls, remove + outline: 0; + + // Sadly this does mean all inputs are considered to be + // invalid from page load & bordered. + &:invalid { + border-color: $warn; + } + + &:valid { + border-color: $valid; + } + + &:focus { + border-color: $form-border-color; + border-width: 1px; + } + } + + // Class set when BP global signup errors exist. + // This needs to be stated after the pseudo :valid + // as technically the input has a valid value. + &.invalid[required] { + border-color: $warn; + } + } + + input:not(.button-small), + textarea { + width: 100%; + } + + input[type="radio"], + input[type="checkbox"] { + margin-right: $marg-xsml; + width: auto; + } + + select { + padding: 3px; + } + + textarea { + height: 120px; // bad rule! ? + } + + textarea#message_content { + height: 200px; // bad rule! ? + } + + input[type="password"] { + margin-bottom: $marg-xsml; + } + + input:focus, + textarea:focus, + select:focus { + background: $off-white; + color: $bp-text; + outline: 0; + } + + label, + span.label { + display: block; + font-weight: 600; + margin: $marg-med 0 $marg-xsml; + width: auto; + } + + a.clear-value { + display: block; + margin-top: $marg-xsml; + outline: none; + } + + .submit { + clear: both; + padding: $marg-med 0 0; + } + + p.submit { + margin-bottom: 0; + } + + div.submit input { + margin-right: $marg-med; + } + + p label, + #invite-list label { + font-weight: 400; + margin: auto; + } + + p.description { + color: $form-text; + margin: $marg-xsml 0; + } + + div.checkbox label:nth-child(n+2), + div.radio div label { + color: $form-text; + font-size: 100%; + font-weight: 400; + margin: $marg-xsml 0 0; + } + + &#send-reply { + + textarea { + width: 97.5%; + } + } + + &#sidebar-login-form { + + label { + margin-top: $marg-xsml; + } + + input[type="text"], + input[type="password"] { + padding: 4px; + width: 95%; + } + } // close &#sidebar-login-form + + &.profile-edit { + + input:focus { + background: $white; + } + } + + @include medium-up() { + + // The Group invites form lists (not required if Ajax templates in use) + .left-menu { + float: left; + } + + #invite-list ul { + list-style: none; + margin: 1%; + + li { + margin: 0 0 0 1%; + } + } + + .main-column { + margin-left: 190px; + + ul#friend-list { + clear: none; + float: left; + } + + ul#friend-list h4 { + clear: none; + } + } + + } // close @media + + // In tables elements like checkboxes best aligned to middle + // remove margins in these cases. + .bp-tables-user { + + label { + margin: 0; + } + } + + } // close .standard-form + + // Register page + .signup-form { + + label, + legend { + font-weight: 400; + } + } + +} // close .buddypress-wrap + +// These rules do not belong here really but it's +// where original styles placed them +body.no-js { + + .buddypress { + + #notifications-bulk-management #select-all-notifications, + label[for="message-type-select"], + #message-type-select, + #delete_inbox_messages, + #delete_sentbox_messages, + #messages-bulk-management #select-all-messages { + display: none; + } + } +} + +/* Overrides for embedded WP editors */ +.buddypress-wrap { + + .wp-editor-wrap { + + a.button, + .wp-editor-wrap button, + .wp-editor-wrap input[type="submit"], + .wp-editor-wrap input[type="button"], + input[type="reset"] { + padding: 0 8px 1px; + } + } +} + +// Style the select element - generic sitewide styling +// Remove the browser chrome & add our own arrow styles, borders, hovers. + +.buddypress-wrap { + + .select-wrap { + border: 1px solid $bp-border-color; + + label { + display: inline; + } + + select::-ms-expand { + display: none; + } + + select { + -moz-appearance: none; + -webkit-appearance: none; + -o-appearance: none; + appearance: none; + border: 0; + cursor: pointer; + margin-right: -25px; + padding: 6px 25px 6px $marg-sml; + position: relative; + text-indent: -2px; + z-index: 1; + width: 100%; + } + + select, + select:focus, + select:active { + background: transparent; + } + + span.select-arrow { + display: inline-block; + position: relative; + z-index: 0; + + &:before { + color: $primary-grey; + content: "\25BC"; + } + } + + &:focus, + &:hover { + + .select-arrow:before { + color: darken($primary-grey, 15%); + } + } + } // close .select-wrap + + // Add a little on hover inset shadow for subnav search & filters + .select-wrap, + .bp-search form { + + &:focus, + &:hover { + border: 1px solid darken($bp-border-color, 10%); + box-shadow: inset 0 0 3px #eee; + } + } + + // Manage select wrap for notification actions, wide screens + // ensures a shrink wrap width. + + @include medium-small-up() { + + .notifications-options-nav { + + .select-wrap { + float: left; + } + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_general_classes.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_general_classes.scss new file mode 100644 index 0000000000000000000000000000000000000000..2e032410569ff0cfd2db2a8d22e040c5a065ffc1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_general_classes.scss @@ -0,0 +1,55 @@ +// BP General CLasses: screen reader, clearfix etc. +// @version 3.0.0 + +.bp-screen-reader-text { + // See also _bp_mixins for mixin to add properties on block + 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 { + + &:before, + &:after { + content: " "; + display: table; + } +} + +.clearfix:after { + clear: both; +} + +// Vertical centering +// This class allows us to center child elements +// using flexbox this is a progressive enhancement, +// it won't work in all browsers, older browser will simply +// fall back to non centered or to using older techniques. +// N.B. A mixin exists '@include center-vert()' for rulesets +// to use to add the properties below. +.center-vert { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; +} + +.bp-hide { + + @include hide(); +} + +.bp-show { + + @include show(); +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..bfaf7fb47d9d7b4eb5ae3f16641e101b84cfa137 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_generic_and_typography.scss @@ -0,0 +1,255 @@ +// BP Generic elements, Typography and Images. +// @version 3.0.0 + +// ========= Generic Sitewide elements ======== +body { + + #buddypress { // needs the weight of the id here + + * { + // some WP themes add anchor border bottom :( + a { + box-shadow: none; + text-decoration: none; + } + } // close * the kitchen sink of elements + + // Some themes have a negative left margin on the blockquote element?? + #item-body, + .bp-lists { + + blockquote { + margin-left: $marg-sml; + } + } + + // CSS Box Model - some themes will set all blocks to border box + // some will cherry pick - we will set elements as we need to, + // ( setting a global change might be better) + // box-modal() defaults to 'border-box' if no param passed + .bp-list .action { + + @include box-model(); + } + } +} + +// Some themes have very restricted content widths for pages +// or entry-content (2013, 2014, 2017) Lets adjust these restrictions +body.buddypress { + + @include medium-up() { + + .entry-header, + .site-content .entry-header, + .entry-content { + max-width: none; + } + + .entry-header { + float: none; + max-width: none; + } + + .entry-content { + float: none; + max-width: none; + //padding: 0 $pad-xlrg; + } + + // 2017 has a very large top padding we'll reduce that for bp screens + .site-content { + padding-top: 2.5em; + } + + // Some themes are styling on ID's making it hard to override + // Adding a commononly used ID for site here to add weight '#page' + // In part this will help with 2017 floats & narrow widths + + + #page { + + // If 2017 page choice is 'One Column' #primary is a narrow width + // Current RC has removed the customizer column switch !! + // remove width to allow BP screens to mirror post layout widths + // The .wrap element will serve still to provide a max width @ 1000px + + #primary { + max-width: none; + + .entry-header, + .entry-content { + float: none; + width: auto; + } + } + } + + + } // @media +} + +// BP Theme Compatibility isn't technically a theme and has to +// inherit and move over for a themes styles so with generic styling of +// elements we have limited scope + +// Ensure themes can't cause issues with headings. +body.buddypress { // add weight + + .buddypress-wrap { + + h1, + h2, + h3, + h4, + h5, + h6 { + clear: none; + // some themes set massive margins ensure we avoid these in bp elements + margin: 1em 0; + // some themes add padding top lets manage that generically sitewide + padding: 0; + } + } +} + +// Ensure the .bp-wrap element always contains it's children, +// this may cause issues but groups single requires it. + +/* Ensure .bp-wrap encloses it's children */ + +@include clearfix-element(".bp-wrap"); + +// General site avatars round or square ? +// User set +.buddypress-wrap.round-avatars { + + .avatar { + border-radius: 50%; + } +} + +// 'Boxes' i.e display:block when given definition with borders +// look nice if corners subtly rounded by a couple of pixels +div, +dl, +li, +textarea, +select, +input[type="search"], +input[type="submit"], +input[type="reset"] { + + @include border-radius(2px); +} + +// ====== BP Typographic Elements ====== + +// === Font sizing === + + +// Directory component titles, groups/user single, create & register +// Entry headers are outside the BP injection point for pages. +// & get styles by the theme, we'll attempt to over specify +// the selector to ensure we target the right elements +// (no BP classes available other than body classes!) + +body.buddypress { + + article.page { + + > .entry-header { + margin-bottom: 2em; + padding: 0; + + .entry-title { + + @include responsive-font(34); + font-weight: inherit; + color: $primary-headings; + } + } + } +} + +// wrap block in bp content region class, +// avoid styles filtering through +// to site areas such as sidebars/footers etc. +.buddypress-wrap { + + dt.section-title { + + @include responsive-font(22); + } + + .bp-label-text, + .message-threads { + + @include responsive-font(16); + } + + .activity-header { + + @include responsive-font(16); + } + + .activity-inner { + + @include responsive-font(18); + } + + #whats-new-post-in { + + @include font-size(16); + } + + .mini .activity-header, + .acomment-meta { + + @include font-size(16); + } + + .dir-component-filters { + + #activity-filter-by { + + @include responsive-font(16); + } + } + + $search-element-size: 15; + $search-element-button-size: $search-element-size + 5; + + .bp-tables-user { + + th { + + @include responsive-font(16); + } + + td { + + @include responsive-font(14); + } + } + + // Setting the profile fields to be a larger + // font than all general user tables is open for review. + .profile-fields { + + th { + + @include responsive-font(18); + } + + td { + + @include responsive-font(16); + } + } + + #notification-select { + + @include responsive-font(14); + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..7d55feba41cabd2c020da206c5e73f8deca6f11a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_group_header.scss @@ -0,0 +1,100 @@ +// BP Single Group Header Styles. +// @version 3.0.0 + +.groups-header { + + .bp-group-type-list { + margin: 0; + } + + .bp-feedback { + clear: both; + } + + // groups admin/mod wrapper block + .group-item-actions { + float: left; + margin: 0 0 15px 15px; + padding-top: 0; + width: 100%; + } + + + // The admin & mod list display for a group. + // 'moderators-lists' is used to refer to + // generic members with elevated access. + .moderators-lists { + margin-top: 0; + + .moderators-title { + + @include font-size(14); + } + + .user-list { + margin: 0 0 $marg-xsml; + + ul:after { + clear: both; + content: ""; + display: table; + } + + li { + display: inline-block; + float: none; + margin-left: 4px; + padding: 4px; + } + } + + img.avatar { + + @include box-shadow-none(); + float: none; + height: 30px; + margin: 0; + max-width: 100%; + width: 30px; + } + } // close moderators-lists + + @include medium-up { + + div#item-header-content { + float: left; + margin-left: 10%; + text-align: left; + padding-top: $marg-med; + width: 42%; + } + + .group-item-actions { + float: right; + margin: 0 0 15px 15px; + text-align: right; + width: 20%; + } + + .groups-meta { + clear: both; + } + } + + .desc-wrap { + background: $light-grey; + border: 1px solid $med-light-grey; + margin: 0 0 $marg-med; + padding: $pad-med; + text-align: center; + + .group-description { + background: $off-white; + + @include box-shadow(inset 0 0 9px $primary-grey); + padding: $pad-med; + text-align: left; + } + } +} // close groups-header + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_activity.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_activity.scss new file mode 100644 index 0000000000000000000000000000000000000000..90781944a9376d6b6dd00f8341b1c7219a5ed65b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_activity.scss @@ -0,0 +1,8 @@ +// Groups single screen - Activity +// @version 3.0.0 +.buddypress.groups { + + .activity-update-form { + margin-top: 0; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_create.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_create.scss new file mode 100644 index 0000000000000000000000000000000000000000..3b930aae2aab9abd4bd6ea8b6dbc8e1df7617419 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_create.scss @@ -0,0 +1,14 @@ +// Group Creation Steps - Screens +// @version 3.0.0 + +#group-create-body { + padding: $pad-sml; + + .creation-step-name { + text-align: center; + } + + .avatar-nav-items { + margin-top: $marg-med; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_item_body.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_item_body.scss new file mode 100644 index 0000000000000000000000000000000000000000..852419ec405cbf3452c627d4559ea90617e3e3d3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_item_body.scss @@ -0,0 +1,19 @@ +// Groups specific Item-body content +// @version 3.0.0 + +// Members list doesn't generate subnav items items +// so we negate the rules using :not() +.single-item.group-members { + + .item-body { + + .filters:not(.no-subnav) { + border-top: 5px solid $light-grey; + padding-top: $pad-med; + } + + .filters { + margin-top: 0; + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_loop.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_loop.scss new file mode 100644 index 0000000000000000000000000000000000000000..fed5109f9e9bec7bd476acbec3ea73812411e1c8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_loop.scss @@ -0,0 +1,118 @@ +// BP Groups loop. +// @version 3.0.0 + +.buddypress-wrap { + + .groups-list { // ul + + li { + + .list-title { + text-align: center; + } + + .group-details { + clear: left; + } + + .group-desc { + border: 1px solid $light-grey; + + @include border-radius(10px); + @include responsive-font(16); + color: $meta-text; + font-style: italic; + margin: $marg-sml auto 0; + padding: $pad-med; + } + + p { + margin: 0 0 0.5em; + } + + @include medium-up() { + + .item { + margin-right: 0; + } + + .list-title, + .item-meta { + text-align: left; + width: auto; + } + + .item-meta { + margin-bottom: $marg-lrg; + } + + .last-activity { + clear: left; + margin-top: -20px; + } + + } // close @media + + } // close li + + li.group-no-avatar div.group-desc { + margin-left: 0; + } + + } // close .groups-list + + // User account group loop + .mygroups { + + .groups-list.grid { + + .wrap { + min-height: 450px; + padding-bottom: 0; + } + } + } + +} + +// If groups loop is in grid mode then description on narrow multi grids +// can be too large so modify font-size by grid class parents. + +.buddypress-wrap { + + .groups-list.grid { + + @include medium-up { + + &.three, + &.four { + + .group-desc { + + @include font-size(14); + } + } + } // @media + } +} + +// If BP Dir Navs or user screen main navs are selected as vertical +// We need to just adjust the loop item elements a little +// to cope with the decreased width. + +@include medium-up() { + + .buddypress { // body class + + .bp-vertical-navs { + + .groups-list { + + .item-avatar { + margin-right: 3%; + width: 15%; + } + } + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_management.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_management.scss new file mode 100644 index 0000000000000000000000000000000000000000..1ce2caf199b27221fa99b3f4145fa206c5148ba8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_groups_management.scss @@ -0,0 +1,141 @@ +// Single Groups Management screens +// @version 3.0.0 + +// Groups settings screen +.buddypress-wrap { + + .group-status-type { + + ul { + margin: 0 0 $marg-lrg $marg-lrg; + } + } +} + +// ==== Members manage ==== + +.groups-manage-members-list { + padding: $pad-sml 0; + + dd { + margin: 0; + padding: $pad-med 0; + } + + .section-title { + background: $light-grey; + padding-left: $pad-xsml; + } + + ul { + list-style: none; + margin-bottom: 0; + + li { + border-bottom: 1px solid $bp-border-color; + margin-bottom: $marg-sml; + padding: $pad-sml $pad-xsml $pad-xsml; + } + + li:only-child, + li:last-child { + border-bottom: 0; + } + + li:nth-child(even) { + background: $off-white; + } + + li.banned-user { + background: lighten($warn, 50%); + } + + .member-name { + margin-bottom: 0; + text-align: center; + } + + img { + display: block; + margin: 0 auto; + width: 20%; + } + + @include medium-small-up() { + + .member-name { + text-align: left; + } + + img { + display: inline; + width: 50px; + } + } + + @include clearfix-element(".members-manage-buttons"); + + .members-manage-buttons { + margin: $marg-med 0 $marg-xsml; + + a.button { + color: $light-text; + display: block; + + @include font-size(13); + } + + @include medium-small-up() { + + a.button { + display: inline-block; + } + } + } + + .members-manage-buttons.text-links-list { + margin-bottom: 0; + + @include medium-small-max() { + + a.button { + background: #fafafa; + border: 1px solid $bp-border-color; + display: block; + margin-bottom: $marg-sml; + } + } + } + + .action:not(.text-links-list) { + + a.button { + + @include font-size(12); + } + } + + @include medium-up() { + + li { + + .avatar, + .member-name { + float: left; + } + + .avatar { + margin-right: $marg-med; + } + + .action { + clear: both; + float: left; + } + + } + } // close @media + + } + +} //close .groups-manage-members-list 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 new file mode 100644 index 0000000000000000000000000000000000000000..af15cd53369414036efdfe3efb4a71f43cc94edd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_info_messages.scss @@ -0,0 +1,314 @@ +// Sitewide template error & info messages constructs. +// @version 3.0.0. +.buddypress-wrap { + + .warn { + color: $warn; + } + + .bp-messages { + border: 1px solid $bp-border-dark; + + margin: 0 0 $marg-med; + + .sitewide-notices { + display: block; + margin: $marg-xsml; + padding: $pad-sml; + } + + // General info boxes + &.info { + margin-bottom: 0; + } + + // Update success message boxes + &.updated { + 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 + // & looped messages + .bp-messages.bp-user-messages-feedback { + border: 0; + } + + // This is an anomaly, this screen message is locked away in + // core avatar styles and ought to be pulled out, markup & styles to nouveau + #group-create-body { + + .bp-cover-image-status { + + p.warning { + background: $informational; + border: 0; + + @include box-shadow( 0 0 3px 0 rgba(0, 0, 0, 0.2) ); + color: $white; + } + } + } + + + // message-box() may be have params passed through: + // ($background: #fff, $text-color: #000, $border: 1px solid #faf0f0) + // '$border: none' ensures border turned off in favour of + // box shadow, default is 1px solid. + // text-color default value is background color 50% darker. + // Border color default is background 10% darker. + + .bp-feedback:not(.custom-homepage-info) { + + @include flex-box-dir(); + @include flex-align(); + } + + .bp-feedback { + + @include message-box($border: none); + @include box-shadow( 0 1px 1px 1px rgba(0, 0, 0, 0.1) ); + color: $light-text-plus; + + margin: 10px 0; + position: relative; + + p { + margin: 0; + } + + span.bp-icon { + color: $white; + display: block; + font-family: dashicons; + left: 0; + margin-right: $marg-sml; + position: relative; + padding: 0 0.5em; + } + + .bp-help-text { + font-style: italic; + } + + .text { + + @include font-size(14); + margin: 0; + padding: $pad-sml 0; + } + } + + .bp-feedback.no-icon { + padding: $pad-sml; + } + + .bp-feedback.small:before { + line-height: inherit; + } + + a[data-bp-close] span:before, + button[data-bp-close] span:before { + font-size: 32px; + } + + a[data-bp-close], + button[data-bp-close] { + border: 0; + position: absolute; + top: 10px; + right: 10px; + width: 32px; + } + + .bp-feedback.no-icon { + + a[data-bp-close], + button[data-bp-close] { + top: -6px; + right: 6px; + } + } + + button[data-bp-close]:hover { + background-color: transparent; + } + + .bp-feedback { + + p { + margin: 0; + } + + .bp-icon { + font-size: 20px; + padding: 0 2px; + } + } + + .bp-feedback.info, + .bp-feedback.help, + .bp-feedback.error, + .bp-feedback.warning, + .bp-feedback.loading, + .bp-feedback.success, + .bp-feedback.updated { + + .bp-icon { + + @include center-vert(); + } + } + + .bp-feedback.info, + .bp-feedback.help { + + .bp-icon { + background-color: $informational; + + &:before { + content: "\f348"; + } + } + } + + .bp-feedback.error, + .bp-feedback.warning { + + .bp-icon { + background-color: $warnings; + + &:before { + content: "\f534"; + } + } + } + + .bp-feedback.loading { + + .bp-icon { + background-color: $loading; + + &:before { + content: "\f469"; + } + } + } + + .bp-feedback.success, + .bp-feedback.updated { + + .bp-icon { + background-color: $update-success; + + &:before { + content: "\f147"; + } + } + } + + .bp-feedback.help { + + .bp-icon { + + &:before { + content: "\f468"; + } + } + } + + #pass-strength-result { + background-color: $pwd-background; + border-color: #ddd; + border-style: solid; + border-width: 1px; + display: none; + font-weight: 700; + margin: $marg-sml 0 $marg-sml 0; + padding: $pad-sml; + text-align: center; + width: auto; + + // Show the feedback message when fields populated + &.show { + display: block; + } + + &.mismatch { + + @include pwd-bad-colors($color: $white, $background: $black, $border: transparent); + } + + &.error, + &.bad { + + @include pwd-bad-colors($color: $white); + } + + &.short { + + @include pwd-short-colors($color: $white); + } + + &.strong { + + @include pwd-good-colors($color: $white); + } + + } // close #pass-strength-result + + .standard-form#signup_form div div.error { + background: #faa; + color: #a00; + margin: 0 0 $marg-sml 0; + padding: $pad-sml; + width: 90%; + } + + // these two are really helpful???!! + .accept, + .reject { + float: left; + margin-left: $marg-sml; + } + + // .bp-feedback messages - Ajax specific (.bp-ajax-message) + + // Members action button errors in grid layouts + + .members-list.grid { // this probably ought to serve the group loop too + + .bp-ajax-message { + background: rgba($white, 0.9); + border: 1px solid $bp-border-color; + + @include font-size(14); + left: 2%; + + // postion absolute to prevent the element from expanding + // content height & breaking grid box heights. + position: absolute; + padding: $pad-sml $pad-med; + right: 2%; + top: 30px; + } + } + +} // close .buddypress-wrap diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_body_general.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_body_general.scss new file mode 100644 index 0000000000000000000000000000000000000000..fce4ca29572cb4e03f8dd5900e225a36c3fa5999 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_body_general.scss @@ -0,0 +1,34 @@ +// BP Single Screens Item Body General Styles. +// @version 3.0.0 + +.buddypress-wrap { + + .item-body { + margin: $marg-lrg 0; + + .screen-heading { + + @include font-size(20); + + font-weight: 400; + } + + .button-tabs { + margin: $marg-xlrg 0 $marg-med; + } + + } +} + +// If vertical primary nav is in use the item body +// needs a little left padding on loops to let the content breath. + +.buddypress-wrap.bp-single-vert-nav { + + .bp-list:not(.grid) { + + .item-entry { + padding-left: $pad-sml; + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_header_general.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_header_general.scss new file mode 100644 index 0000000000000000000000000000000000000000..72720fc5297e81185f147f6dde08d60a0f612465 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_item_header_general.scss @@ -0,0 +1,178 @@ +// BP Single Screens Item Header General Styles. +// @version 3.0.0 + +@include clearfix-element(".single-headers"); + +.single-headers { + margin-bottom: $marg-med; + + // Breakpoint element positioning + + #item-header-avatar { // todo: this ought to be a class! + + a { + display: block; + text-align: center; + + img { + float: none; + } + } + } + + div#item-header-content { + float: none; + } + + @include medium-up() { + + #item-header-avatar { // todo: this ought to be a class! + + a { + text-align: left; + + img { + float: left; + + } + } + } + + #item-header-content { + padding-left: $pad-lrg; + } + } + + // End breakpoint positioning + + .group-status, + .activity { + display: inline; + } + + .group-status { + + @include font-size(18); + color: $black; + padding-right: $pad-med; + } + + .activity { + display: inline-block; + + @include font-size(12); + padding: 0; + } + + div#message, + #sitewide-notice { + + p { + background-color: #ffd; + border: 1px solid #cb2; + color: #440; + font-weight: 400; + margin-top: 3px; + text-decoration: none; + } + } + + // @mention user name + h2 { + line-height: 1.2; + margin: 0 0 $marg-xsml; + + a { + color: $light-text; + text-decoration: none; + } + + span.highlight { + display: inline-block; + font-size: 60%; + font-weight: 400; + line-height: 1.7; + vertical-align: middle; + + span { + background: #a1dcfa; + color: $white; + cursor: pointer; + font-size: 80%; + font-weight: 700; + margin-bottom: 2px; + padding: 1px 4px; + position: relative; + right: -2px; + top: -2px; + vertical-align: middle; + } + + } + + } // close h2 + + img.avatar { + float: left; + margin: 0 15px 19px 0; + } + + .item-meta { + color: $light-text; + + @include font-size(14); + margin: $marg-med 0 $marg-xsml; + padding-bottom: $pad-sml; + } + + ul { + margin-bottom: $marg-med; + + li { + float: right; + list-style: none; + } + } + + div.generic-button { + text-align: center; + } + + li.generic-button { + display: inline-block; + text-align: center; + } + + @include medium-up() { + + div.generic-button, + a.button, + li.generic-button { + float: left; + } + } + + div.generic-button, + a.button { + margin: $marg-sml $marg-sml 0 0; + } + + // if these are list constructs + li.generic-button { + margin: 2px 10px; + } + + li.generic-button:first-child { + margin-left: 0; + } + + div#message.info { + line-height: 0.8; + } + +} // close .single-headers + +body.no-js .single-item-header .js-self-profile-button { + display: none; +} + 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 new file mode 100644 index 0000000000000000000000000000000000000000..e497e09b1afd5ab49117d2e27b4071cf24df2235 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_layouts.scss @@ -0,0 +1,663 @@ +// BP Layouts +// Layouts provides classes to handle specific module +// layouts on a user selectable basis. +// The sheet also adds layout properties such as border-box +// @version 3.0.0 + +#item-body, +.single-screen-navs { + + @include box-model(); +} + + +// ==== The Grid Layout Classes ==== + +// BP Lists (loops) may be suited to a grid layout e.g members loops +// These classes added to the elements will provide these styles. + +.grid { + // the parent element (usually the ul) + + > li, + > li .generic-button a { + + @include box-model( border-box ); + } + + > li { + border-bottom: 0; + padding-bottom: 10px; + padding-top: 0; + + .list-wrap { + background: $off-white; + border: 1px solid $bp-border-color; + padding-bottom: 15px; + position: relative; + overflow: hidden; + padding-top: 14px; + + .list-title { + padding: $pad-sml; + } + + .update { + color: $meta-text; + padding: $pad-sml $pad-lrg; + } + } + + .item-avatar { + text-align: center; + + .avatar { + border-radius: 50%; + display: inline-block; + width: 50%; + } + } + } // close > li + + // min-height rules to line up grid box elements + // to prevent breaking grid layout through uneven heights + // one column or single column mobile can have varying heights + + @include small-up() { + + &.members-list { + + .list-wrap { + min-height: 340px; + + .item-block { + margin: 0 auto; + min-height: 7rem; + } + } + } + + &.members-group-list { + + .list-wrap { + + .item-block { + margin: 0 auto; + min-height: 7rem; + } + } + } + + &.groups-list { + + .list-wrap { + min-height: 470px; + + .item-block { + min-height: 6rem; + } + + .group-desc { + margin: $marg-med auto 0; + min-height: 5em; + overflow: hidden; + } + + .last-activity, + .group-details, + .item-desc { + margin-bottom: 0; + + p { + margin-bottom: 0; + } + } + } + } + + &.blogs-list { + + .list-wrap { + min-height: 350px; + + .item-block { + margin: 0 auto; + min-height: 7rem; + } + } + } + } // close @media small-up + +} // close .grid + +/* Build the two column class small up */ + +@include small-up() { + + // Set the column or item numbers to span horizontally + .grid { + + > li.item-entry { + float: left; + margin: 0; + } + + &.two { + + > li { + padding-bottom: 20px; + + // With two to a row large screens could allow + // unchecked fluid widths resulting in overlarge avatars. + // This ruleset adds a max width to inner element where + // max page widths aren't set. + @include large-up() { + + .list-wrap { + max-width: 500px; + margin: 0 auto; + } + } + } + } + + &.two, + &.three { + + > li { + width: 50%; + + &:nth-child(odd) { + padding-right: 10px; + } + + &:nth-child(even) { + padding-left: 10px; + } + + .item { + margin: 1rem auto 0; + width: 80%; + + .item-title { + width: auto; + } + } + } // close > li + } + } +} + +/* Build the three column class medium up */ + +@include medium-up() { + + .grid { + + // Set three to a row + &.three { + + > li { + padding-top: 0; + width: 33.333333%; + width: calc(100% / 3); + + &:nth-child(1n+1) { + padding-left: 5px; + padding-right: 5px; + } + + &:nth-child(3n+3) { + padding-left: 5px; + padding-right: 0; + } + + &:nth-child(3n+1) { + padding-left: 0; + padding-right: 5px; + } + + } // close >li + } + } // .grid +} // close @media + +/* Build the four column class medium up */ + +@include medium-up() { + + // Set four to a row + .grid { + + &.four { + + > li { + width: 25%; + + &:nth-child(1n+1) { + padding-left: 5px; + padding-right: 5px; + } + + &:nth-child(4n+4) { + padding-left: 5px; + padding-right: 0; + } + + &:nth-child(4n+1) { + padding-left: 0; + padding-right: 5px; + } + + } // close > li + } + } // .grid +} // close @media + +// This block styles the loop items for a grid layout +// The block might be better located in the generic bp-lists section + +// Style the .bp-list li elements if a 'grid' class is set on the ul + +// if grid is set & this is a member, group or blog loop +// we want to re-style some of the elements in the item +.buddypress-wrap { + + .grid.bp-list { + padding-top: $pad-med; + + > li { + border-bottom: none; + + .list-wrap { + padding-bottom: 3em; + } + + .item-avatar { + margin: 0; + text-align: center; + width: auto; + + img.avatar { + display: inline-block; + height: auto; + width: 50%; + } + } + + .item-meta, + .list-title { + float: none; + text-align: center; + } + + .list-title { + font-size: inherit; + line-height: 1.1; + } + + .item { + + @include responsive-font( 22 ); + left: 0; + margin: 0 auto; + text-align: center; + width: 96%; + + .item-block, + .group-desc { + float: none; + width: 96%; + } + + .item-block { + margin-bottom: $marg-sml; + } + + .last-activity { + margin-top: 5px; + } + + .group-desc { + clear: none; + } + + .user-update { + clear: both; + text-align: left; + } + + .activity-read-more a { + display: inline; + } + } + + .action { + bottom: 5px; + float: none; + height: auto; + left: 0; + margin: 0; + padding: 0 5px; + position: absolute; + text-align: center; + top: auto; + width: 100%; + + .generic-button { + float: none; + margin: $marg-xsml 0 0; + text-align: center; + width: 100%; + + a, + button { + width: 100%; + } + } + } + + .item-avatar, + .avatar, + .item { + float: none; + } + + } // close > li + } // close .grid.bp-list + + + // Specific grid layout adjustments by grid row qnt & component + + .blogs-list.grid.two { + + > li { + + .blogs-title { + min-height: 5em; + } + } + } + + // where three or four items to a row we need to increase the desc height as + // narrow widths force the box taller & adjust some padding values. + // In addition blogs grid in narrow theme widths need a little more height. + + .grid.three, + .grid.four { + + > li { + + .group-desc { + min-height: 8em; + } + } + } + + .blogs-list.grid.three, + .blogs-list.grid.four { + + > li { + min-height: 350px; + + .last-activity { + margin-bottom: 0; + } + + .last-post { + margin-top: 0; + } + } + } + +} // close .buddypress-wrap + +// If we're logged out remove additional padding designed to help +// provide spaces for action button elements & reduce min-heights. + +.buddypress:not(.logged-in) { + + .grid.bp-list { + + .list-wrap { + padding-bottom: $marg-xsml; + } + } + + .grid.groups-list { + + .list-wrap { + min-height: 430px; + } + } + + .grid.members-list, { + + .list-wrap { + min-height: 300px; + } + } + + .grid.blogs-list, { + + .list-wrap { + min-height: 320px; + } + } +} + +// ==== Vertical Navigation Classes ==== + +// These classes added to the BP user navigation elements +// will provide rules to modify the layout to present the +// parent object navigation in a vertical column & sub navs +// horizontally across the item-body + +@include medium-up() { + + .bp-single-vert-nav { // described for the #buddypress element + + .bp-navs.vertical { + overflow: visible; + + ul { + border-right: 1px solid $med-light-grey; + border-bottom: 0; + float: left; + margin-right: -1px; + width: 25%; + } + + li { + float: none; + margin-right: 0; + + &.selected a { + background: $grey; + color: $black; + } + + &:focus, + &:hover { + background: $grey; + } + + span { + background: $med-light-grey; + border-radius: 10%; + float: right; + margin-right: 2px; + } + + &:hover span { + border-color: $light-grey; + } + } // li + + } + + .bp-navs.vertical.tabbed-links { + + li.selected { + + a { + padding-left: 0; + } + } + } + + // re-factor the related elements like the #item-body so it sits + // to the side(floated) + .bp-wrap { + margin-bottom: $marg-med; + + .user-nav-tabs.users-nav, + .group-nav-tabs.groups-nav { + + ul { + + li { + left: 1px; + position: relative; + } + } + } + } + + .item-body:not(#group-create-body) { + background: #fff; + border-left: 1px solid $med-light-grey; + float: right; + margin: 0; + min-height: 400px; + padding: 0 0 0 $pad-med; + width: calc(75% + 1px); + + #subnav:not(.tabbed-links) { + background: $light-grey; + margin: 0 0 0 -5px; + width: auto; + + li { + + @include font-size(16); + margin: $marg-sml 0; + + a { + border-right: 1px solid $bp-border-dark; + padding: 0 $pad-sml; + } + + a:focus, + a:hover { + background: none; + } + } + + li.current { + + a { + background: none; + color: $black; + text-decoration: underline; + } + } + + li:last-child { + + a { + border: none; + } + } + + } // close #subnav + } + } + + // Set the directory screens main navs as vertical aligned + // medium breakpoint up only + + .bp-dir-vert-nav { // described for the #buddypress element + + .dir-navs { + float: left; + left: 1px; + position: relative; + width: 20%; + + ul { + + li { + float: none; + overflow: hidden; + width: auto; + + &.selected { + border: 1px solid #eee; + + a { + background: $dark-grey; + color: $white; + + span { + background: $light-grey; + border-color: $grey; + color: $highlight; + } + } + } // close .selected + } + + li { + + a:hover, + a:focus { + background: $grey; + color: $black; + + span { + border: 1px solid $dark-grey; + } + } + } + + } + } // close .dir-navs + + .screen-content { + border-left: 1px solid $med-light-grey; + margin-left: 20%; + overflow: hidden; + padding: 0 0 $pad-lrg $pad-med; + + .subnav-filters { + margin-top: 0; + } + } + } + + // Style main navs as visual tabs effect + // if user selects options in the Customizer + // and classes are set. + // N.B This is in addition to the standalone visual tab style classes/mixin + // provided so any elements may be styled to represent tabs. + + .buddypress-wrap { + + &.bp-vertical-navs { + + .dir-navs.activity-nav-tabs, + .dir-navs.sites-nav-tabs, + .dir-navs.groups-nav-tabs, + .dir-navs.members-nav-tabs, + .main-navs.user-nav-tabs, + .main-navs.group-nav-tabs { + + @include primary-navs-vert-tabs(); + } + } + } + +} // close @media + + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_lists.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_lists.scss new file mode 100644 index 0000000000000000000000000000000000000000..019c63636ad58724cdcfc484215f684e48b8956f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_lists.scss @@ -0,0 +1,257 @@ +// BP Lists Global Styles. +// @version 3.0.0 + +// @todo decide whether using .buddypress quasi namespace parent +// is useful, causing issue with specificity on other +// lists if they do not use it. + +@include clearfix-element(".bp-list"); + +.bp-list { + + @include box-model(); + border-top: 1px solid $light-grey; + clear: both; + list-style: none; + margin: $marg-lrg 0; + padding: $pad-sml 0; + width: 100%; + + // these clearfix rules simply because the element can't be classed + li:before, + li:after { + content: " "; + display: table; + } + + li:after { + clear: both; + } + + > li { + border-bottom: 1px solid $light-grey; + } + + li { + list-style: none; + margin: $marg-sml 0; + padding: $pad-sml 0; + position: relative; + + .item-avatar { + text-align: center; + + img.avatar { + display: inline; + } + } + + .item { + + .item-avatar, + .list-title, + .item-meta, + .group-details { + text-align: center; + } + + .list-title { + clear: none; // some WP themes state clear:both + + @include responsive-font(26); + font-weight: 400; + line-height: 1.1; + margin: 0 auto; + } + } + + .meta, + .item-meta { + color: $light-text-plus; + + @include font-size(12); + margin-bottom: $marg-sml; + margin-top: $marg-sml; + } + + .last-post { + text-align: center; + } + + .action { + margin: 0; + text-align: center; + + .generic-button { + display: inline-block; + + @include font-size(12); + margin: 0 $marg-sml 0 0; + } + + // if this is a div wrapper + div.generic-button { + margin: $marg-sml 0; + } + } + + @include medium-up() { + + .item-avatar { + float: left; + margin-right: 5%; + } + + .item { + margin: 0; + overflow: hidden; + + .item-block { // element is a styling div for positional purposes only + float: left; + margin-right: 2%; + width: 50%; + } + + .list-title, + .item-meta { + float: left; + text-align: left; + } + + .group-details, + .last-post { + text-align: left; + } + } + + .group-desc, + .user-update, + .last-post { + clear: none; + overflow: hidden; + width: auto; + } + + .action { + clear: left; + padding: 0; + text-align: left; + + // if it's a ul/li wrapper + li.generic-button { + margin-right: 0; + } + + // if this is a div wrapper + div.generic-button { + margin: 0 0 $marg-sml; + } + } + + .generic-button { + display: block; + margin: 0 0 $marg-xsml 0; + } + + } // close @media + + } // close li + +} // close .bp-list + +// Ensure there's space between parent act list wrapper and filters bar +@include medium-small-up() { + + #activity-stream { + clear: both; + padding-top: $pad-med; + } +} + +.activity-list.bp-list { + + background: $off-white; + border: 1px solid $bp-border-color; + + .activity-item { + background: $white; + border: 1px solid #b7b7b7; + + @include box-shadow(0 0 6px #d2d2d2); + margin: $marg-lrg 0; + } + + li:first-child { + margin-top: 0; + } +} + +.friends-list { + list-style-type: none; +} + +.friends-request-list, +.membership-requests-list { + + .item-title { + text-align: center; + } + + @include medium-up() { + + li { + + @include flex-box-dir(); + + .item { + + @include box-item-size($grow: 1); + } + + .action { + text-align: right; + } + + .item-title { + + @include font-size(22); + text-align: left; + + h3 { + margin: 0; + } + } + } + } + +} + +#notifications-user-list { + clear: both; + padding-top: $pad-med; +} + +// If logged out we don't display action buttons +// so lets remove the margin right creating the white-space +// for the buttons - max out the item element width. +body:not(.logged-in) { + + .bp-list { + + @include medium-up() { + + .item { + margin-right: 0; + } + } + } +} + +// body class: single act items screens. +.activity-permalink { + + .item-list, + .item-list li.activity-item { + border: 0; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_members_loop.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_members_loop.scss new file mode 100644 index 0000000000000000000000000000000000000000..cf239f0520f52bff18b9da4fd70c57469f824efc --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_members_loop.scss @@ -0,0 +1,95 @@ +// BP Members loop. +// @version 3.0.0 + +.buddypress-wrap { + + .members-list { // ul + + li { + + .member-name { + margin-bottom: $marg-sml; + } + + .user-update { + border: 1px solid $light-grey; + + @include border-radius(10px); + color: $meta-text; + + font-style: italic; + + @include responsive-font(16); + margin: $marg-med auto; + padding: $pad-med; + + .activity-read-more { + + display: block; + + @include font-size(12); + font-style: normal; + margin-top: $marg-sml; + padding-left: 2px; + } + } + + @include medium-up() { + + .last-activity { + clear: left; + margin-top: -10px; + } + } + + } // close li + + } // close .members-list + + // Members group specific list + .members-group-list { + + li { + + @include medium-up() { + + .joined { + clear: left; + float: none; + } + } + } + } +} // close .buddypress-wrap + +// If logged out or if the loop item is +// current user we don't display action buttons +// so lets remove the update width making room +// for the buttons - max out the user-update width. + +body:not(.logged-in) { + + @include medium-small-up() { + + .members-list { + + .user-update { + width: 96%; + } + } + } +} + +// Is current user - i.e it's me! + +//@include medium-small-up() { +// .buddypress-wrap { + +// .members-list { + +// .is-current-user { + +// } +// } +// } +//} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_messages.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_messages.scss new file mode 100644 index 0000000000000000000000000000000000000000..6bed0cb315932904371b6ea0049a73fe4578f28d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_messages.scss @@ -0,0 +1,130 @@ +// BP Private Messages: +// messages lists, message single views, bulk actions +// @version 3.0.0 + +#message-threads { // table element + + tr.unread { + + td { + background: #fff9db; + border-bottom: 1px solid #ffe8c4; + border-top: 1px solid #ffe8c4; + font-weight: 700; + + &.thread-options, + .activity, + .thread-excerpt { + font-weight: 400; + } + + } + + span.unread-count { + background: #d00; + color: #fff; + font-weight: 700; + padding: 2px 8px; + } + + } // tr.unread + +} // close table#message-threads + +#message-thread { + + div.message-box { + margin: 0; + padding: 15px; + + } + + div.alt { + background: #f4f4f4; + } + + #message-recipients { + margin: 10px 0 20px; + } + + img.avatar { + float: left; + margin: 0 10px 0 0; + vertical-align: middle; + } + + strong { + font-size: 100%; + margin: 0; + + a { + text-decoration: none; + } + + span.activity { + margin-top: 4px; + } + } // strong + + .message-metadata { + overflow: hidden; + position: relative; + } + + .message-content { + margin-left: 45px; + } + + .message-options { + text-align: right; + } + + img.avatar { + max-width: none; + } + + .message-search { + float: right; + margin: 0 20px; + } + +} + +.message-star-actions { + position: absolute; + right: 0; + top: 0; +} + +.message-action-star, +.message-action-unstar, +.message-action-view, +.message-action-delete { + border-bottom: 0; + outline: none; + text-decoration: none; +} + +a.message-action-star { + opacity: 0.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: #aaa; + content: "\f154"; +} + +.message-action-unstar span.icon:before { + color: #fcdd77; + content: "\f155"; +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..72a6806a8a29f095fb883751a58668e84d63f347 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_navigation.scss @@ -0,0 +1,528 @@ +// BP primary & secondary navigation - directory and single screens +// @version 3.0.0 + +// all devices & generic styles sitewide +.bp-navs { + background: transparent; + clear: both; + overflow: hidden; + + ul { + margin: 0; + padding: 0; + + li { + list-style: none; + margin: 0; + } + + li.last { + + select { + max-width: 185px; + } + } + + li { + + a, + span { + border: 0; + display: block; + padding: 5px 10px; + text-decoration: none; + } + + .count { + background: $light-grey; + border: 1px solid $bp-border-dark; + border-radius: 50%; + color: $meta-text-dark; + display: inline; + + @include font-size(12); + margin-left: 2px; + padding: 3px 6px; + text-align: center; + vertical-align: middle; + } + } + + // these selected/current should apply to all navs + // if not pull out & move to end. + li.selected, + li.current { + + a { + color: $black; + opacity: 1; + } + } + + } // close ul + + &.bp-invites-filters, + &.bp-messages-filters { + + ul { + + li { + + a { + border: 1px solid $bp-border-dark; + display: inline-block; + } + } + } + } + +} // close .bp-navs + +.main-navs.dir-navs { + margin-bottom: $marg-lrg; +} + +// Primary, default current/selected states +.buddypress-wrap { + + .bp-navs { + + li.selected, + li.current, + li a:hover { + + a { + + .count { + background-color: $grey; + } + } + } + + li:not(.current), + li:not(.selected), { + + a:focus, + a:hover { + background: $grey; + color: $black; + } + } + + li.selected, + li.current { + + a, + a:focus, + a:hover { + background: $dark-grey; + color: $off-white; + } + } + } + + @include medium-up() { + + .main-navs:not(.dir-navs) { + + li.selected, + li.current { + + a { + background: $white; + color: $black; + font-weight: 600; + } + } + } + + .main-navs.vertical { // single screen navs + + li.selected, + li.current { + + a { + background: $dark-grey; + color: $off-white; + text-decoration: none; + } + } + } + + &.bp-dir-hori-nav:not(.bp-vertical-navs) { + + nav:not(.tabbed-links) { + border-bottom: 1px solid $bp-border-color; + border-top: 1px solid $bp-border-color; + + @include box-shadow( 0 2px 12px 0 $off-white); + } + } + } // close @media + + .bp-subnavs { + + li.selected, + li.current { + + a { + background: $white; + color: $black; + font-weight: 600; + } + } + } +} // close .buddypress-wrap - current & selected states. + +// visual styling of default single navs - adds background/padding to +// the parent elements if vertical nav not selected +.buddypress-wrap:not(.bp-single-vert-nav) { + + @include medium-max { + + .bp-navs { + + li { + background: $light-grey; + } + } + } + + .main-navs { + + > ul > li { + + > a { + padding: $pad-sml calc(0.5em + 2px); + } + } + } + + .user-subnav#subsubnav, + .group-subnav#subsubnav { + background: none; + } +} + +// Specifically default subnav elements +.buddypress-wrap { + + .bp-subnavs, + ul.subnav { + width: 100%; + } + + .bp-subnavs { + + margin: $marg-sml 0; + overflow: hidden; + + ul { + + li { + margin-top: 0; + + &.selected, + &.current { + + :focus, + :hover { + background: none; + color: $black; + } + } + + } + } + } + + ul.subnav { + width: auto; + } + + .bp-navs.bp-invites-nav#subnav, + .bp-navs.bp-invites-filters#subsubnav, + .bp-navs.bp-messages-filters#subsubnav { + + ul { + + li.last { + margin-top: 0; + } + } + } + +} // close .buddypress-wrap + +// Single screens object navs +// Adjusts visual styling for small screens only + +@include medium-max { + + .buddypress-wrap { + + .single-screen-navs { + border: 1px solid $bp-border-color; + + li { + border-bottom: 1px solid $bp-border-color; + + &:last-child { + border-bottom: none; + } + } + } + + .bp-subnavs { + + li { + + a { + + @include font-size(14); + } + + &.selected, + &.current { + + a, + a:focus, + a:hover { + background: $dark-grey; + color: $white; + } + } + } + } + } +} + +.buddypress_object_nav, +.buddypress-wrap { + + .bp-navs { + + li.selected, + li.current { + + a { + + .count { + background-color: $white; + } + } + } // close li + + li.dynamic, + li.dynamic.selected, + li.dynamic.current { + + a { + + .count { + background-color: $highlight; + border: 0; + color: $off-white; + } + } + } + + li.dynamic { + + a:hover { + + .count { + background-color: $highlight; + border: 0; + color: $white; + } + } + } + + li { + + a { + + .count:empty { + display: none; + } + } + } + } // bp-navs + + // Create steps current position tabs highlight + .bp-navs.group-create-links { + + ul { + + li:not(.current) { + color: $light-text; + + a { + color: $light-text; + + &:focus, + &:hover { + background: none; + color: $black; + } + } + + a[disabled] { + + &:focus, + &:hover { + color: $light-text; + } + } + } + + li.current { + + a { + text-align: center; + } + } + } + } +} + +.buddypress-wrap { + + // position our nav elements at larger screen widths + + @include medium-up() { + + .bp-navs { + + li { // set the list links of all navs to shrinkwrap/width auto + float: left; + } + } + + .subnav { + float: left; + } + + ul.subnav { + width: auto; + } + + // user screen last filter + #subsubnav { + + .activity-search { + float: left; + } + + .filter { + float: right; + } + } + + } // close @media + +} // close .buddypress-wrap + + +// Just buddypress_object_nav rules +.buddypress_object_nav { + + .bp-navs { + + li { + + a { + + .count { + display: inline-block; + float: right; + } + } + } + + } +} + +// Directory screens vertical nav rules + +@include medium-up() { + + // the top level class activating vert layout + .bp-dir-vert-nav { + + .bp-navs.dir-navs { + background: none; + + a { + + .count { + float: right; + + } + } + } + } +} + +// Tabbed links + +// Our tabbed links are pulled in via a mixin +// UL parent element must have 'tabbed-links' added and the ul 'button-tabs' +// medium screens up + +.buddypress-wrap { + + @include medium-up { + + // Profile group labels links + // Button navigation as tabbed effect for wide screen + + @include tabbed-links(); + + .bp-navs.tabbed-links { + background: none; + margin-top: 2px; + + &.main-navs { + + } + + // For tabbed nav we remove any default button nav styles. + ul { + + li { + + a { + border-right: 0; + font-size: inherit; + } + } + + li.last { + float: right; + margin: 0; + + a { + margin-top: -0.5em; + } + } + + li, + li.current { + + a, + a:focus, + a:hover { + background: none; + border: 0; + } + + a:active { + outline: none; + } + } + } + } // close .bp-navs.tabbed-links + } // @media +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_pagination.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_pagination.scss new file mode 100644 index 0000000000000000000000000000000000000000..0e24aa20fcdc02ad444552b314f8aa5f31818a79 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_pagination.scss @@ -0,0 +1,47 @@ +// BP pagination - generic styling for all screens +// @version 3.0.0 +.buddypress-wrap { + + .bp-pagination { + + background: transparent; + border: 0; + color: $light-text; + float: left; + font-size: small; + margin: 0; + padding: $pad-sml 0; + position: relative; + width: 100%; + + .pag-count { + float: left; + } + + .bp-pagination-links { + float: right; + margin-right: $marg-sml; + + span, + a { + font-size: small; + padding: 0 5px; + } + + } + + .bp-pagination-links { + + a:focus, + a:hover { + opacity: 1; + } + } + + p { + margin: 0; + } + + } // close .bp-pagination + +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_registration.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_registration.scss new file mode 100644 index 0000000000000000000000000000000000000000..7ba78f3931887130ef624be46ed03895d9f01c68 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_registration.scss @@ -0,0 +1,118 @@ +// Registration Screen +// Styles the registration index.php form and elements. +// @version 3.0.0 + +.register-page { + + .register-section { + + @include box-model(); + } + + .signup-form { + margin-top: $marg-lrg; + + .default-profile { + + input { + margin-bottom: $marg-lrg; + } + } + + label, + legend { + margin: $marg-sml 0 0; + } + + // profile extra element wrapper + .editfield { + margin: $marg-med 0; + + fieldset { + border: 0; + padding: 0; + + legend { + margin: 0 0 5px; + text-indent: 0; + } + } + + .field-visibility-settings { + padding: $pad-sml; + + fieldset { + margin: 0 0 $marg-sml; + } + } + } // editfield + + #signup-avatar img { + margin: 0 $marg-med $marg-sml 0; + } + + .password-entry, + .password-entry-confirm { + border: 1px solid $bp-border-color; + } + } // close .signup-form + +} // close .register-page + +// Flex layout containers for registration sections + +@include medium-up() { + + .buddypress-wrap { + + .register-page { + + .layout-wrap { + display: flex; + flex-flow: row wrap; + justify-content: space-around; + + .default-profile { + flex: 1; + padding-right: $pad-lrg; + } + + .blog-details { + flex: 1; + padding-left: $pad-lrg; + } + } + + .submit { + clear: both; + } + + } + } +} + +// have we got extended profiles to factor in, +// if so we'll adjust the child item elements. + +@include medium-up() { + + .buddypress-wrap.extended-default-reg { + + .register-page { + + .default-profile { + flex: 1; + padding-right: $pad-med; + } + + .extended-profile { + flex: 2; + padding-left: $pad-med; + } + + .blog-details { + flex: 1 100%; + } + } + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..706acbe58fdcfa8301626d0d8df522131f9829a6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_search.scss @@ -0,0 +1,131 @@ +// BP Directory Search elements +// @version 3.0.0 + +.buddypress-wrap { // the ID is required to add weight to rules + + @include clearfix-element(".bp-dir-search-form, .bp-messages-search-form"); + + form.bp-dir-search-form, + form.bp-messages-search-form, + form.bp-invites-search-form { + border: 1px solid $bp-border-color; + + width: 100%; + + @include medium-lrg-up() { + width: 15em; + } + + label { + margin: 0; + } + + input[type="search"], + input[type="text"], + button[type="submit"] { + background: none; + border: 0; + + @include border-radius(0); + } + + input[type="search"], + input[type="text"] { + float: left; + line-height: 1.5; + padding: 3px 10px; + width: 80%; + } + + button[type="submit"] { + float: right; + font-size: inherit; + font-weight: 400; + line-height: 1.5; + padding: 3px 0.7em; + text-align: center; + text-transform: none; + width: 20%; + + span { + font-family: dashicons; + + @include font-size(18); + line-height: 1.6; + } + } + + button[type="submit"].bp-show { + + @include show(); + } + + input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: searchfield-cancel-button; + } + + input[type="search"]::-webkit-search-results-button, + input[type="search"]::-webkit-search-results-decoration { + display: none; + } + + } // close form + + // this block needs to be moved really. + ul.filters { + + li { + + form { + + label { + + input { + line-height: 1.4; + padding: 0.1em 0.7em; + } + } + } + } + } + + .current-member-type { + font-style: italic; + } + + .dir-form { + clear: both; + } + +} // close .buddypress-wrap + +// If js disabled ensure we show the submit overriding earlier rule +// @todo the whole show/hide could be wrapped in a :not(.no-js) +.budypress.no-js { + + form.bp-dir-search-form { + + button[type="submit"] { + + @include show(); + } + } +} + +// Try and apply correct tweaks for group/user screens search + +.bp-user { + + [data-bp-search] { + + form { + + input[type="search"], + input[type="text"] { + padding: 6px 10px 7px; + } + + } + } +} + 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 new file mode 100644 index 0000000000000000000000000000000000000000..0ea1dcf56ea12ac692a528e48c7e374567d5f465 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tables.scss @@ -0,0 +1,199 @@ +// BP default/generic Table styles. +// @version 3.0.0 +.buddypress-wrap { + + .bp-tables-user, + table.wp-profile-fields, + table.forum { + width: 100%; + } + + .bp-tables-user, + table.wp-profile-fields, + table.forum { + + thead { + + tr { + background: none; + border-bottom: 2px solid $bp-border-dark; + } + } + + tbody { + + tr { + background: $off-white; + } + } + + } + + .bp-tables-user, + table.wp-profile-fields, + table.forum { + + tr { + + th, + td { + padding: $pad-sml; + vertical-align: middle; + } + } + } + + .bp-tables-user, + table.wp-profile-fields, + table.forum { + + tr { + + td.label { + border-right: 1px solid $light-grey; + font-weight: 600; + width: 25%; + } + } + } + + .bp-tables-user, + table.wp-profile-fields, { + + tr.alt { + + td { + background: $off-white; + } + } + } + + + table.profile-fields { + + .data { + padding: $pad-sml $pad-med; + } + + tr:last-child { + border-bottom: none; + } + } + + // Set various tables th/td cell sizes + table.notifications { + + // Increase the cell padding to give better separation of lines + // when some text lines wrap + + td { + padding: $pad-med $pad-sml; + } + + .bulk-select-all, + .bulk-select-check { + width: 7%; + } + + .bulk-select-check { + vertical-align: middle; + } + + .title, + .notification-description, + .date, + .notification-since { + width: 39%; + } + + .actions, + .notification-actions { + width: 15%; + } + } + + table.notification-settings, + table.profile-settings { + + th.title { + width: 80%; + } + } + // end cell sizings + + table.notifications { + + .notification-actions { + + a.delete, + a.mark-read { + display: inline-block; + } + } + } + + table.notification-settings { + margin-bottom: $marg-med; + text-align: left; + } + + #groups-notification-settings { + margin-bottom: 0; + } + + table.notifications, + table.notification-settings { + + th.icon, + td:first-child { + display: none; + } + } + + table.notification-settings { + + .no, + .yes { + text-align: center; + width: 40px; + vertical-align: middle; + } + } + + table#message-threads { + clear: both; + + .thread-info { + min-width: 40%; + + p { + margin: 0; + } + + p.thread-excerpt { + color: $form-text; + + @include font-size(12); + margin-top: 3px; + } + } + } + + table.profile-fields { + margin-bottom: 20px; + + &:last-child { + margin-bottom: 0; + } + } + + table.profile-fields p { + margin: 0; + + &:last-child { + margin-top: 0; + } + } + +} // close .buddypress-wrap + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tooltips.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tooltips.scss new file mode 100644 index 0000000000000000000000000000000000000000..35ace8e1b7138e30d0b105528809be3392bc0894 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_tooltips.scss @@ -0,0 +1,112 @@ +// BuddyPress Tooltips +// @version 3.0.0 + +[data-bp-tooltip] { + position: relative; + + // Removed :before + &:after { + background-color: $tooltip-background; + display: none; + opacity: 0; + position: absolute; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + visibility: hidden; + } + + // BP Tooltip body and text + &:after { + border: 1px solid $tooltip-border; + border-radius: $tooltip-border-radius; + box-shadow: $tooltip-box-shadow; + color: $tooltip-text-color; + content: attr(data-bp-tooltip); + font-family: $tooltip-font-family; + font-size: $tooltip-font-size; + font-weight: $tooltip-font-weight; + letter-spacing: normal; + line-height: 1.25; + max-width: $tooltip-max-width; + padding: $tooltip-padding-vert $tooltip-padding-hor; + pointer-events: none; + text-shadow: none; + text-transform: none; + -webkit-transition: all 1.5s ease; + -ms-transition: all 1.5s ease; + transition: all 1.5s ease; + white-space: nowrap; + word-wrap: break-word; + z-index: $tooltip-z-index; + } + + // BP Tooltip arrow tip - removed :before + + &:hover, + &:active, + &:focus { + + // Removed :before + &:after { + + display: block; + opacity: 1; + overflow: visible; + visibility: visible; + } + } +} + +[data-bp-tooltip=""] { + display: none; + opacity: 0; + visibility: hidden; +} + +// Bottom Centered Tooltip - Default + +.bp-tooltip { + + @include bp-tooltip-default; +} + +// Bottom Left Tooltip for mobile and Bottom Right Tooltip for tablet/desktop + +.user-list .bp-tooltip { + + @include bp-tooltip-bottom-left; + + @include medium-up() { + + @include bp-tooltip-bottom-right; + } +} + +// Bottom Left Tooltip + +.activity-list .bp-tooltip, +.activity-meta-action .bp-tooltip, +.notification-actions .bp-tooltip, +.participants-list .bp-tooltip { + + @include bp-tooltip-bottom-left; +} + +// Bottom Right Tooltip + +.bp-invites-content .bp-tooltip, +.message-metadata .actions .bp-tooltip, +.single-message-thread-header .actions .bp-tooltip { + + @include bp-tooltip-bottom-right; +} + +.bp-invites-content #send-invites-editor .bp-tooltip { + + // override .bp-invites-content .bp-tooltip + &:after { + left: 0; + right: auto; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_update_form.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_update_form.scss new file mode 100644 index 0000000000000000000000000000000000000000..c0b05851789152a641b6cc2e8a11c5b161961e23 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_update_form.scss @@ -0,0 +1,149 @@ +// BP Whats new form handles user updates to groups or profiles +// @version 3.0.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 $bp-border-dark; + + @include box-shadow( inset 0 0 6px #eee); + + margin: $marg-med 0; + + #whats-new-avatar { + margin: $marg-sml 0; + text-align: center; + + img { + box-shadow: none; + display: inline-block; + } + } + + // these ID's need replacing with this! + //.content-wrap { // #whats-new-content + + #whats-new-content { + padding: 0 0 $marg-lrg 0; + } + + // these ID's need replacing with this! + //.textarea-wrap { // #whats-new-textarea + + #whats-new-textarea { + + textarea { + background: $textarea-bck; + + @include box-model(); + color: #333; + font-family: inherit; + font-size: medium; + height: 2.2em; + line-height: 1.4; + padding: 6px; + width: 100%; + + &:focus { + + @include box-shadow(0 0 6px 0 $med-light-grey); + } + } + } + + #whats-new-post-in-box { + margin: $marg-sml 0; + + #whats-new-post-in-box-items { + list-style: none; + margin: $marg-sml 0; + + li { + margin-bottom: $marg-sml; + } + + #activity-autocomplete { + padding: 0.3em; + } + + .bp-activity-object { + + @include center-vert(); + padding: 0.2em; + + .avatar { + width: 30px; + } + + span { + padding-left: $marg-sml; + vertical-align: middle; + } + + &:focus, + &:hover { + background: $light-grey; + cursor: pointer; + } + + &.selected { + border: 1px solid $med-light-grey; + } + } + } + + } + + #whats-new-submit { + margin: $marg-med 0 $marg-sml; + + input { + + @include font-size(14); + line-height: inherit; + margin-bottom: $marg-sml; + margin-right: $marg-sml; + padding: 0.2em 0; + text-align: center; + width: 100%; + } + } + + @include medium-up() { + + #whats-new-avatar { + display: block; + float: left; + margin: 0; + } + + #whats-new-content, + #whats-new-post-in-box, + #whats-new-submit { + margin-left: 8.5%; + + } + + #whats-new-submit { + + input { + margin-bottom: 0; + margin-right: $marg-sml; + width: 8em; + } + } + } // close @media +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..4b8449dd0a14e5ee8b58b8877640f970131414c9 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss @@ -0,0 +1,20 @@ +// BP Single User Specific Header Styles +// @version 3.0.0 + +.bp-user { + + .users-header { + + .user-nicename { + margin-bottom: $marg-xsml; + } + } + + .member-header-actions { + overflow: hidden; + + * > * { + display: block; + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_profile.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_profile.scss new file mode 100644 index 0000000000000000000000000000000000000000..b6337cd096a6ffff99c9f738791e619d099c39a5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_profile.scss @@ -0,0 +1,238 @@ +// BP User Profiles screen +// @version 3.0.0 +// +// 0/ General :) +// 1/ Profile Edit +// 2/ Profile Public Display +// 3/ Profile Photo + +// General + +.buddypress-wrap { + + .profile { + margin-top: $marg-xlrg; + } + + .public { + + .profile-fields { + + td.label { + width: 30%; + } + } + } + +} + +// Edit Screen + +.buddypress-wrap { + + .profile.edit { + + // The groups tabs + .button-nav { + list-style: none; + margin: $marg-xlrg 0 $marg-sml; + + li { + display: inline-block; + margin-right: $marg-sml; + + a { + + @include font-size(18); + } + } + } + + .editfield { + background: $off-white; + border: 1px solid $bp-border-color; + margin: $marg-med 0; + padding: $pad-med; + + fieldset { + border: 0; + + label { + font-weight: 400; + + &.xprofile-field-label { + display: inline; + } + } + } + } + + // The visual layout of the form controls and group description + .editfield { + display: flex; + flex-direction: column; + + .description { + margin-top: $marg-sml; + order: 2; + } + + > fieldset { + order: 1; + } + + .field-visibility-settings-toggle, + .field-visibility-settings { + order: 3; + } + } + + } // .profile +} // close .buddypress-wrap + +body.no-js { + + .buddypress-wrap .field-visibility-settings-toggle, + .buddypress-wrap .field-visibility-settings-close { + display: none; + } + + .buddypress-wrap .field-visibility-settings { + display: block; + } +} + +.buddypress-wrap { + + .field-visibility-settings { + margin: $marg-sml 0; + } + + .current-visibility-level { + font-style: normal; + font-weight: 700; + } + + .field-visibility-settings, + .field-visibility-settings-header { + color: $light-text-plus; + } + + .field-visibility-settings { + + fieldset { + margin: $marg-xsml 0; + } + } + + .standard-form { // this needs to be a specific profile edit form class + + .editfield { + + fieldset { + margin: 0; + } + } + + .field-visibility-settings { + + label { + font-weight: 400; + margin: 0; + } + + .radio { + list-style: none; + margin-bottom: 0; + } + + .field-visibility-settings-close { + + @include font-size(12); + } + } + + .wp-editor-container { + border: 1px solid #dedede; + + textarea { + background: $white; + width: 100%; + } + } + + // field item description + .description { + background: $off-white; + font-size: inherit; + } + + .field-visibility-settings legend, + .field-visibility-settings-header { + font-style: italic; + } + + .field-visibility-settings-header { + + @include font-size(14); + } + + .field-visibility-settings { + + legend, + label { + + @include font-size(14); + } + } + + .field-visibility select { + margin: 0; + } + + } // close .standard-form + + .html-active button.switch-html { + background: #f5f5f5; + border-bottom-color: transparent; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + + .tmce-active button.switch-tmce { + background: #f5f5f5; + border-bottom-color: transparent; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + } + +} // close .buddypress-wrap + +// Public Profile + +.buddypress-wrap { + + .profile.public { + + .profile-group-title { + border-bottom: 1px solid $bp-border-dark; + } + } +} + +// This needs to be reviewed and re-located!? +body.register .buddypress-wrap .page ul { + list-style: none; +} + +// Avatars & Cover Image + +.buddypress-wrap { + + .profile { + + .bp-avatar-nav { + margin-top: $marg-lrg; + } + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss new file mode 100644 index 0000000000000000000000000000000000000000..ef49f7be44fbe63bbbb5d2036f77374fd4d7732b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_user_settings.scss @@ -0,0 +1,43 @@ +// BP User settings screens +// @version 3.0.0 + +// 1. Settings Global +// 1. General (email/password change) +// 2. Email notifications +// 3. Profile visibility +// 4. group Invites + +// Settings Global + +/*__ Settings Global __*/ + +// required extra specificity to override later table settings +.buddypress.settings { + + .profile-settings.bp-tables-user { + + select { + width: 100%; + } + } + +} + + +// General + +/*__ General __*/ + + +// Email notifications + +/*__ Email notifications __*/ + + +// Profile visibility + +/*__ Profile visibility __*/ + +// Group Invites + +/*__ Group Invites __*/ diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_widgets.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_widgets.scss new file mode 100644 index 0000000000000000000000000000000000000000..62e4938155f40f05431d2ca80c1f46fcc7793d40 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/common-styles/_bp_widgets.scss @@ -0,0 +1,130 @@ +// BP Widgets +// @version 3.0.0 + +.buddypress.widget { + + .item-options { + + @include font-size(14); + } + + ul.item-list { + + @include flex-box-dir($flex-dir: column); + + @include medium-small-up() { + + @include flex-box-dir($flex-dir: row, $flex-wrap: wrap); + } + + list-style: none; + margin: $marg-sml -2%; + overflow: hidden; + + li { + border: 1px solid $bp-border-color; + + @include flex-align(); + @include box-item-size($grow: 1, $basis: 46%); + + @include large-up() { + + @include box-item-size($grow: 0, $basis: 20%); + } + + margin: 2%; + + .item-avatar { + padding: $pad-sml; + text-align: center; + + .avatar { + width: 60%; + } + } + + .item { + padding: 0 $pad-sml $pad-sml; + + + .item-meta { + + @include font-size(12); + overflow-wrap: break-word; + } + } + } // close li + } + + .activity-list { + padding: 0; + + blockquote { + margin: 0 0 1.5em; + overflow: visible; + padding: 0 0 0.75em 0.75em; + } + + img { + margin-bottom: 0.5em; + } + } + + .avatar-block { + + @include flex-box-dir($flex-dir: row, $flex-wrap: wrap); + + img { + margin-bottom: 1em; + margin-right: 1em; + } + } +} + + +// Are we in a main site sidebar? +// while hard to tell width assume that +// at large width it's narrow & +// adjust the li widths & margins to % +// & flex basis to auto for large up. +// @todo this may need reviewing & adjusting. + +// WP default themes use the class '.widget-area' +// as a naming convention for the main sidebar +// this is the best we can know & style on this class +.widget-area { + + .buddypress.widget { + + ul.item-list { + + li { + + @include box-item-size($grow: 0, $basis: 46%); + margin: 2% 2% 10px; + + @include large-up { + + .avatar { + width: 100%; + } + } + } + } + + @include large-up() { + + ul.item-list { + margin: $marg-sml -2%; + width: 100%; + + li { + + @include box-item-size($grow: 0, $basis: auto); + margin: $marg-sml 2% 1%; + width: 46%; + } + } + } + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..f1b37b44b8f37d1db7acb92f8b17153b03d78e0c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.css @@ -0,0 +1,5284 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Nouveau stylesheet. + +@version 3.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 +*------------------------------------------------------------------------------- +*/ +body #buddypress * a { + box-shadow: none; + text-decoration: none; +} + +body #buddypress #item-body blockquote, +body #buddypress .bp-lists blockquote { + margin-right: 10px; +} + +body #buddypress .bp-list .action { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@media screen and (min-width: 46.8em) { + body.buddypress .entry-header, + body.buddypress .site-content .entry-header, + body.buddypress .entry-content { + max-width: none; + } + body.buddypress .entry-header { + float: none; + max-width: none; + } + body.buddypress .entry-content { + float: none; + max-width: none; + } + body.buddypress .site-content { + padding-top: 2.5em; + } + body.buddypress #page #primary { + max-width: none; + } + body.buddypress #page #primary .entry-header, + body.buddypress #page #primary .entry-content { + 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; +} + +/* Ensure .bp-wrap encloses it's children */ +.bp-wrap:before, +.bp-wrap:after { + content: " "; + display: table; +} + +.bp-wrap:after { + clear: both; +} + +.buddypress-wrap.round-avatars .avatar { + border-radius: 50%; +} + +div, +dl, +li, +textarea, +select, +input[type="search"], +input[type="submit"], +input[type="reset"] { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; +} + +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 .mini .activity-header, +.buddypress-wrap .acomment-meta { + 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; + } +} + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ +.bp-navs { + background: transparent; + 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.selected a, +.bp-navs ul li.current 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.selected a .count, +.buddypress-wrap .bp-navs li.current a .count, +.buddypress-wrap .bp-navs li a:hover 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.selected a, +.buddypress-wrap .bp-navs li.selected a:focus, +.buddypress-wrap .bp-navs li.selected a:hover, +.buddypress-wrap .bp-navs li.current a, +.buddypress-wrap .bp-navs li.current a:focus, +.buddypress-wrap .bp-navs li.current a:hover { + background: #555; + color: #fafafa; +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .main-navs:not(.dir-navs) li.selected a, + .buddypress-wrap .main-navs:not(.dir-navs) li.current a { + background: #fff; + color: #333; + font-weight: 600; + } + .buddypress-wrap .main-navs.vertical li.selected a, + .buddypress-wrap .main-navs.vertical li.current 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; + -webkit-box-shadow: 0 2px 12px 0 #fafafa; + -moz-box-shadow: 0 2px 12px 0 #fafafa; + box-shadow: 0 2px 12px 0 #fafafa; + } +} + +.buddypress-wrap .bp-subnavs li.selected a, +.buddypress-wrap .bp-subnavs li.current 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: 0.5em calc(0.5em + 2px); +} + +.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav, +.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav { + background: none; +} + +.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.selected :focus, +.buddypress-wrap .bp-subnavs ul li.selected :hover, .buddypress-wrap .bp-subnavs ul li.current :focus, +.buddypress-wrap .bp-subnavs ul li.current :hover { + background: none; + color: #333; +} + +.buddypress-wrap ul.subnav { + width: auto; +} + +.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last, +.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav 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.selected a, + .buddypress-wrap .bp-subnavs li.selected a:focus, + .buddypress-wrap .bp-subnavs li.selected a:hover, .buddypress-wrap .bp-subnavs li.current a, + .buddypress-wrap .bp-subnavs li.current a:focus, + .buddypress-wrap .bp-subnavs li.current a:hover { + background: #555; + color: #fff; + } +} + +.buddypress_object_nav .bp-navs li.selected a .count, +.buddypress_object_nav .bp-navs li.current a .count, +.buddypress-wrap .bp-navs li.selected a .count, +.buddypress-wrap .bp-navs li.current a .count { + background-color: #fff; +} + +.buddypress_object_nav .bp-navs li.dynamic a .count, +.buddypress_object_nav .bp-navs li.dynamic.selected a .count, +.buddypress_object_nav .bp-navs li.dynamic.current a .count, +.buddypress-wrap .bp-navs li.dynamic a .count, +.buddypress-wrap .bp-navs li.dynamic.selected a .count, +.buddypress-wrap .bp-navs li.dynamic.current a .count { + background-color: #5087e5; + border: 0; + color: #fafafa; +} + +.buddypress_object_nav .bp-navs li.dynamic a:hover .count, +.buddypress-wrap .bp-navs li.dynamic a:hover .count { + background-color: #5087e5; + border: 0; + color: #fff; +} + +.buddypress_object_nav .bp-navs li a .count:empty, +.buddypress-wrap .bp-navs li a .count:empty { + display: none; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current), +.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) { + color: #767676; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a, +.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a { + color: #767676; +} + +.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, +.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 { + background: none; + color: #333; +} + +.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, +.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 { + color: #767676; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li.current a, +.buddypress-wrap .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: none; + } + .bp-dir-vert-nav .bp-navs.dir-navs a .count { + float: left; + } +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .tabbed-links ul, + .buddypress-wrap .tabbed-links ol { + border-bottom: 1px solid #ccc; + float: none; + margin: 20px 0 10px; + } + .buddypress-wrap .tabbed-links ul:before, .buddypress-wrap .tabbed-links ul:after, + .buddypress-wrap .tabbed-links ol:before, + .buddypress-wrap .tabbed-links ol:after { + content: " "; + display: block; + } + .buddypress-wrap .tabbed-links ul:after, + .buddypress-wrap .tabbed-links ol:after { + clear: both; + } + .buddypress-wrap .tabbed-links ul li, + .buddypress-wrap .tabbed-links ol li { + float: right; + list-style: none; + margin: 0 0 0 10px; + } + .buddypress-wrap .tabbed-links ul li a, + .buddypress-wrap .tabbed-links ul li span:not(.count), + .buddypress-wrap .tabbed-links ol li a, + .buddypress-wrap .tabbed-links ol li span:not(.count) { + background: none; + border: none; + display: block; + padding: 4px 10px; + } + .buddypress-wrap .tabbed-links ul li a:focus, + .buddypress-wrap .tabbed-links ul li a:hover, + .buddypress-wrap .tabbed-links ol li a:focus, + .buddypress-wrap .tabbed-links ol li a:hover { + background: none; + } + .buddypress-wrap .tabbed-links ul li:not(.current), + .buddypress-wrap .tabbed-links ol li:not(.current) { + margin-bottom: 2px; + } + .buddypress-wrap .tabbed-links ul li.current, + .buddypress-wrap .tabbed-links ol 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 0.5em 1px; + } + .buddypress-wrap .tabbed-links ul li.current a, + .buddypress-wrap .tabbed-links ol li.current a { + background: none; + color: #333; + } + .buddypress-wrap .bp-subnavs.tabbed-links > ul { + margin-top: 0; + } + .buddypress-wrap .bp-navs.tabbed-links { + background: none; + 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: -0.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: none; + border: 0; + } + .buddypress-wrap .bp-navs.tabbed-links ul li a:active, + .buddypress-wrap .bp-navs.tabbed-links ul li.current a:active { + outline: none; + } +} + +.buddypress-wrap .dir-component-filters .filter label { + display: inline; +} + +.buddypress-wrap .subnav-filters:before, +.buddypress-wrap .subnav-filters:after { + content: " "; + display: table; +} + +.buddypress-wrap .subnav-filters:after { + clear: both; +} + +.buddypress-wrap .subnav-filters { + background: none; + 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 select, +.buddypress-wrap .subnav-filters div input[type="search"] { + font-size: 16px; +} + +.buddypress-wrap .subnav-filters div button.nouveau-search-submit { + padding: 5px 0.8em 6px; +} + +.buddypress-wrap .subnav-filters div button#user_messages_search_submit { + padding: 7px 0.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:before, +.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after { + 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: none; + 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 .subnav-search, + .buddypress-wrap .subnav-filters .subnav-search form, + .buddypress-wrap .subnav-filters .feed, + .buddypress-wrap .subnav-filters .bp-search, + .buddypress-wrap .subnav-filters .dir-search, + .buddypress-wrap .subnav-filters .user-messages-bulk-actions, + .buddypress-wrap .subnav-filters .user-messages-search, + .buddypress-wrap .subnav-filters .group-invites-search, + .buddypress-wrap .subnav-filters .group-act-search { + float: right; + } + .buddypress-wrap .subnav-filters .last, + .buddypress-wrap .subnav-filters .component-filters { + float: left; + margin-top: 0; + width: auto; + } + .buddypress-wrap .subnav-filters .last select, + .buddypress-wrap .subnav-filters .component-filters 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; +} + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ +.buddypress-wrap .bp-pagination { + background: transparent; + border: 0; + color: #767676; + float: right; + font-size: small; + margin: 0; + padding: 0.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 span, +.buddypress-wrap .bp-pagination .bp-pagination-links a { + 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; +} + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ +.bp-list:before, +.bp-list:after { + content: " "; + display: table; +} + +.bp-list:after { + clear: both; +} + +.bp-list { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-top: 1px solid #eaeaea; + clear: both; + list-style: none; + margin: 20px 0; + padding: 0.5em 0; + width: 100%; +} + +.bp-list li:before, +.bp-list li:after { + 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: 0.5em 0; + position: relative; +} + +.bp-list li .item-avatar { + text-align: center; +} + +.bp-list li .item-avatar img.avatar { + display: inline; +} + +.bp-list li .item .item-avatar, +.bp-list li .item .list-title, +.bp-list li .item .item-meta, +.bp-list li .item .group-details { + 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 .meta, +.bp-list li .item-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 .list-title, + .bp-list li .item .item-meta { + 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 .user-update, + .bp-list li .last-post { + 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; + -webkit-box-shadow: 0 0 6px #d2d2d2; + -moz-box-shadow: 0 0 6px #d2d2d2; + 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: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + } + .friends-request-list li .item, + .membership-requests-list li .item { + -webkit-flex: 1 1 auto; + -moz-flex: 1 1 auto; + -ms-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; +} + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ +.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; + -webkit-box-shadow: inset 0 0 6px #eee; + -moz-box-shadow: inset 0 0 6px #eee; + 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; +} + +.activity-update-form #whats-new-content { + padding: 0 0 20px 0; +} + +.activity-update-form #whats-new-textarea textarea { + background: #fff; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 { + -webkit-box-shadow: 0 0 6px 0 #d6d6d6; + -moz-box-shadow: 0 0 6px 0 #d6d6d6; + 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; +} + +.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 #activity-autocomplete { + padding: 0.3em; +} + +.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; + padding: 0.2em; +} + +.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar { + width: 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: 0.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: 8.5%; + } + .activity-update-form #whats-new-submit input { + margin-bottom: 0; + margin-left: 10px; + width: 8em; + } +} + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ +.activity-list { + padding: 0.5em; +} + +.activity-list .activity-item:before, +.activity-list .activity-item:after { + 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 auto; + text-align: center; + width: auto; +} + +.activity-list .activity-item.mini .activity-avatar img.avatar, +.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic { + /* stylelint-disable-line selector-class-pattern */ + 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.avatar, + .activity-list .activity-item.mini .activity-avatar img.FB_profile_pic { + /* stylelint-disable-line selector-class-pattern */ + 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_mentions_activity, .activity-list .activity-item.newest_friends_activity, .activity-list .activity-item.newest_groups_activity, .activity-list .activity-item.newest_blogs_activity { + background: rgba(31, 179, 221, 0.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 blockquote, +.activity-list .activity-item .activity-inreplyto .activity-inner { + background: none; + 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: bottom; +} + +.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: transparent; +} + +.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: none; +} + +.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: none; + 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: 0.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; + -webkit-box-shadow: 0 0 6px 0 #eaeaea; + -moz-box-shadow: 0 0 6px 0 #eaeaea; + 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%; +} + +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: 0.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-content { + margin-left: 10px; + } + body.activity-permalink .activity-list .activity-content .activity-header p { + text-align: right; + } +} + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ +.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-meta, +.buddypress-wrap .activity-comments .acomment-content p { + 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: 0.5em 1em; +} + +.buddypress-wrap .activity-comments .acomment-content p { + margin-bottom: 0.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: none; + 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: 0.5em; +} + +.buddypress-wrap .activity-comments .show-all button span { + text-decoration: none; +} + +.buddypress-wrap .activity-comments .show-all button:hover span, .buddypress-wrap .activity-comments .show-all button:focus span { + color: #5087e5; +} + +.buddypress-wrap .mini .activity-comments { + clear: both; + margin-top: 0; +} + +body.activity-permalink .activity-comments { + background: none; + width: auto; +} + +body.activity-permalink .activity-comments > ul { + padding: 0 1em 0 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 0.5em; + overflow: hidden; +} + +form.ac-form .ac-reply-content .ac-textarea textarea { + background: transparent; + box-shadow: none; + color: #555; + font-family: inherit; + font-size: 100%; + height: 60px; + margin: 0; + outline: none; + padding: 0.5em; + width: 100%; +} + +form.ac-form .ac-reply-content .ac-textarea textarea:focus { + -webkit-box-shadow: 0 0 6px #d6d6d6; + -moz-box-shadow: 0 0 6px #d6d6d6; + 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; +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ +@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; + } +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Groups Loop +*---------------------------------------------------------- +*/ +.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; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + 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 0.5em; +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .groups-list li .item { + margin-left: 0; + } + .buddypress-wrap .groups-list li .list-title, + .buddypress-wrap .groups-list li .item-meta { + 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.three .group-desc, .buddypress-wrap .groups-list.grid.four .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%; + } +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Members Loop +*---------------------------------------------------------- +*/ +.buddypress-wrap .members-list li .member-name { + margin-bottom: 10px; +} + +.buddypress-wrap .members-list li .user-update { + border: 1px solid #eaeaea; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + 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%; + } +} + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ +.register-page .register-section { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 0.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 .password-entry, +.register-page .signup-form .password-entry-confirm { + border: 1px solid #eee; +} + +@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 { + 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%; + } +} + +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ +#group-create-body { + padding: 0.5em; +} + +#group-create-body .creation-step-name { + text-align: center; +} + +#group-create-body .avatar-nav-items { + margin-top: 15px; +} + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ +.single-headers:before, +.single-headers:after { + 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; +} + +.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 .group-status, +.single-headers .activity { + 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 div#message p, +.single-headers #sitewide-notice 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: 0.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 div.generic-button, + .single-headers a.button, + .single-headers li.generic-button { + float: right; + } +} + +.single-headers div.generic-button, +.single-headers a.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: 0.8; +} + +body.no-js .single-item-header .js-self-profile-button { + display: none; +} + +/* +* Default required cover image rules +*/ +#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; +} + +/* +* end cover image block +*/ +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ +.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 { + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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; + -webkit-box-shadow: inset 0 0 9px #ccc; + -moz-box-shadow: inset 0 0 9px #ccc; + box-shadow: inset 0 0 9px #ccc; + padding: 1em; + text-align: right; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ +.bp-user .users-header .user-nicename { + margin-bottom: 5px; +} + +.bp-user .member-header-actions { + overflow: hidden; +} + +.bp-user .member-header-actions * > * { + display: block; +} + +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ +.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; +} + +.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry { + padding-right: 0.5em; +} + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ +.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; +} + +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ +.buddypress-wrap .group-status-type ul { + margin: 0 20px 20px 0; +} + +.groups-manage-members-list { + padding: 0.5em 0; +} + +.groups-manage-members-list dd { + margin: 0; + padding: 1em 0; +} + +.groups-manage-members-list .section-title { + background: #eaeaea; + padding-right: 0.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: 0.5em 0.3em 0.3em; +} + +.groups-manage-members-list ul li:only-child, +.groups-manage-members-list ul li:last-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:before, +.groups-manage-members-list ul .members-manage-buttons:after { + 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; + } +} + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ +/* + * bp-nouveau styling: invite members, sent invites + * @version 3.0.0 + */ +.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 { + -webkit-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); + -moz-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); + box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); +} + +.buddypress .bp-invites-content .item-list .item-meta span, +.buddypress .bp-invites-content .group-inviters li { + color: #767676; +} + +.buddypress .bp-invites-content li ul.group-inviters { + clear: both; + margin: 0; + overflow: hidden; +} + +.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:before, +.buddypress .bp-invites-content #send-invites-editor ul:after { + 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: 0.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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #eaeaea; + float: right; + padding-right: 0.5em; + padding-left: 0.5em; + width: 49.5%; + } + .buddypress .bp-invites-content ul.item-list > li:nth-child(odd) { + margin-left: 0.5%; + } + .buddypress .bp-invites-content ul.item-list > li:nth-child(even) { + margin-right: 0.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; + } +} + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ +.buddypress.groups .activity-update-form { + margin-top: 0; +} + +/** +*----------------------------------------------------- +* @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-wrap .profile { + margin-top: 30px; +} + +.buddypress-wrap .public .profile-fields td.label { + width: 30%; +} + +.buddypress-wrap .profile.edit .button-nav { + list-style: none; + margin: 30px 0 10px; +} + +.buddypress-wrap .profile.edit .button-nav li { + display: inline-block; + margin-left: 10px; +} + +.buddypress-wrap .profile.edit .button-nav li a { + font-size: 18px; +} + +.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-toggle, +.buddypress-wrap .profile.edit .editfield .field-visibility-settings { + order: 3; +} + +body.no-js .buddypress-wrap .field-visibility-settings-toggle, +body.no-js .buddypress-wrap .field-visibility-settings-close { + 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 legend, +.buddypress-wrap .standard-form .field-visibility-settings label { + 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; +} + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ +.message-action-star:before, +.message-action-unstar:before, +.message-action-view:before, +.message-action-delete: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 { + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + margin: 0; + overflow: hidden; + padding: 0.5em 0; +} + +#message-threads li .thread-cb { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; + -webkit-flex: 1 2 5%; + -moz-flex: 1 2 5%; + -ms-flex: 1 2 5%; + -o-flex: 1 2 5%; + flex: 1 2 5%; +} + +#message-threads li .thread-from, +#message-threads li .thread-to { + -webkit-flex: 1 2 20%; + -moz-flex: 1 2 20%; + -ms-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 { + -webkit-flex: 1 2 60%; + -moz-flex: 1 2 60%; + -ms-flex: 1 2 60%; + -o-flex: 1 2 60%; + flex: 1 2 60%; +} + +#message-threads li .thread-date { + -webkit-flex: 1 2 15%; + -moz-flex: 1 2 15%; + -ms-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-to, +#message-threads li .thread-content .thread-subject { + font-size: 13px; +} + +@media screen and (min-width: 46.8em) { + #message-threads li .thread-content .thread-from, + #message-threads li .thread-content .thread-to, + #message-threads li .thread-content .thread-subject { + 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%; +} + +.bp-messages-content .actions .bp-icons:not(.bp-hide) { + display: inline-block; + margin: 0; + padding: 0.3em 0.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: 0.5em; +} + +.bp-messages-content #thread-preview .preview-content .preview-message { + background: #fafafa; + margin: 10px 0; + padding: 1em 0.3em 0.3em; +} + +.bp-messages-content #bp-message-thread-list { + border-top: 1px solid #eaeaea; + clear: both; + list-style: none; + padding: 1em 0 0.3em; +} + +.bp-messages-content #bp-message-thread-list li { + padding: 0.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; + -webkit-box-shadow: 2px 1px 9px 0 #eee; + -moz-box-shadow: 2px 1px 9px 0 #eee; + box-shadow: 2px 1px 9px 0 #eee; + display: table; + padding: 0.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 0.5em; +} + +.bp-messages-content #bp-message-thread-list .message-metadata button { + padding: 0 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: 0.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; +} + +.bp-messages-content #thread-preview .preview-message ul, +.bp-messages-content #thread-preview .preview-message ol, +.bp-messages-content #thread-preview .preview-message blockquote, +.bp-messages-content #bp-message-thread-list li .message-content ul, +.bp-messages-content #bp-message-thread-list li .message-content ol, +.bp-messages-content #bp-message-thread-list li .message-content blockquote { + list-style-position: inside; + margin-right: 0; +} + +.bp-messages-content ul#message-threads:empty, +.bp-messages-content #thread-preview:empty { + display: none; +} + +.bp-messages-content #thread-preview h2:first-child, +.bp-messages-content #bp-message-thread-header h2:first-child { + background-color: #eaeaea; + color: #555; + font-weight: 700; + margin: 0; + padding: 0.5em; +} + +.bp-messages-content #message-threads .thread-content a, +.bp-messages-content #bp-message-thread-list li a.user-link { + 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%; +} + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ +/*__ Settings Global __*/ +.buddypress.settings .profile-settings.bp-tables-user select { + width: 100%; +} + +/*__ General __*/ +/*__ Email notifications __*/ +/*__ Profile visibility __*/ +/*__ Group Invites __*/ +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ +.buddypress-wrap .filter select, +.buddypress-wrap #whats-new-post-in-box select { + border: 1px solid #d6d6d6; +} + +.buddypress-wrap input.action[disabled] { + cursor: pointer; + opacity: 0.4; +} + +.buddypress-wrap #notification-bulk-manage[disabled] { + display: none; +} + +.buddypress-wrap fieldset legend { + font-size: inherit; + font-weight: 600; +} + +.buddypress-wrap textarea:focus, +.buddypress-wrap input[type="text"]:focus, +.buddypress-wrap input[type="email"]:focus, +.buddypress-wrap input[type="url"]:focus, +.buddypress-wrap input[type="tel"]:focus, +.buddypress-wrap input[type="password"]:focus { + -webkit-box-shadow: 0 0 8px #eaeaea; + -moz-box-shadow: 0 0 8px #eaeaea; + 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 textarea, +.buddypress-wrap .standard-form input[type="text"], +.buddypress-wrap .standard-form input[type="color"], +.buddypress-wrap .standard-form input[type="date"], +.buddypress-wrap .standard-form input[type="datetime"], +.buddypress-wrap .standard-form input[type="datetime-local"], +.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="range"], +.buddypress-wrap .standard-form input[type="search"], +.buddypress-wrap .standard-form input[type="tel"], +.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 input[type="password"], +.buddypress-wrap .standard-form [data-bp-search] input[type="search"], +.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; + border: 1px solid #d6d6d6; + border-radius: 0; + font: inherit; + font-size: 100%; + padding: 0.5em; +} + +.buddypress-wrap .standard-form input[required], +.buddypress-wrap .standard-form textarea[required], +.buddypress-wrap .standard-form select[required] { + box-shadow: none; + border-width: 2px; + outline: 0; +} + +.buddypress-wrap .standard-form input[required]:invalid, +.buddypress-wrap .standard-form textarea[required]:invalid, +.buddypress-wrap .standard-form select[required]:invalid { + border-color: #b71717; +} + +.buddypress-wrap .standard-form input[required]:valid, +.buddypress-wrap .standard-form textarea[required]:valid, +.buddypress-wrap .standard-form select[required]:valid { + border-color: #91cc2c; +} + +.buddypress-wrap .standard-form input[required]:focus, +.buddypress-wrap .standard-form textarea[required]:focus, +.buddypress-wrap .standard-form select[required]:focus { + border-color: #d6d6d6; + border-width: 1px; +} + +.buddypress-wrap .standard-form input.invalid[required], +.buddypress-wrap .standard-form textarea.invalid[required], +.buddypress-wrap .standard-form select.invalid[required] { + border-color: #b71717; +} + +.buddypress-wrap .standard-form input:not(.button-small), +.buddypress-wrap .standard-form textarea { + width: 100%; +} + +.buddypress-wrap .standard-form input[type="radio"], +.buddypress-wrap .standard-form input[type="checkbox"] { + 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 textarea:focus, +.buddypress-wrap .standard-form select: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: none; +} + +.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 p label, +.buddypress-wrap .standard-form #invite-list 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="text"], +.buddypress-wrap .standard-form#sidebar-login-form input[type="password"] { + 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 #notifications-bulk-management #select-all-notifications, +body.no-js .buddypress label[for="message-type-select"], +body.no-js .buddypress #message-type-select, +body.no-js .buddypress #delete_inbox_messages, +body.no-js .buddypress #delete_sentbox_messages, +body.no-js .buddypress #messages-bulk-management #select-all-messages { + display: none; +} + +/* Overrides for embedded WP editors */ +.buddypress-wrap .wp-editor-wrap a.button, +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button, +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type="submit"], +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type="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: 100%; +} + +.buddypress-wrap .select-wrap select, +.buddypress-wrap .select-wrap select:focus, +.buddypress-wrap .select-wrap select:active { + background: transparent; +} + +.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 .select-wrap:focus, .buddypress-wrap .select-wrap:hover, +.buddypress-wrap .bp-search form:focus, +.buddypress-wrap .bp-search form: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; + } +} + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:before, +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:after { + content: " "; + display: table; +} + +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:after { + clear: both; +} + +.buddypress-wrap form.bp-dir-search-form, +.buddypress-wrap form.bp-messages-search-form, +.buddypress-wrap form.bp-invites-search-form { + border: 1px solid #eee; + width: 100%; +} + +@media screen and (min-width: 55em) { + .buddypress-wrap form.bp-dir-search-form, + .buddypress-wrap form.bp-messages-search-form, + .buddypress-wrap form.bp-invites-search-form { + width: 15em; + } +} + +.buddypress-wrap form.bp-dir-search-form label, +.buddypress-wrap form.bp-messages-search-form label, +.buddypress-wrap form.bp-invites-search-form label { + margin: 0; +} + +.buddypress-wrap form.bp-dir-search-form input[type="search"], +.buddypress-wrap form.bp-dir-search-form input[type="text"], +.buddypress-wrap form.bp-dir-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.bp-messages-search-form button[type="submit"], +.buddypress-wrap form.bp-invites-search-form input[type="search"], +.buddypress-wrap form.bp-invites-search-form input[type="text"], +.buddypress-wrap form.bp-invites-search-form button[type="submit"] { + background: none; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + background-clip: padding-box; +} + +.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.bp-invites-search-form input[type="search"], +.buddypress-wrap form.bp-invites-search-form input[type="text"] { + float: right; + line-height: 1.5; + padding: 3px 10px; + width: 80%; +} + +.buddypress-wrap form.bp-dir-search-form button[type="submit"], +.buddypress-wrap form.bp-messages-search-form button[type="submit"], +.buddypress-wrap form.bp-invites-search-form button[type="submit"] { + float: left; + font-size: inherit; + font-weight: 400; + line-height: 1.5; + padding: 3px 0.7em; + text-align: center; + text-transform: none; + width: 20%; +} + +.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.bp-invites-search-form button[type="submit"] span { + font-family: dashicons; + font-size: 18px; + line-height: 1.6; +} + +.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.bp-invites-search-form button[type="submit"].bp-show { + height: auto; + right: 0; + overflow: visible; + position: static; + top: 0; +} + +.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.bp-invites-search-form input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: searchfield-cancel-button; +} + +.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.bp-invites-search-form input[type="search"]::-webkit-search-results-button, +.buddypress-wrap form.bp-invites-search-form input[type="search"]::-webkit-search-results-decoration { + display: none; +} + +.buddypress-wrap ul.filters li form label input { + line-height: 1.4; + padding: 0.1em 0.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; +} + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ +.buddypress-wrap .bp-tables-user, +.buddypress-wrap table.wp-profile-fields, +.buddypress-wrap table.forum { + width: 100%; +} + +.buddypress-wrap .bp-tables-user thead tr, +.buddypress-wrap table.wp-profile-fields thead tr, +.buddypress-wrap table.forum thead tr { + background: none; + border-bottom: 2px solid #ccc; +} + +.buddypress-wrap .bp-tables-user tbody tr, +.buddypress-wrap table.wp-profile-fields tbody tr, +.buddypress-wrap table.forum tbody tr { + background: #fafafa; +} + +.buddypress-wrap .bp-tables-user tr th, +.buddypress-wrap .bp-tables-user tr td, +.buddypress-wrap table.wp-profile-fields tr th, +.buddypress-wrap table.wp-profile-fields tr td, +.buddypress-wrap table.forum tr th, +.buddypress-wrap table.forum tr td { + padding: 0.5em; + vertical-align: middle; +} + +.buddypress-wrap .bp-tables-user tr td.label, +.buddypress-wrap table.wp-profile-fields tr td.label, +.buddypress-wrap table.forum 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: 0.5em 1em; +} + +.buddypress-wrap table.profile-fields tr:last-child { + border-bottom: none; +} + +.buddypress-wrap table.notifications td { + padding: 1em 0.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 .title, +.buddypress-wrap table.notifications .notification-description, +.buddypress-wrap table.notifications .date, +.buddypress-wrap table.notifications .notification-since { + 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.notifications th.icon, +.buddypress-wrap table.notifications td:first-child, +.buddypress-wrap table.notification-settings th.icon, +.buddypress-wrap table.notification-settings td:first-child { + 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; +} + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ +.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:before, .clearfix:after { + content: " "; + display: table; +} + +.clearfix:after { + clear: both; +} + +.center-vert { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; +} + +.bp-hide { + display: none; +} + +.bp-show { + height: auto; + right: 0; + overflow: visible; + position: static; + top: 0; +} + +.buddypress .buddypress-wrap button, +.buddypress .buddypress-wrap a.button, +.buddypress .buddypress-wrap input[type="submit"], +.buddypress .buddypress-wrap input[type="button"], +.buddypress .buddypress-wrap input[type="reset"], +.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a, +.buddypress .buddypress-wrap .generic-button a, +.buddypress .buddypress-wrap .comment-reply-link, +.buddypress .buddypress-wrap a.bp-title-button, +.buddypress .buddypress-wrap .activity-read-more a { + background: #fff; + /* Old browsers */ + border-color: #ccc; + border-style: solid; + border-width: 1px; + color: #555; + cursor: pointer; + font-size: inherit; + font-weight: 400; + outline: none; + padding: 0.3em 0.5em; + text-align: center; + text-decoration: none; + width: auto; +} + +.buddypress .buddypress-wrap .button-small[type="button"] { + padding: 0 8px 1px; +} + +.buddypress .buddypress-wrap button:hover, +.buddypress .buddypress-wrap button:focus, +.buddypress .buddypress-wrap a.button:focus, +.buddypress .buddypress-wrap a.button:hover, +.buddypress .buddypress-wrap input[type="submit"]:focus, +.buddypress .buddypress-wrap input[type="submit"]: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 .button-nav li a:focus, +.buddypress .buddypress-wrap .button-nav li a:hover, +.buddypress .buddypress-wrap .button-nav li.current a, +.buddypress .buddypress-wrap .generic-button a:focus, +.buddypress .buddypress-wrap .generic-button a:hover, +.buddypress .buddypress-wrap .comment-reply-link:focus, +.buddypress .buddypress-wrap .comment-reply-link:hover, +.buddypress .buddypress-wrap .activity-read-more a:focus, +.buddypress .buddypress-wrap .activity-read-more a:hover { + background: #ededed; + border-color: #999999; + color: #333; + outline: none; + text-decoration: none; +} + +.buddypress .buddypress-wrap input[type="submit"].pending, +.buddypress .buddypress-wrap input[type="button"].pending, +.buddypress .buddypress-wrap input[type="reset"].pending, +.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 button.pending, +.buddypress .buddypress-wrap button.disabled, +.buddypress .buddypress-wrap div.pending a, +.buddypress .buddypress-wrap a.disabled { + border-color: #eee; + color: #767676; + cursor: default; +} + +.buddypress .buddypress-wrap input[type="submit"]:hover.pending, +.buddypress .buddypress-wrap input[type="button"]:hover.pending, +.buddypress .buddypress-wrap input[type="reset"]:hover.pending, +.buddypress .buddypress-wrap input[type="submit"]:hover.disabled, +.buddypress .buddypress-wrap input[type="button"]:hover.disabled, +.buddypress .buddypress-wrap input[type="reset"]:hover.disabled, +.buddypress .buddypress-wrap button.pending:hover, +.buddypress .buddypress-wrap button.disabled:hover, +.buddypress .buddypress-wrap div.pending a:hover, +.buddypress .buddypress-wrap a.disabled:hover { + border-color: #eee; + color: #767676; +} + +.buddypress .buddypress-wrap button.text-button, +.buddypress .buddypress-wrap input.text-button { + background: none; + border: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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: none; + 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.selected 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 a.invite-button:hover, +.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover { + color: #a00; +} + +.buddypress .buddypress-wrap #item-buttons:empty { + display: none; +} + +.buddypress .buddypress-wrap input:disabled:hover, .buddypress .buddypress-wrap input:disabled:focus { + background: none; +} + +.buddypress .buddypress-wrap .text-links-list a.button { + background: none; + border: none; + border-left: 1px solid #eee; + color: #737373; + display: inline-block; + padding: 0.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: none; + 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; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; + background-clip: padding-box; + -webkit-box-shadow: inset 0 0 6px 0 #eaeaea; + -moz-box-shadow: inset 0 0 6px 0 #eaeaea; + box-shadow: inset 0 0 6px 0 #eaeaea; + margin: 0.2em 0; + width: auto; +} + +.buddypress #buddypress .create-button a:focus, .buddypress #buddypress .create-button a:hover { + background: none; + border-color: #ccc; + -webkit-box-shadow: inset 0 0 12px 0 #eaeaea; + -moz-box-shadow: inset 0 0 12px 0 #eaeaea; + 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: 0.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: none; + border: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0; +} + +.buddypress-wrap button.bp-icons, .buddypress-wrap button.ac-reply-cancel { + background: none; + border: 0; +} + +.buddypress-wrap button.bp-icons:focus, .buddypress-wrap button.bp-icons:hover { + background: none; +} + +.buddypress-wrap button.ac-reply-cancel:focus, .buddypress-wrap button.ac-reply-cancel:hover { + background: none; + text-decoration: underline; +} + +.buddypress-wrap .filter label:before, +.buddypress-wrap .feed a:before, +.buddypress-wrap .bp-invites-filters .invite-button span.icons:before, +.buddypress-wrap .bp-messages-filters li a.messages-button:before, +.buddypress-wrap .bp-invites-content li .invite-button span.icons: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: none; +} + +.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.selected .invite-button span.icons:before, +.buddypress-wrap ul.item-list li .group-remove-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: 0.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; + -webkit-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + color: #fff; +} + +.buddypress-wrap .bp-feedback:not(.custom-homepage-info) { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-align: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + align-items: stretch; +} + +.buddypress-wrap .bp-feedback { + background: #fff; + color: #807f7f; + -webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 1px rgba(0, 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 0.5em; +} + +.buddypress-wrap .bp-feedback .bp-help-text { + font-style: italic; +} + +.buddypress-wrap .bp-feedback .text { + font-size: 14px; + margin: 0; + padding: 0.5em 0; +} + +.buddypress-wrap .bp-feedback.no-icon { + padding: 0.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.info .bp-icon, +.buddypress-wrap .bp-feedback.help .bp-icon, +.buddypress-wrap .bp-feedback.error .bp-icon, +.buddypress-wrap .bp-feedback.warning .bp-icon, +.buddypress-wrap .bp-feedback.loading .bp-icon, +.buddypress-wrap .bp-feedback.success .bp-icon, +.buddypress-wrap .bp-feedback.updated .bp-icon { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; +} + +.buddypress-wrap .bp-feedback.info .bp-icon, +.buddypress-wrap .bp-feedback.help .bp-icon { + background-color: #0b80a4; +} + +.buddypress-wrap .bp-feedback.info .bp-icon:before, +.buddypress-wrap .bp-feedback.help .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: 0.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.error, .buddypress-wrap #pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c; + color: #fff; +} + +.buddypress-wrap #pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040; + color: #fff; +} + +.buddypress-wrap #pass-strength-result.strong { + background-color: #66d66e; + border-color: #438c48; + color: #fff; +} + +.buddypress-wrap .standard-form#signup_form div div.error { + background: #faa; + color: #a00; + margin: 0 0 10px 0; + padding: 0.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, 0.9); + border: 1px solid #eee; + font-size: 14px; + right: 2%; + position: absolute; + padding: 0.5em 1em; + left: 2%; + top: 30px; +} + +.buddypress.widget .item-options { + font-size: 14px; +} + +.buddypress.widget ul.item-list { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: column nowrap; + -moz-flex-flow: column nowrap; + -ms-flex-flow: column nowrap; + -o-flex-flow: column nowrap; + flex-flow: column nowrap; + list-style: none; + margin: 10px -2%; + overflow: hidden; +} + +@media screen and (min-width: 32em) { + .buddypress.widget ul.item-list { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + -o-flex-flow: row wrap; + flex-flow: row wrap; + } +} + +.buddypress.widget ul.item-list li { + border: 1px solid #eee; + -ms-flex-align: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + align-items: stretch; + -webkit-flex: 1 1 46%; + -moz-flex: 1 1 46%; + -ms-flex: 1 1 46%; + -o-flex: 1 1 46%; + flex: 1 1 46%; + margin: 2%; +} + +@media screen and (min-width: 75em) { + .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 20%; + -moz-flex: 0 1 20%; + -ms-flex: 0 1 20%; + -o-flex: 0 1 20%; + flex: 0 1 20%; + } +} + +.buddypress.widget ul.item-list li .item-avatar { + padding: 0.5em; + text-align: center; +} + +.buddypress.widget ul.item-list li .item-avatar .avatar { + width: 60%; +} + +.buddypress.widget ul.item-list li .item { + padding: 0 0.5em 0.5em; +} + +.buddypress.widget ul.item-list li .item .item-meta { + font-size: 12px; + overflow-wrap: break-word; +} + +.buddypress.widget .activity-list { + padding: 0; +} + +.buddypress.widget .activity-list blockquote { + margin: 0 0 1.5em; + overflow: visible; + padding: 0 0.75em 0.75em 0; +} + +.buddypress.widget .activity-list img { + margin-bottom: 0.5em; +} + +.buddypress.widget .avatar-block { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + -o-flex-flow: row wrap; + flex-flow: row wrap; +} + +.buddypress.widget .avatar-block img { + margin-bottom: 1em; + margin-left: 1em; +} + +.widget-area .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 46%; + -moz-flex: 0 1 46%; + -ms-flex: 0 1 46%; + -o-flex: 0 1 46%; + flex: 0 1 46%; + margin: 2% 2% 10px; +} + +@media screen and (min-width: 75em) { + .widget-area .buddypress.widget ul.item-list li .avatar { + width: 100%; + } +} + +@media screen and (min-width: 75em) { + .widget-area .buddypress.widget ul.item-list { + margin: 10px -2%; + width: 100%; + } + .widget-area .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 auto; + -moz-flex: 0 1 auto; + -ms-flex: 0 1 auto; + -o-flex: 0 1 auto; + flex: 0 1 auto; + margin: 10px 2% 1%; + width: 46%; + } +} + +#buddypress-wrap * { + transition: opacity 0.1s ease-in-out 0.1s; +} + +#buddypress-wrap button, +#buddypress-wrap a.generic-button, +#buddypress-wrap a.button, +#buddypress-wrap input[type="submit"], +#buddypress-wrap input[type="reset"] { + transition: background 0.1s ease-in-out 0.1s, color 0.1s ease-in-out 0.1s, border-color 0.1s ease-in-out 0.1s; +} + +.buddypress-wrap a.loading, +.buddypress-wrap input.loading { + -moz-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + -webkit-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + animation: loader-pulsate 0.5s infinite ease-in-out alternate; + border-color: #aaa; +} + +@-webkit-keyframes loader-pulsate { + from { + border-color: #aaa; + -webkit-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -webkit-box-shadow: 0 0 6px #f8f8f8; + box-shadow: 0 0 6px #f8f8f8; + } +} + +@-moz-keyframes loader-pulsate { + from { + border-color: #aaa; + -moz-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -moz-box-shadow: 0 0 6px #f8f8f8; + box-shadow: 0 0 6px #f8f8f8; + } +} + +@keyframes loader-pulsate { + from { + border-color: #aaa; + -moz-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -moz-box-shadow: 0 0 6px #f8f8f8; + 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; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + 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, 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; + -webkit-transition: all 1.5s ease; + -ms-transition: all 1.5s ease; + transition: all 1.5s ease; + white-space: nowrap; + word-wrap: break-word; + z-index: 100000; +} + +[data-bp-tooltip]:hover:after, [data-bp-tooltip]:active:after, [data-bp-tooltip]:focus: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%; + -webkit-transform: translate(50%, 0); + -ms-transform: translate(50%, 0); + transform: translate(50%, 0); +} + +.user-list .bp-tooltip:after { + right: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +@media screen and (min-width: 46.8em) { + .user-list .bp-tooltip:after { + right: auto; + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + } +} + +.activity-list .bp-tooltip:after, +.activity-meta-action .bp-tooltip:after, +.notification-actions .bp-tooltip:after, +.participants-list .bp-tooltip:after { + right: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 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; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.bp-invites-content #send-invites-editor .bp-tooltip:after { + right: 0; + left: auto; +} + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ +#item-body, +.single-screen-navs { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.grid > li, +.grid > li .generic-button a { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 0.5em; +} + +.grid > li .list-wrap .update { + color: #737373; + padding: 0.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 .last-activity, + .grid.groups-list .list-wrap .group-details, + .grid.groups-list .list-wrap .item-desc { + margin-bottom: 0; + } + .grid.groups-list .list-wrap .last-activity p, + .grid.groups-list .list-wrap .group-details p, + .grid.groups-list .list-wrap .item-desc 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; + } +} + +/* Build the two column class small up */ +@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.two > li, .grid.three > li { + width: 50%; + } + .grid.two > li:nth-child(odd), .grid.three > li:nth-child(odd) { + padding-left: 10px; + } + .grid.two > li:nth-child(even), .grid.three > li:nth-child(even) { + padding-right: 10px; + } + .grid.two > li .item, .grid.three > li .item { + margin: 1rem auto 0; + width: 80%; + } + .grid.two > li .item .item-title, .grid.three > li .item .item-title { + width: auto; + } +} + +/* Build the three column class medium up */ +@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; + } +} + +/* Build the four column class medium up */ +@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 .item-block, +.buddypress-wrap .grid.bp-list > li .item .group-desc { + 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 .item-avatar, +.buddypress-wrap .grid.bp-list > li .avatar, +.buddypress-wrap .grid.bp-list > li .item { + float: none; +} + +.buddypress-wrap .blogs-list.grid.two > li .blogs-title { + min-height: 5em; +} + +.buddypress-wrap .grid.three > li .group-desc, +.buddypress-wrap .grid.four > li .group-desc { + min-height: 8em; +} + +.buddypress-wrap .blogs-list.grid.three > li, +.buddypress-wrap .blogs-list.grid.four > li { + min-height: 350px; +} + +.buddypress-wrap .blogs-list.grid.three > li .last-activity, +.buddypress-wrap .blogs-list.grid.four > li .last-activity { + margin-bottom: 0; +} + +.buddypress-wrap .blogs-list.grid.three > li .last-post, +.buddypress-wrap .blogs-list.grid.four > 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 .user-nav-tabs.users-nav ul li, + .bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-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 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: none; + } + .bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a { + background: none; + 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:hover, + .bp-dir-vert-nav .dir-navs ul li a:focus { + background: #ccc; + color: #333; + } + .bp-dir-vert-nav .dir-navs ul li a:hover span, + .bp-dir-vert-nav .dir-navs ul li a:focus 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:hover, + .buddypress-wrap.bp-vertical-navs .dir-navs.activity-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 .dir-navs.sites-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.groups-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.members-nav-tabs ul li:not(.selected) a:focus, + .buddypress-wrap.bp-vertical-navs .main-navs.user-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.group-nav-tabs ul li:not(.selected) a:hover, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus { + background: none; + } + .buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected, + .buddypress-wrap.bp-vertical-navs .dir-navs.sites-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 .main-navs.user-nav-tabs ul li.selected, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected { + background: none; + 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.sites-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 .main-navs.user-nav-tabs ul li.selected a, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a { + background: none; + 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.sites-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 .main-navs.user-nav-tabs ul li.selected a span, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span { + background: #555; + border: 1px solid #d6d6d6; + color: #fff; + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..0d0794f672a83250162a1d8ed9080c4ba82945d2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress-rtl.min.css @@ -0,0 +1 @@ +body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-right:10px}body #buddypress .bp-list .action{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;max-width:none}body.buddypress .entry-content{float:none;max-width: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}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}div,dl,input[type=reset],input[type=search],input[type=submit],li,select,textarea{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}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;-webkit-box-shadow:0 2px 12px 0 #fafafa;-moz-box-shadow:0 2px 12px 0 #fafafa;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:none;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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.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;-webkit-box-shadow:0 0 6px #d2d2d2;-moz-box-shadow:0 0 6px #d2d2d2;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:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-webkit-flex:1 1 auto;-moz-flex:1 1 auto;-ms-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;-webkit-box-shadow:inset 0 0 6px #eee;-moz-box-shadow:inset 0 0 6px #eee;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}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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{-webkit-box-shadow:0 0 6px 0 #d6d6d6;-moz-box-shadow:0 0 6px 0 #d6d6d6;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}.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 #activity-autocomplete{padding:.3em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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}.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:8.5%}.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 auto;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:bottom}.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}.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;-webkit-box-shadow:0 0 6px 0 #eaeaea;-moz-box-shadow:0 0 6px 0 #eaeaea;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%}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-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{-webkit-box-shadow:0 0 6px #d6d6d6;-moz-box-shadow:0 0 6px #d6d6d6;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;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;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 .user-update{border:1px solid #eaeaea;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}@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{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 .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}.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{-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-box-shadow:inset 0 0 9px #ccc;-moz-box-shadow:inset 0 0 9px #ccc;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:right}.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}.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}}.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{-webkit-box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2);-moz-box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2);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;overflow:hidden}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 .button-nav{list-style:none;margin:30px 0 10px}.buddypress-wrap .profile.edit .button-nav li{display:inline-block;margin-left:10px}.buddypress-wrap .profile.edit .button-nav li a{font-size:18px}.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{-moz-box-shadow:none;-webkit-box-shadow:none;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:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;align-items:center;-webkit-flex:1 2 5%;-moz-flex:1 2 5%;-ms-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-webkit-flex:1 2 20%;-moz-flex:1 2 20%;-ms-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{-webkit-flex:1 2 60%;-moz-flex:1 2 60%;-ms-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-webkit-flex:1 2 15%;-moz-flex:1 2 15%;-ms-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%}.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;-webkit-box-shadow:2px 1px 9px 0 #eee;-moz-box-shadow:2px 1px 9px 0 #eee;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}.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%}.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{-webkit-box-shadow:0 0 8px #eaeaea;-moz-box-shadow:0 0 8px #eaeaea;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(.button-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:100%}.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.bp-dir-search-form,.buddypress-wrap form.bp-invites-search-form,.buddypress-wrap form.bp-messages-search-form{border:1px solid #eee;width:100%}@media screen and (min-width:55em){.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-invites-search-form,.buddypress-wrap form.bp-messages-search-form{width:15em}}.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-invites-search-form label,.buddypress-wrap form.bp-messages-search-form label{margin:0}.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-invites-search-form button[type=submit],.buddypress-wrap form.bp-invites-search-form input[type=search],.buddypress-wrap form.bp-invites-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]{background:0 0;border:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-invites-search-form input[type=search],.buddypress-wrap form.bp-invites-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]{float:right;line-height:1.5;padding:3px 10px;width:80%}.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-invites-search-form button[type=submit],.buddypress-wrap form.bp-messages-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.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-invites-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-invites-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show{height:auto;right:0;overflow:visible;position:static;top:0}.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-invites-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.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-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-invites-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{display:none}.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:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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;color:#555;cursor:pointer;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto}.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;-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-clip:padding-box;-webkit-box-shadow:inset 0 0 6px 0 #eaeaea;-moz-box-shadow:inset 0 0 6px 0 #eaeaea;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;-webkit-box-shadow:inset 0 0 12px 0 #eaeaea;-moz-box-shadow:inset 0 0 12px 0 #eaeaea;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;-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.2);-moz-box-shadow:0 0 3px 0 rgba(0,0,0,.2);box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;-webkit-box-shadow:0 1px 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px 1px rgba(0,0,0,.1);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:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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:#fff}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#fff}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#fff}.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:14px}.buddypress.widget ul.item-list{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;-o-flex-flow:column nowrap;flex-flow:column nowrap;list-style:none;margin:10px -2%;overflow:hidden}@media screen and (min-width:32em){.buddypress.widget ul.item-list{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress.widget ul.item-list li{border:1px solid #eee;-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;-webkit-flex:1 1 46%;-moz-flex:1 1 46%;-ms-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress.widget ul.item-list li{-webkit-flex:0 1 20%;-moz-flex:0 1 20%;-ms-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress.widget ul.item-list li .item-avatar{padding:.5em;text-align:center}.buddypress.widget ul.item-list li .item-avatar .avatar{width:60%}.buddypress.widget ul.item-list li .item{padding:0 .5em .5em}.buddypress.widget ul.item-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}.buddypress.widget .activity-list{padding:0}.buddypress.widget .activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 .75em .75em 0}.buddypress.widget .activity-list img{margin-bottom:.5em}.buddypress.widget .avatar-block{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin-bottom:1em;margin-left:1em}.widget-area .buddypress.widget ul.item-list li{-webkit-flex:0 1 46%;-moz-flex:0 1 46%;-ms-flex:0 1 46%;-o-flex:0 1 46%;flex:0 1 46%;margin:2% 2% 10px}@media screen and (min-width:75em){.widget-area .buddypress.widget ul.item-list li .avatar{width:100%}}@media screen and (min-width:75em){.widget-area .buddypress.widget ul.item-list{margin:10px -2%;width:100%}.widget-area .buddypress.widget ul.item-list li{-webkit-flex:0 1 auto;-moz-flex:0 1 auto;-ms-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}#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{-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;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;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);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;-webkit-transition:all 1.5s ease;-ms-transition:all 1.5s ease;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%;-webkit-transform:translate(50%,0);-ms-transform:translate(50%,0);transform:translate(50%,0)}.user-list .bp-tooltip:after{right:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{right:auto;left:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{right:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,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;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{right:0;left:auto}#item-body,.single-screen-navs{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.grid>li,.grid>li .generic-button a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 new file mode 100644 index 0000000000000000000000000000000000000000..7d4bdf036fc059fbb92a68439277e8d8db4a44ad --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.css @@ -0,0 +1,5284 @@ +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Nouveau stylesheet. + +@version 3.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 +*------------------------------------------------------------------------------- +*/ +body #buddypress * a { + box-shadow: none; + text-decoration: none; +} + +body #buddypress #item-body blockquote, +body #buddypress .bp-lists blockquote { + margin-left: 10px; +} + +body #buddypress .bp-list .action { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +@media screen and (min-width: 46.8em) { + body.buddypress .entry-header, + body.buddypress .site-content .entry-header, + body.buddypress .entry-content { + max-width: none; + } + body.buddypress .entry-header { + float: none; + max-width: none; + } + body.buddypress .entry-content { + float: none; + max-width: none; + } + body.buddypress .site-content { + padding-top: 2.5em; + } + body.buddypress #page #primary { + max-width: none; + } + body.buddypress #page #primary .entry-header, + body.buddypress #page #primary .entry-content { + 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; +} + +/* Ensure .bp-wrap encloses it's children */ +.bp-wrap:before, +.bp-wrap:after { + content: " "; + display: table; +} + +.bp-wrap:after { + clear: both; +} + +.buddypress-wrap.round-avatars .avatar { + border-radius: 50%; +} + +div, +dl, +li, +textarea, +select, +input[type="search"], +input[type="submit"], +input[type="reset"] { + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + -ms-border-radius: 2px; + border-radius: 2px; + background-clip: padding-box; +} + +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 .mini .activity-header, +.buddypress-wrap .acomment-meta { + 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; + } +} + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ +.bp-navs { + background: transparent; + 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.selected a, +.bp-navs ul li.current 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.selected a .count, +.buddypress-wrap .bp-navs li.current a .count, +.buddypress-wrap .bp-navs li a:hover 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.selected a, +.buddypress-wrap .bp-navs li.selected a:focus, +.buddypress-wrap .bp-navs li.selected a:hover, +.buddypress-wrap .bp-navs li.current a, +.buddypress-wrap .bp-navs li.current a:focus, +.buddypress-wrap .bp-navs li.current a:hover { + background: #555; + color: #fafafa; +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .main-navs:not(.dir-navs) li.selected a, + .buddypress-wrap .main-navs:not(.dir-navs) li.current a { + background: #fff; + color: #333; + font-weight: 600; + } + .buddypress-wrap .main-navs.vertical li.selected a, + .buddypress-wrap .main-navs.vertical li.current 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; + -webkit-box-shadow: 0 2px 12px 0 #fafafa; + -moz-box-shadow: 0 2px 12px 0 #fafafa; + box-shadow: 0 2px 12px 0 #fafafa; + } +} + +.buddypress-wrap .bp-subnavs li.selected a, +.buddypress-wrap .bp-subnavs li.current 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: 0.5em calc(0.5em + 2px); +} + +.buddypress-wrap:not(.bp-single-vert-nav) .user-subnav#subsubnav, +.buddypress-wrap:not(.bp-single-vert-nav) .group-subnav#subsubnav { + background: none; +} + +.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.selected :focus, +.buddypress-wrap .bp-subnavs ul li.selected :hover, .buddypress-wrap .bp-subnavs ul li.current :focus, +.buddypress-wrap .bp-subnavs ul li.current :hover { + background: none; + color: #333; +} + +.buddypress-wrap ul.subnav { + width: auto; +} + +.buddypress-wrap .bp-navs.bp-invites-nav#subnav ul li.last, +.buddypress-wrap .bp-navs.bp-invites-filters#subsubnav 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.selected a, + .buddypress-wrap .bp-subnavs li.selected a:focus, + .buddypress-wrap .bp-subnavs li.selected a:hover, .buddypress-wrap .bp-subnavs li.current a, + .buddypress-wrap .bp-subnavs li.current a:focus, + .buddypress-wrap .bp-subnavs li.current a:hover { + background: #555; + color: #fff; + } +} + +.buddypress_object_nav .bp-navs li.selected a .count, +.buddypress_object_nav .bp-navs li.current a .count, +.buddypress-wrap .bp-navs li.selected a .count, +.buddypress-wrap .bp-navs li.current a .count { + background-color: #fff; +} + +.buddypress_object_nav .bp-navs li.dynamic a .count, +.buddypress_object_nav .bp-navs li.dynamic.selected a .count, +.buddypress_object_nav .bp-navs li.dynamic.current a .count, +.buddypress-wrap .bp-navs li.dynamic a .count, +.buddypress-wrap .bp-navs li.dynamic.selected a .count, +.buddypress-wrap .bp-navs li.dynamic.current a .count { + background-color: #5087e5; + border: 0; + color: #fafafa; +} + +.buddypress_object_nav .bp-navs li.dynamic a:hover .count, +.buddypress-wrap .bp-navs li.dynamic a:hover .count { + background-color: #5087e5; + border: 0; + color: #fff; +} + +.buddypress_object_nav .bp-navs li a .count:empty, +.buddypress-wrap .bp-navs li a .count:empty { + display: none; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current), +.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) { + color: #767676; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li:not(.current) a, +.buddypress-wrap .bp-navs.group-create-links ul li:not(.current) a { + color: #767676; +} + +.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, +.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 { + background: none; + color: #333; +} + +.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, +.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 { + color: #767676; +} + +.buddypress_object_nav .bp-navs.group-create-links ul li.current a, +.buddypress-wrap .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: none; + } + .bp-dir-vert-nav .bp-navs.dir-navs a .count { + float: right; + } +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .tabbed-links ul, + .buddypress-wrap .tabbed-links ol { + border-bottom: 1px solid #ccc; + float: none; + margin: 20px 0 10px; + } + .buddypress-wrap .tabbed-links ul:before, .buddypress-wrap .tabbed-links ul:after, + .buddypress-wrap .tabbed-links ol:before, + .buddypress-wrap .tabbed-links ol:after { + content: " "; + display: block; + } + .buddypress-wrap .tabbed-links ul:after, + .buddypress-wrap .tabbed-links ol:after { + clear: both; + } + .buddypress-wrap .tabbed-links ul li, + .buddypress-wrap .tabbed-links ol li { + float: left; + list-style: none; + margin: 0 10px 0 0; + } + .buddypress-wrap .tabbed-links ul li a, + .buddypress-wrap .tabbed-links ul li span:not(.count), + .buddypress-wrap .tabbed-links ol li a, + .buddypress-wrap .tabbed-links ol li span:not(.count) { + background: none; + border: none; + display: block; + padding: 4px 10px; + } + .buddypress-wrap .tabbed-links ul li a:focus, + .buddypress-wrap .tabbed-links ul li a:hover, + .buddypress-wrap .tabbed-links ol li a:focus, + .buddypress-wrap .tabbed-links ol li a:hover { + background: none; + } + .buddypress-wrap .tabbed-links ul li:not(.current), + .buddypress-wrap .tabbed-links ol li:not(.current) { + margin-bottom: 2px; + } + .buddypress-wrap .tabbed-links ul li.current, + .buddypress-wrap .tabbed-links ol 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 0.5em 1px; + } + .buddypress-wrap .tabbed-links ul li.current a, + .buddypress-wrap .tabbed-links ol li.current a { + background: none; + color: #333; + } + .buddypress-wrap .bp-subnavs.tabbed-links > ul { + margin-top: 0; + } + .buddypress-wrap .bp-navs.tabbed-links { + background: none; + 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: -0.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: none; + border: 0; + } + .buddypress-wrap .bp-navs.tabbed-links ul li a:active, + .buddypress-wrap .bp-navs.tabbed-links ul li.current a:active { + outline: none; + } +} + +.buddypress-wrap .dir-component-filters .filter label { + display: inline; +} + +.buddypress-wrap .subnav-filters:before, +.buddypress-wrap .subnav-filters:after { + content: " "; + display: table; +} + +.buddypress-wrap .subnav-filters:after { + clear: both; +} + +.buddypress-wrap .subnav-filters { + background: none; + 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 select, +.buddypress-wrap .subnav-filters div input[type="search"] { + font-size: 16px; +} + +.buddypress-wrap .subnav-filters div button.nouveau-search-submit { + padding: 5px 0.8em 6px; +} + +.buddypress-wrap .subnav-filters div button#user_messages_search_submit { + padding: 7px 0.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:before, +.buddypress-wrap .subnav-filters .user-messages-bulk-actions .bulk-actions-wrap:after { + 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: none; + 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 .subnav-search, + .buddypress-wrap .subnav-filters .subnav-search form, + .buddypress-wrap .subnav-filters .feed, + .buddypress-wrap .subnav-filters .bp-search, + .buddypress-wrap .subnav-filters .dir-search, + .buddypress-wrap .subnav-filters .user-messages-bulk-actions, + .buddypress-wrap .subnav-filters .user-messages-search, + .buddypress-wrap .subnav-filters .group-invites-search, + .buddypress-wrap .subnav-filters .group-act-search { + float: left; + } + .buddypress-wrap .subnav-filters .last, + .buddypress-wrap .subnav-filters .component-filters { + float: right; + margin-top: 0; + width: auto; + } + .buddypress-wrap .subnav-filters .last select, + .buddypress-wrap .subnav-filters .component-filters 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; +} + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ +.buddypress-wrap .bp-pagination { + background: transparent; + border: 0; + color: #767676; + float: left; + font-size: small; + margin: 0; + padding: 0.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 span, +.buddypress-wrap .bp-pagination .bp-pagination-links a { + 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; +} + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ +.bp-list:before, +.bp-list:after { + content: " "; + display: table; +} + +.bp-list:after { + clear: both; +} + +.bp-list { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border-top: 1px solid #eaeaea; + clear: both; + list-style: none; + margin: 20px 0; + padding: 0.5em 0; + width: 100%; +} + +.bp-list li:before, +.bp-list li:after { + 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: 0.5em 0; + position: relative; +} + +.bp-list li .item-avatar { + text-align: center; +} + +.bp-list li .item-avatar img.avatar { + display: inline; +} + +.bp-list li .item .item-avatar, +.bp-list li .item .list-title, +.bp-list li .item .item-meta, +.bp-list li .item .group-details { + 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 .meta, +.bp-list li .item-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 .list-title, + .bp-list li .item .item-meta { + 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 .user-update, + .bp-list li .last-post { + 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; + -webkit-box-shadow: 0 0 6px #d2d2d2; + -moz-box-shadow: 0 0 6px #d2d2d2; + 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: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + } + .friends-request-list li .item, + .membership-requests-list li .item { + -webkit-flex: 1 1 auto; + -moz-flex: 1 1 auto; + -ms-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; +} + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ +.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; + -webkit-box-shadow: inset 0 0 6px #eee; + -moz-box-shadow: inset 0 0 6px #eee; + 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; +} + +.activity-update-form #whats-new-content { + padding: 0 0 20px 0; +} + +.activity-update-form #whats-new-textarea textarea { + background: #fff; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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 { + -webkit-box-shadow: 0 0 6px 0 #d6d6d6; + -moz-box-shadow: 0 0 6px 0 #d6d6d6; + 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; +} + +.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 #activity-autocomplete { + padding: 0.3em; +} + +.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; + padding: 0.2em; +} + +.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object .avatar { + width: 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: 0.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: 8.5%; + } + .activity-update-form #whats-new-submit input { + margin-bottom: 0; + margin-right: 10px; + width: 8em; + } +} + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ +.activity-list { + padding: 0.5em; +} + +.activity-list .activity-item:before, +.activity-list .activity-item:after { + 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 auto; + text-align: center; + width: auto; +} + +.activity-list .activity-item.mini .activity-avatar img.avatar, +.activity-list .activity-item.mini .activity-avatar img.FB_profile_pic { + /* stylelint-disable-line selector-class-pattern */ + 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.avatar, + .activity-list .activity-item.mini .activity-avatar img.FB_profile_pic { + /* stylelint-disable-line selector-class-pattern */ + 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_mentions_activity, .activity-list .activity-item.newest_friends_activity, .activity-list .activity-item.newest_groups_activity, .activity-list .activity-item.newest_blogs_activity { + background: rgba(31, 179, 221, 0.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 blockquote, +.activity-list .activity-item .activity-inreplyto .activity-inner { + background: none; + 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: bottom; +} + +.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: transparent; +} + +.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: none; +} + +.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: none; + 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: 0.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; + -webkit-box-shadow: 0 0 6px 0 #eaeaea; + -moz-box-shadow: 0 0 6px 0 #eaeaea; + 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%; +} + +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: 0.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-content { + margin-right: 10px; + } + body.activity-permalink .activity-list .activity-content .activity-header p { + text-align: left; + } +} + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ +.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-meta, +.buddypress-wrap .activity-comments .acomment-content p { + 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: 0.5em 1em; +} + +.buddypress-wrap .activity-comments .acomment-content p { + margin-bottom: 0.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: none; + 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: 0.5em; +} + +.buddypress-wrap .activity-comments .show-all button span { + text-decoration: none; +} + +.buddypress-wrap .activity-comments .show-all button:hover span, .buddypress-wrap .activity-comments .show-all button:focus span { + color: #5087e5; +} + +.buddypress-wrap .mini .activity-comments { + clear: both; + margin-top: 0; +} + +body.activity-permalink .activity-comments { + background: none; + width: auto; +} + +body.activity-permalink .activity-comments > ul { + padding: 0 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 0.5em; + overflow: hidden; +} + +form.ac-form .ac-reply-content .ac-textarea textarea { + background: transparent; + box-shadow: none; + color: #555; + font-family: inherit; + font-size: 100%; + height: 60px; + margin: 0; + outline: none; + padding: 0.5em; + width: 100%; +} + +form.ac-form .ac-reply-content .ac-textarea textarea:focus { + -webkit-box-shadow: 0 0 6px #d6d6d6; + -moz-box-shadow: 0 0 6px #d6d6d6; + 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; +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ +@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; + } +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Groups Loop +*---------------------------------------------------------- +*/ +.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; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + 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 0.5em; +} + +@media screen and (min-width: 46.8em) { + .buddypress-wrap .groups-list li .item { + margin-right: 0; + } + .buddypress-wrap .groups-list li .list-title, + .buddypress-wrap .groups-list li .item-meta { + 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.three .group-desc, .buddypress-wrap .groups-list.grid.four .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%; + } +} + +/** +*---------------------------------------------------------- +* @section 3.2 - Members Loop +*---------------------------------------------------------- +*/ +.buddypress-wrap .members-list li .member-name { + margin-bottom: 10px; +} + +.buddypress-wrap .members-list li .user-update { + border: 1px solid #eaeaea; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + -ms-border-radius: 10px; + 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%; + } +} + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ +.register-page .register-section { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 0.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 .password-entry, +.register-page .signup-form .password-entry-confirm { + border: 1px solid #eee; +} + +@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 { + 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%; + } +} + +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ +#group-create-body { + padding: 0.5em; +} + +#group-create-body .creation-step-name { + text-align: center; +} + +#group-create-body .avatar-nav-items { + margin-top: 15px; +} + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ +.single-headers:before, +.single-headers:after { + 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; +} + +.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 .group-status, +.single-headers .activity { + 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 div#message p, +.single-headers #sitewide-notice 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: 0.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 div.generic-button, + .single-headers a.button, + .single-headers li.generic-button { + float: left; + } +} + +.single-headers div.generic-button, +.single-headers a.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: 0.8; +} + +body.no-js .single-item-header .js-self-profile-button { + display: none; +} + +/* +* Default required cover image rules +*/ +#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; +} + +/* +* end cover image block +*/ +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ +.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 { + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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; + -webkit-box-shadow: inset 0 0 9px #ccc; + -moz-box-shadow: inset 0 0 9px #ccc; + box-shadow: inset 0 0 9px #ccc; + padding: 1em; + text-align: left; +} + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ +.bp-user .users-header .user-nicename { + margin-bottom: 5px; +} + +.bp-user .member-header-actions { + overflow: hidden; +} + +.bp-user .member-header-actions * > * { + display: block; +} + +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ +.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; +} + +.buddypress-wrap.bp-single-vert-nav .bp-list:not(.grid) .item-entry { + padding-left: 0.5em; +} + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ +.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; +} + +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ +.buddypress-wrap .group-status-type ul { + margin: 0 0 20px 20px; +} + +.groups-manage-members-list { + padding: 0.5em 0; +} + +.groups-manage-members-list dd { + margin: 0; + padding: 1em 0; +} + +.groups-manage-members-list .section-title { + background: #eaeaea; + padding-left: 0.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: 0.5em 0.3em 0.3em; +} + +.groups-manage-members-list ul li:only-child, +.groups-manage-members-list ul li:last-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:before, +.groups-manage-members-list ul .members-manage-buttons:after { + 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; + } +} + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ +/* + * bp-nouveau styling: invite members, sent invites + * @version 3.0.0 + */ +.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 { + -webkit-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); + -moz-box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); + box-shadow: inset 0 0 12px 0 rgba(237, 187, 52, 0.2); +} + +.buddypress .bp-invites-content .item-list .item-meta span, +.buddypress .bp-invites-content .group-inviters li { + color: #767676; +} + +.buddypress .bp-invites-content li ul.group-inviters { + clear: both; + margin: 0; + overflow: hidden; +} + +.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:before, +.buddypress .bp-invites-content #send-invites-editor ul:after { + 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: 0.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 { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #eaeaea; + float: left; + padding-left: 0.5em; + padding-right: 0.5em; + width: 49.5%; + } + .buddypress .bp-invites-content ul.item-list > li:nth-child(odd) { + margin-right: 0.5%; + } + .buddypress .bp-invites-content ul.item-list > li:nth-child(even) { + margin-left: 0.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; + } +} + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ +.buddypress.groups .activity-update-form { + margin-top: 0; +} + +/** +*----------------------------------------------------- +* @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-wrap .profile { + margin-top: 30px; +} + +.buddypress-wrap .public .profile-fields td.label { + width: 30%; +} + +.buddypress-wrap .profile.edit .button-nav { + list-style: none; + margin: 30px 0 10px; +} + +.buddypress-wrap .profile.edit .button-nav li { + display: inline-block; + margin-right: 10px; +} + +.buddypress-wrap .profile.edit .button-nav li a { + font-size: 18px; +} + +.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-toggle, +.buddypress-wrap .profile.edit .editfield .field-visibility-settings { + order: 3; +} + +body.no-js .buddypress-wrap .field-visibility-settings-toggle, +body.no-js .buddypress-wrap .field-visibility-settings-close { + 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 legend, +.buddypress-wrap .standard-form .field-visibility-settings label { + 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; +} + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ +.message-action-star:before, +.message-action-unstar:before, +.message-action-view:before, +.message-action-delete: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 { + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + margin: 0; + overflow: hidden; + padding: 0.5em 0; +} + +#message-threads li .thread-cb { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; + -webkit-flex: 1 2 5%; + -moz-flex: 1 2 5%; + -ms-flex: 1 2 5%; + -o-flex: 1 2 5%; + flex: 1 2 5%; +} + +#message-threads li .thread-from, +#message-threads li .thread-to { + -webkit-flex: 1 2 20%; + -moz-flex: 1 2 20%; + -ms-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 { + -webkit-flex: 1 2 60%; + -moz-flex: 1 2 60%; + -ms-flex: 1 2 60%; + -o-flex: 1 2 60%; + flex: 1 2 60%; +} + +#message-threads li .thread-date { + -webkit-flex: 1 2 15%; + -moz-flex: 1 2 15%; + -ms-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-to, +#message-threads li .thread-content .thread-subject { + font-size: 13px; +} + +@media screen and (min-width: 46.8em) { + #message-threads li .thread-content .thread-from, + #message-threads li .thread-content .thread-to, + #message-threads li .thread-content .thread-subject { + 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%; +} + +.bp-messages-content .actions .bp-icons:not(.bp-hide) { + display: inline-block; + margin: 0; + padding: 0.3em 0.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: 0.5em; +} + +.bp-messages-content #thread-preview .preview-content .preview-message { + background: #fafafa; + margin: 10px 0; + padding: 1em 0.3em 0.3em; +} + +.bp-messages-content #bp-message-thread-list { + border-top: 1px solid #eaeaea; + clear: both; + list-style: none; + padding: 1em 0 0.3em; +} + +.bp-messages-content #bp-message-thread-list li { + padding: 0.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; + -webkit-box-shadow: -2px 1px 9px 0 #eee; + -moz-box-shadow: -2px 1px 9px 0 #eee; + box-shadow: -2px 1px 9px 0 #eee; + display: table; + padding: 0.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 0.5em; +} + +.bp-messages-content #bp-message-thread-list .message-metadata button { + padding: 0 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: 0.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; +} + +.bp-messages-content #thread-preview .preview-message ul, +.bp-messages-content #thread-preview .preview-message ol, +.bp-messages-content #thread-preview .preview-message blockquote, +.bp-messages-content #bp-message-thread-list li .message-content ul, +.bp-messages-content #bp-message-thread-list li .message-content ol, +.bp-messages-content #bp-message-thread-list li .message-content blockquote { + list-style-position: inside; + margin-left: 0; +} + +.bp-messages-content ul#message-threads:empty, +.bp-messages-content #thread-preview:empty { + display: none; +} + +.bp-messages-content #thread-preview h2:first-child, +.bp-messages-content #bp-message-thread-header h2:first-child { + background-color: #eaeaea; + color: #555; + font-weight: 700; + margin: 0; + padding: 0.5em; +} + +.bp-messages-content #message-threads .thread-content a, +.bp-messages-content #bp-message-thread-list li a.user-link { + 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%; +} + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ +/*__ Settings Global __*/ +.buddypress.settings .profile-settings.bp-tables-user select { + width: 100%; +} + +/*__ General __*/ +/*__ Email notifications __*/ +/*__ Profile visibility __*/ +/*__ Group Invites __*/ +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ +.buddypress-wrap .filter select, +.buddypress-wrap #whats-new-post-in-box select { + border: 1px solid #d6d6d6; +} + +.buddypress-wrap input.action[disabled] { + cursor: pointer; + opacity: 0.4; +} + +.buddypress-wrap #notification-bulk-manage[disabled] { + display: none; +} + +.buddypress-wrap fieldset legend { + font-size: inherit; + font-weight: 600; +} + +.buddypress-wrap textarea:focus, +.buddypress-wrap input[type="text"]:focus, +.buddypress-wrap input[type="email"]:focus, +.buddypress-wrap input[type="url"]:focus, +.buddypress-wrap input[type="tel"]:focus, +.buddypress-wrap input[type="password"]:focus { + -webkit-box-shadow: 0 0 8px #eaeaea; + -moz-box-shadow: 0 0 8px #eaeaea; + 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 textarea, +.buddypress-wrap .standard-form input[type="text"], +.buddypress-wrap .standard-form input[type="color"], +.buddypress-wrap .standard-form input[type="date"], +.buddypress-wrap .standard-form input[type="datetime"], +.buddypress-wrap .standard-form input[type="datetime-local"], +.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="range"], +.buddypress-wrap .standard-form input[type="search"], +.buddypress-wrap .standard-form input[type="tel"], +.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 input[type="password"], +.buddypress-wrap .standard-form [data-bp-search] input[type="search"], +.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; + border: 1px solid #d6d6d6; + border-radius: 0; + font: inherit; + font-size: 100%; + padding: 0.5em; +} + +.buddypress-wrap .standard-form input[required], +.buddypress-wrap .standard-form textarea[required], +.buddypress-wrap .standard-form select[required] { + box-shadow: none; + border-width: 2px; + outline: 0; +} + +.buddypress-wrap .standard-form input[required]:invalid, +.buddypress-wrap .standard-form textarea[required]:invalid, +.buddypress-wrap .standard-form select[required]:invalid { + border-color: #b71717; +} + +.buddypress-wrap .standard-form input[required]:valid, +.buddypress-wrap .standard-form textarea[required]:valid, +.buddypress-wrap .standard-form select[required]:valid { + border-color: #91cc2c; +} + +.buddypress-wrap .standard-form input[required]:focus, +.buddypress-wrap .standard-form textarea[required]:focus, +.buddypress-wrap .standard-form select[required]:focus { + border-color: #d6d6d6; + border-width: 1px; +} + +.buddypress-wrap .standard-form input.invalid[required], +.buddypress-wrap .standard-form textarea.invalid[required], +.buddypress-wrap .standard-form select.invalid[required] { + border-color: #b71717; +} + +.buddypress-wrap .standard-form input:not(.button-small), +.buddypress-wrap .standard-form textarea { + width: 100%; +} + +.buddypress-wrap .standard-form input[type="radio"], +.buddypress-wrap .standard-form input[type="checkbox"] { + 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 textarea:focus, +.buddypress-wrap .standard-form select: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: none; +} + +.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 p label, +.buddypress-wrap .standard-form #invite-list 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="text"], +.buddypress-wrap .standard-form#sidebar-login-form input[type="password"] { + 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 #notifications-bulk-management #select-all-notifications, +body.no-js .buddypress label[for="message-type-select"], +body.no-js .buddypress #message-type-select, +body.no-js .buddypress #delete_inbox_messages, +body.no-js .buddypress #delete_sentbox_messages, +body.no-js .buddypress #messages-bulk-management #select-all-messages { + display: none; +} + +/* Overrides for embedded WP editors */ +.buddypress-wrap .wp-editor-wrap a.button, +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap button, +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type="submit"], +.buddypress-wrap .wp-editor-wrap .wp-editor-wrap input[type="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: 100%; +} + +.buddypress-wrap .select-wrap select, +.buddypress-wrap .select-wrap select:focus, +.buddypress-wrap .select-wrap select:active { + background: transparent; +} + +.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 .select-wrap:focus, .buddypress-wrap .select-wrap:hover, +.buddypress-wrap .bp-search form:focus, +.buddypress-wrap .bp-search form: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; + } +} + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:before, +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:after { + content: " "; + display: table; +} + +.buddypress-wrap .bp-dir-search-form, .buddypress-wrap .bp-messages-search-form:after { + clear: both; +} + +.buddypress-wrap form.bp-dir-search-form, +.buddypress-wrap form.bp-messages-search-form, +.buddypress-wrap form.bp-invites-search-form { + border: 1px solid #eee; + width: 100%; +} + +@media screen and (min-width: 55em) { + .buddypress-wrap form.bp-dir-search-form, + .buddypress-wrap form.bp-messages-search-form, + .buddypress-wrap form.bp-invites-search-form { + width: 15em; + } +} + +.buddypress-wrap form.bp-dir-search-form label, +.buddypress-wrap form.bp-messages-search-form label, +.buddypress-wrap form.bp-invites-search-form label { + margin: 0; +} + +.buddypress-wrap form.bp-dir-search-form input[type="search"], +.buddypress-wrap form.bp-dir-search-form input[type="text"], +.buddypress-wrap form.bp-dir-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.bp-messages-search-form button[type="submit"], +.buddypress-wrap form.bp-invites-search-form input[type="search"], +.buddypress-wrap form.bp-invites-search-form input[type="text"], +.buddypress-wrap form.bp-invites-search-form button[type="submit"] { + background: none; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + -ms-border-radius: 0; + border-radius: 0; + background-clip: padding-box; +} + +.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.bp-invites-search-form input[type="search"], +.buddypress-wrap form.bp-invites-search-form input[type="text"] { + float: left; + line-height: 1.5; + padding: 3px 10px; + width: 80%; +} + +.buddypress-wrap form.bp-dir-search-form button[type="submit"], +.buddypress-wrap form.bp-messages-search-form button[type="submit"], +.buddypress-wrap form.bp-invites-search-form button[type="submit"] { + float: right; + font-size: inherit; + font-weight: 400; + line-height: 1.5; + padding: 3px 0.7em; + text-align: center; + text-transform: none; + width: 20%; +} + +.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.bp-invites-search-form button[type="submit"] span { + font-family: dashicons; + font-size: 18px; + line-height: 1.6; +} + +.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.bp-invites-search-form button[type="submit"].bp-show { + height: auto; + left: 0; + overflow: visible; + position: static; + top: 0; +} + +.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.bp-invites-search-form input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: searchfield-cancel-button; +} + +.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.bp-invites-search-form input[type="search"]::-webkit-search-results-button, +.buddypress-wrap form.bp-invites-search-form input[type="search"]::-webkit-search-results-decoration { + display: none; +} + +.buddypress-wrap ul.filters li form label input { + line-height: 1.4; + padding: 0.1em 0.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; +} + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ +.buddypress-wrap .bp-tables-user, +.buddypress-wrap table.wp-profile-fields, +.buddypress-wrap table.forum { + width: 100%; +} + +.buddypress-wrap .bp-tables-user thead tr, +.buddypress-wrap table.wp-profile-fields thead tr, +.buddypress-wrap table.forum thead tr { + background: none; + border-bottom: 2px solid #ccc; +} + +.buddypress-wrap .bp-tables-user tbody tr, +.buddypress-wrap table.wp-profile-fields tbody tr, +.buddypress-wrap table.forum tbody tr { + background: #fafafa; +} + +.buddypress-wrap .bp-tables-user tr th, +.buddypress-wrap .bp-tables-user tr td, +.buddypress-wrap table.wp-profile-fields tr th, +.buddypress-wrap table.wp-profile-fields tr td, +.buddypress-wrap table.forum tr th, +.buddypress-wrap table.forum tr td { + padding: 0.5em; + vertical-align: middle; +} + +.buddypress-wrap .bp-tables-user tr td.label, +.buddypress-wrap table.wp-profile-fields tr td.label, +.buddypress-wrap table.forum 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: 0.5em 1em; +} + +.buddypress-wrap table.profile-fields tr:last-child { + border-bottom: none; +} + +.buddypress-wrap table.notifications td { + padding: 1em 0.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 .title, +.buddypress-wrap table.notifications .notification-description, +.buddypress-wrap table.notifications .date, +.buddypress-wrap table.notifications .notification-since { + 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.notifications th.icon, +.buddypress-wrap table.notifications td:first-child, +.buddypress-wrap table.notification-settings th.icon, +.buddypress-wrap table.notification-settings td:first-child { + 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; +} + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ +.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:before, .clearfix:after { + content: " "; + display: table; +} + +.clearfix:after { + clear: both; +} + +.center-vert { + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; +} + +.bp-hide { + display: none; +} + +.bp-show { + height: auto; + left: 0; + overflow: visible; + position: static; + top: 0; +} + +.buddypress .buddypress-wrap button, +.buddypress .buddypress-wrap a.button, +.buddypress .buddypress-wrap input[type="submit"], +.buddypress .buddypress-wrap input[type="button"], +.buddypress .buddypress-wrap input[type="reset"], +.buddypress .buddypress-wrap ul.button-nav:not(.button-tabs) li a, +.buddypress .buddypress-wrap .generic-button a, +.buddypress .buddypress-wrap .comment-reply-link, +.buddypress .buddypress-wrap a.bp-title-button, +.buddypress .buddypress-wrap .activity-read-more a { + background: #fff; + /* Old browsers */ + border-color: #ccc; + border-style: solid; + border-width: 1px; + color: #555; + cursor: pointer; + font-size: inherit; + font-weight: 400; + outline: none; + padding: 0.3em 0.5em; + text-align: center; + text-decoration: none; + width: auto; +} + +.buddypress .buddypress-wrap .button-small[type="button"] { + padding: 0 8px 1px; +} + +.buddypress .buddypress-wrap button:hover, +.buddypress .buddypress-wrap button:focus, +.buddypress .buddypress-wrap a.button:focus, +.buddypress .buddypress-wrap a.button:hover, +.buddypress .buddypress-wrap input[type="submit"]:focus, +.buddypress .buddypress-wrap input[type="submit"]: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 .button-nav li a:focus, +.buddypress .buddypress-wrap .button-nav li a:hover, +.buddypress .buddypress-wrap .button-nav li.current a, +.buddypress .buddypress-wrap .generic-button a:focus, +.buddypress .buddypress-wrap .generic-button a:hover, +.buddypress .buddypress-wrap .comment-reply-link:focus, +.buddypress .buddypress-wrap .comment-reply-link:hover, +.buddypress .buddypress-wrap .activity-read-more a:focus, +.buddypress .buddypress-wrap .activity-read-more a:hover { + background: #ededed; + border-color: #999999; + color: #333; + outline: none; + text-decoration: none; +} + +.buddypress .buddypress-wrap input[type="submit"].pending, +.buddypress .buddypress-wrap input[type="button"].pending, +.buddypress .buddypress-wrap input[type="reset"].pending, +.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 button.pending, +.buddypress .buddypress-wrap button.disabled, +.buddypress .buddypress-wrap div.pending a, +.buddypress .buddypress-wrap a.disabled { + border-color: #eee; + color: #767676; + cursor: default; +} + +.buddypress .buddypress-wrap input[type="submit"]:hover.pending, +.buddypress .buddypress-wrap input[type="button"]:hover.pending, +.buddypress .buddypress-wrap input[type="reset"]:hover.pending, +.buddypress .buddypress-wrap input[type="submit"]:hover.disabled, +.buddypress .buddypress-wrap input[type="button"]:hover.disabled, +.buddypress .buddypress-wrap input[type="reset"]:hover.disabled, +.buddypress .buddypress-wrap button.pending:hover, +.buddypress .buddypress-wrap button.disabled:hover, +.buddypress .buddypress-wrap div.pending a:hover, +.buddypress .buddypress-wrap a.disabled:hover { + border-color: #eee; + color: #767676; +} + +.buddypress .buddypress-wrap button.text-button, +.buddypress .buddypress-wrap input.text-button { + background: none; + border: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + 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: none; + 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.selected 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 a.invite-button:hover, +.buddypress .buddypress-wrap .bp-invites-content ul.bp-list li a.group-remove-invite-button:hover { + color: #a00; +} + +.buddypress .buddypress-wrap #item-buttons:empty { + display: none; +} + +.buddypress .buddypress-wrap input:disabled:hover, .buddypress .buddypress-wrap input:disabled:focus { + background: none; +} + +.buddypress .buddypress-wrap .text-links-list a.button { + background: none; + border: none; + border-right: 1px solid #eee; + color: #737373; + display: inline-block; + padding: 0.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: none; + 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; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + -ms-border-radius: 5px; + border-radius: 5px; + background-clip: padding-box; + -webkit-box-shadow: inset 0 0 6px 0 #eaeaea; + -moz-box-shadow: inset 0 0 6px 0 #eaeaea; + box-shadow: inset 0 0 6px 0 #eaeaea; + margin: 0.2em 0; + width: auto; +} + +.buddypress #buddypress .create-button a:focus, .buddypress #buddypress .create-button a:hover { + background: none; + border-color: #ccc; + -webkit-box-shadow: inset 0 0 12px 0 #eaeaea; + -moz-box-shadow: inset 0 0 12px 0 #eaeaea; + 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: 0.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: none; + border: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + margin: 0; +} + +.buddypress-wrap button.bp-icons, .buddypress-wrap button.ac-reply-cancel { + background: none; + border: 0; +} + +.buddypress-wrap button.bp-icons:focus, .buddypress-wrap button.bp-icons:hover { + background: none; +} + +.buddypress-wrap button.ac-reply-cancel:focus, .buddypress-wrap button.ac-reply-cancel:hover { + background: none; + text-decoration: underline; +} + +.buddypress-wrap .filter label:before, +.buddypress-wrap .feed a:before, +.buddypress-wrap .bp-invites-filters .invite-button span.icons:before, +.buddypress-wrap .bp-messages-filters li a.messages-button:before, +.buddypress-wrap .bp-invites-content li .invite-button span.icons: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: none; +} + +.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.selected .invite-button span.icons:before, +.buddypress-wrap ul.item-list li .group-remove-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: 0.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; + -webkit-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.2); + color: #fff; +} + +.buddypress-wrap .bp-feedback:not(.custom-homepage-info) { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row nowrap; + -moz-flex-flow: row nowrap; + -ms-flex-flow: row nowrap; + -o-flex-flow: row nowrap; + flex-flow: row nowrap; + -ms-flex-align: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + align-items: stretch; +} + +.buddypress-wrap .bp-feedback { + background: #fff; + color: #807f7f; + -webkit-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 1px 1px rgba(0, 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 0.5em; +} + +.buddypress-wrap .bp-feedback .bp-help-text { + font-style: italic; +} + +.buddypress-wrap .bp-feedback .text { + font-size: 14px; + margin: 0; + padding: 0.5em 0; +} + +.buddypress-wrap .bp-feedback.no-icon { + padding: 0.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.info .bp-icon, +.buddypress-wrap .bp-feedback.help .bp-icon, +.buddypress-wrap .bp-feedback.error .bp-icon, +.buddypress-wrap .bp-feedback.warning .bp-icon, +.buddypress-wrap .bp-feedback.loading .bp-icon, +.buddypress-wrap .bp-feedback.success .bp-icon, +.buddypress-wrap .bp-feedback.updated .bp-icon { + display: -webkit-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -ms-flex-align: center; + -webkit-align-items: center; + -webkit-box-align: center; + align-items: center; +} + +.buddypress-wrap .bp-feedback.info .bp-icon, +.buddypress-wrap .bp-feedback.help .bp-icon { + background-color: #0b80a4; +} + +.buddypress-wrap .bp-feedback.info .bp-icon:before, +.buddypress-wrap .bp-feedback.help .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: 0.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.error, .buddypress-wrap #pass-strength-result.bad { + background-color: #ffb78c; + border-color: #ff853c; + color: #fff; +} + +.buddypress-wrap #pass-strength-result.short { + background-color: #ffa0a0; + border-color: #f04040; + color: #fff; +} + +.buddypress-wrap #pass-strength-result.strong { + background-color: #66d66e; + border-color: #438c48; + color: #fff; +} + +.buddypress-wrap .standard-form#signup_form div div.error { + background: #faa; + color: #a00; + margin: 0 0 10px 0; + padding: 0.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, 0.9); + border: 1px solid #eee; + font-size: 14px; + left: 2%; + position: absolute; + padding: 0.5em 1em; + right: 2%; + top: 30px; +} + +.buddypress.widget .item-options { + font-size: 14px; +} + +.buddypress.widget ul.item-list { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: column nowrap; + -moz-flex-flow: column nowrap; + -ms-flex-flow: column nowrap; + -o-flex-flow: column nowrap; + flex-flow: column nowrap; + list-style: none; + margin: 10px -2%; + overflow: hidden; +} + +@media screen and (min-width: 32em) { + .buddypress.widget ul.item-list { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + -o-flex-flow: row wrap; + flex-flow: row wrap; + } +} + +.buddypress.widget ul.item-list li { + border: 1px solid #eee; + -ms-flex-align: stretch; + -webkit-align-items: stretch; + -webkit-box-align: stretch; + align-items: stretch; + -webkit-flex: 1 1 46%; + -moz-flex: 1 1 46%; + -ms-flex: 1 1 46%; + -o-flex: 1 1 46%; + flex: 1 1 46%; + margin: 2%; +} + +@media screen and (min-width: 75em) { + .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 20%; + -moz-flex: 0 1 20%; + -ms-flex: 0 1 20%; + -o-flex: 0 1 20%; + flex: 0 1 20%; + } +} + +.buddypress.widget ul.item-list li .item-avatar { + padding: 0.5em; + text-align: center; +} + +.buddypress.widget ul.item-list li .item-avatar .avatar { + width: 60%; +} + +.buddypress.widget ul.item-list li .item { + padding: 0 0.5em 0.5em; +} + +.buddypress.widget ul.item-list li .item .item-meta { + font-size: 12px; + overflow-wrap: break-word; +} + +.buddypress.widget .activity-list { + padding: 0; +} + +.buddypress.widget .activity-list blockquote { + margin: 0 0 1.5em; + overflow: visible; + padding: 0 0 0.75em 0.75em; +} + +.buddypress.widget .activity-list img { + margin-bottom: 0.5em; +} + +.buddypress.widget .avatar-block { + display: -webkit-flex; + display: -moz-flex; + display: -ms-flex; + display: -o-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + -o-flex-flow: row wrap; + flex-flow: row wrap; +} + +.buddypress.widget .avatar-block img { + margin-bottom: 1em; + margin-right: 1em; +} + +.widget-area .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 46%; + -moz-flex: 0 1 46%; + -ms-flex: 0 1 46%; + -o-flex: 0 1 46%; + flex: 0 1 46%; + margin: 2% 2% 10px; +} + +@media screen and (min-width: 75em) { + .widget-area .buddypress.widget ul.item-list li .avatar { + width: 100%; + } +} + +@media screen and (min-width: 75em) { + .widget-area .buddypress.widget ul.item-list { + margin: 10px -2%; + width: 100%; + } + .widget-area .buddypress.widget ul.item-list li { + -webkit-flex: 0 1 auto; + -moz-flex: 0 1 auto; + -ms-flex: 0 1 auto; + -o-flex: 0 1 auto; + flex: 0 1 auto; + margin: 10px 2% 1%; + width: 46%; + } +} + +#buddypress-wrap * { + transition: opacity 0.1s ease-in-out 0.1s; +} + +#buddypress-wrap button, +#buddypress-wrap a.generic-button, +#buddypress-wrap a.button, +#buddypress-wrap input[type="submit"], +#buddypress-wrap input[type="reset"] { + transition: background 0.1s ease-in-out 0.1s, color 0.1s ease-in-out 0.1s, border-color 0.1s ease-in-out 0.1s; +} + +.buddypress-wrap a.loading, +.buddypress-wrap input.loading { + -moz-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + -webkit-animation: loader-pulsate 0.5s infinite ease-in-out alternate; + animation: loader-pulsate 0.5s infinite ease-in-out alternate; + border-color: #aaa; +} + +@-webkit-keyframes loader-pulsate { + from { + border-color: #aaa; + -webkit-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -webkit-box-shadow: 0 0 6px #f8f8f8; + box-shadow: 0 0 6px #f8f8f8; + } +} + +@-moz-keyframes loader-pulsate { + from { + border-color: #aaa; + -moz-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -moz-box-shadow: 0 0 6px #f8f8f8; + box-shadow: 0 0 6px #f8f8f8; + } +} + +@keyframes loader-pulsate { + from { + border-color: #aaa; + -moz-box-shadow: 0 0 6px #ccc; + box-shadow: 0 0 6px #ccc; + } + to { + border-color: #ccc; + -moz-box-shadow: 0 0 6px #f8f8f8; + 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; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + 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, 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; + -webkit-transition: all 1.5s ease; + -ms-transition: all 1.5s ease; + transition: all 1.5s ease; + white-space: nowrap; + word-wrap: break-word; + z-index: 100000; +} + +[data-bp-tooltip]:hover:after, [data-bp-tooltip]:active:after, [data-bp-tooltip]:focus: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%; + -webkit-transform: translate(-50%, 0); + -ms-transform: translate(-50%, 0); + transform: translate(-50%, 0); +} + +.user-list .bp-tooltip:after { + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +@media screen and (min-width: 46.8em) { + .user-list .bp-tooltip:after { + left: auto; + right: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); + } +} + +.activity-list .bp-tooltip:after, +.activity-meta-action .bp-tooltip:after, +.notification-actions .bp-tooltip:after, +.participants-list .bp-tooltip:after { + left: 0; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 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; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} + +.bp-invites-content #send-invites-editor .bp-tooltip:after { + left: 0; + right: auto; +} + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ +#item-body, +.single-screen-navs { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.grid > li, +.grid > li .generic-button a { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + 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: 0.5em; +} + +.grid > li .list-wrap .update { + color: #737373; + padding: 0.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 .last-activity, + .grid.groups-list .list-wrap .group-details, + .grid.groups-list .list-wrap .item-desc { + margin-bottom: 0; + } + .grid.groups-list .list-wrap .last-activity p, + .grid.groups-list .list-wrap .group-details p, + .grid.groups-list .list-wrap .item-desc 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; + } +} + +/* Build the two column class small up */ +@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.two > li, .grid.three > li { + width: 50%; + } + .grid.two > li:nth-child(odd), .grid.three > li:nth-child(odd) { + padding-right: 10px; + } + .grid.two > li:nth-child(even), .grid.three > li:nth-child(even) { + padding-left: 10px; + } + .grid.two > li .item, .grid.three > li .item { + margin: 1rem auto 0; + width: 80%; + } + .grid.two > li .item .item-title, .grid.three > li .item .item-title { + width: auto; + } +} + +/* Build the three column class medium up */ +@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; + } +} + +/* Build the four column class medium up */ +@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 .item-block, +.buddypress-wrap .grid.bp-list > li .item .group-desc { + 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 .item-avatar, +.buddypress-wrap .grid.bp-list > li .avatar, +.buddypress-wrap .grid.bp-list > li .item { + float: none; +} + +.buddypress-wrap .blogs-list.grid.two > li .blogs-title { + min-height: 5em; +} + +.buddypress-wrap .grid.three > li .group-desc, +.buddypress-wrap .grid.four > li .group-desc { + min-height: 8em; +} + +.buddypress-wrap .blogs-list.grid.three > li, +.buddypress-wrap .blogs-list.grid.four > li { + min-height: 350px; +} + +.buddypress-wrap .blogs-list.grid.three > li .last-activity, +.buddypress-wrap .blogs-list.grid.four > li .last-activity { + margin-bottom: 0; +} + +.buddypress-wrap .blogs-list.grid.three > li .last-post, +.buddypress-wrap .blogs-list.grid.four > 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 .user-nav-tabs.users-nav ul li, + .bp-single-vert-nav .bp-wrap .group-nav-tabs.groups-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 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: none; + } + .bp-single-vert-nav .item-body:not(#group-create-body) #subnav:not(.tabbed-links) li.current a { + background: none; + 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:hover, + .bp-dir-vert-nav .dir-navs ul li a:focus { + background: #ccc; + color: #333; + } + .bp-dir-vert-nav .dir-navs ul li a:hover span, + .bp-dir-vert-nav .dir-navs ul li a:focus 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:hover, + .buddypress-wrap.bp-vertical-navs .dir-navs.activity-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 .dir-navs.sites-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.groups-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.members-nav-tabs ul li:not(.selected) a:focus, + .buddypress-wrap.bp-vertical-navs .main-navs.user-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.group-nav-tabs ul li:not(.selected) a:hover, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li:not(.selected) a:focus { + background: none; + } + .buddypress-wrap.bp-vertical-navs .dir-navs.activity-nav-tabs ul li.selected, + .buddypress-wrap.bp-vertical-navs .dir-navs.sites-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 .main-navs.user-nav-tabs ul li.selected, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected { + background: none; + 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.sites-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 .main-navs.user-nav-tabs ul li.selected a, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a { + background: none; + 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.sites-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 .main-navs.user-nav-tabs ul li.selected a span, + .buddypress-wrap.bp-vertical-navs .main-navs.group-nav-tabs ul li.selected a span { + background: #555; + border: 1px solid #d6d6d6; + color: #fff; + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..2765c67ea6a1cac99bbd8199625b856ca418c77f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/buddypress.min.css @@ -0,0 +1 @@ +body #buddypress * a{box-shadow:none;text-decoration:none}body #buddypress #item-body blockquote,body #buddypress .bp-lists blockquote{margin-left:10px}body #buddypress .bp-list .action{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;max-width:none}body.buddypress .entry-content{float:none;max-width: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}.bp-wrap:after,.bp-wrap:before{content:" ";display:table}.bp-wrap:after{clear:both}.buddypress-wrap.round-avatars .avatar{border-radius:50%}div,dl,input[type=reset],input[type=search],input[type=submit],li,select,textarea{-webkit-border-radius:2px;-moz-border-radius:2px;-ms-border-radius:2px;border-radius:2px;background-clip:padding-box}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;-webkit-box-shadow:0 2px 12px 0 #fafafa;-moz-box-shadow:0 2px 12px 0 #fafafa;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:none;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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.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;-webkit-box-shadow:0 0 6px #d2d2d2;-moz-box-shadow:0 0 6px #d2d2d2;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:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap}.friends-request-list li .item,.membership-requests-list li .item{-webkit-flex:1 1 auto;-moz-flex:1 1 auto;-ms-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;-webkit-box-shadow:inset 0 0 6px #eee;-moz-box-shadow:inset 0 0 6px #eee;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}.activity-update-form #whats-new-content{padding:0 0 20px 0}.activity-update-form #whats-new-textarea textarea{background:#fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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{-webkit-box-shadow:0 0 6px 0 #d6d6d6;-moz-box-shadow:0 0 6px 0 #d6d6d6;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}.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 #activity-autocomplete{padding:.3em}.activity-update-form #whats-new-post-in-box #whats-new-post-in-box-items .bp-activity-object{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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}.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:8.5%}.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 auto;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:bottom}.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}.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;-webkit-box-shadow:0 0 6px 0 #eaeaea;-moz-box-shadow:0 0 6px 0 #eaeaea;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%}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-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{-webkit-box-shadow:0 0 6px #d6d6d6;-moz-box-shadow:0 0 6px #d6d6d6;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;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;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 .user-update{border:1px solid #eaeaea;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 .password-entry,.register-page .signup-form .password-entry-confirm{border:1px solid #eee}@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{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 .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}.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{-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-box-shadow:inset 0 0 9px #ccc;-moz-box-shadow:inset 0 0 9px #ccc;box-shadow:inset 0 0 9px #ccc;padding:1em;text-align:left}.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}.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}}.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{-webkit-box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2);-moz-box-shadow:inset 0 0 12px 0 rgba(237,187,52,.2);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;overflow:hidden}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 .button-nav{list-style:none;margin:30px 0 10px}.buddypress-wrap .profile.edit .button-nav li{display:inline-block;margin-right:10px}.buddypress-wrap .profile.edit .button-nav li a{font-size:18px}.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{-moz-box-shadow:none;-webkit-box-shadow:none;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:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap;margin:0;overflow:hidden;padding:.5em 0}#message-threads li .thread-cb{display:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;align-items:center;-webkit-flex:1 2 5%;-moz-flex:1 2 5%;-ms-flex:1 2 5%;-o-flex:1 2 5%;flex:1 2 5%}#message-threads li .thread-from,#message-threads li .thread-to{-webkit-flex:1 2 20%;-moz-flex:1 2 20%;-ms-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{-webkit-flex:1 2 60%;-moz-flex:1 2 60%;-ms-flex:1 2 60%;-o-flex:1 2 60%;flex:1 2 60%}#message-threads li .thread-date{-webkit-flex:1 2 15%;-moz-flex:1 2 15%;-ms-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%}.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;-webkit-box-shadow:-2px 1px 9px 0 #eee;-moz-box-shadow:-2px 1px 9px 0 #eee;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}.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%}.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{-webkit-box-shadow:0 0 8px #eaeaea;-moz-box-shadow:0 0 8px #eaeaea;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(.button-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:100%}.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.bp-dir-search-form,.buddypress-wrap form.bp-invites-search-form,.buddypress-wrap form.bp-messages-search-form{border:1px solid #eee;width:100%}@media screen and (min-width:55em){.buddypress-wrap form.bp-dir-search-form,.buddypress-wrap form.bp-invites-search-form,.buddypress-wrap form.bp-messages-search-form{width:15em}}.buddypress-wrap form.bp-dir-search-form label,.buddypress-wrap form.bp-invites-search-form label,.buddypress-wrap form.bp-messages-search-form label{margin:0}.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-invites-search-form button[type=submit],.buddypress-wrap form.bp-invites-search-form input[type=search],.buddypress-wrap form.bp-invites-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]{background:0 0;border:0;-webkit-border-radius:0;-moz-border-radius:0;-ms-border-radius:0;border-radius:0;background-clip:padding-box}.buddypress-wrap form.bp-dir-search-form input[type=search],.buddypress-wrap form.bp-dir-search-form input[type=text],.buddypress-wrap form.bp-invites-search-form input[type=search],.buddypress-wrap form.bp-invites-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]{float:left;line-height:1.5;padding:3px 10px;width:80%}.buddypress-wrap form.bp-dir-search-form button[type=submit],.buddypress-wrap form.bp-invites-search-form button[type=submit],.buddypress-wrap form.bp-messages-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.bp-dir-search-form button[type=submit] span,.buddypress-wrap form.bp-invites-search-form button[type=submit] span,.buddypress-wrap form.bp-messages-search-form button[type=submit] span{font-family:dashicons;font-size:18px;line-height:1.6}.buddypress-wrap form.bp-dir-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-invites-search-form button[type=submit].bp-show,.buddypress-wrap form.bp-messages-search-form button[type=submit].bp-show{height:auto;left:0;overflow:visible;position:static;top:0}.buddypress-wrap form.bp-dir-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-invites-search-form input[type=search]::-webkit-search-cancel-button,.buddypress-wrap form.bp-messages-search-form input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}.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-invites-search-form input[type=search]::-webkit-search-results-button,.buddypress-wrap form.bp-invites-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{display:none}.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:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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;color:#555;cursor:pointer;font-size:inherit;font-weight:400;outline:0;padding:.3em .5em;text-align:center;text-decoration:none;width:auto}.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;-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-clip:padding-box;-webkit-box-shadow:inset 0 0 6px 0 #eaeaea;-moz-box-shadow:inset 0 0 6px 0 #eaeaea;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;-webkit-box-shadow:inset 0 0 12px 0 #eaeaea;-moz-box-shadow:inset 0 0 12px 0 #eaeaea;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;-moz-box-shadow:none;-webkit-box-shadow:none;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;-webkit-box-shadow:0 0 3px 0 rgba(0,0,0,.2);-moz-box-shadow:0 0 3px 0 rgba(0,0,0,.2);box-shadow:0 0 3px 0 rgba(0,0,0,.2);color:#fff}.buddypress-wrap .bp-feedback:not(.custom-homepage-info){display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row nowrap;-moz-flex-flow:row nowrap;-ms-flex-flow:row nowrap;-o-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch}.buddypress-wrap .bp-feedback{background:#fff;color:#807f7f;-webkit-box-shadow:0 1px 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px 1px rgba(0,0,0,.1);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:-webkit-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-align:center;-webkit-align-items:center;-webkit-box-align:center;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:#fff}.buddypress-wrap #pass-strength-result.short{background-color:#ffa0a0;border-color:#f04040;color:#fff}.buddypress-wrap #pass-strength-result.strong{background-color:#66d66e;border-color:#438c48;color:#fff}.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:14px}.buddypress.widget ul.item-list{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;-o-flex-flow:column nowrap;flex-flow:column nowrap;list-style:none;margin:10px -2%;overflow:hidden}@media screen and (min-width:32em){.buddypress.widget ul.item-list{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;-o-flex-flow:row wrap;flex-flow:row wrap}}.buddypress.widget ul.item-list li{border:1px solid #eee;-ms-flex-align:stretch;-webkit-align-items:stretch;-webkit-box-align:stretch;align-items:stretch;-webkit-flex:1 1 46%;-moz-flex:1 1 46%;-ms-flex:1 1 46%;-o-flex:1 1 46%;flex:1 1 46%;margin:2%}@media screen and (min-width:75em){.buddypress.widget ul.item-list li{-webkit-flex:0 1 20%;-moz-flex:0 1 20%;-ms-flex:0 1 20%;-o-flex:0 1 20%;flex:0 1 20%}}.buddypress.widget ul.item-list li .item-avatar{padding:.5em;text-align:center}.buddypress.widget ul.item-list li .item-avatar .avatar{width:60%}.buddypress.widget ul.item-list li .item{padding:0 .5em .5em}.buddypress.widget ul.item-list li .item .item-meta{font-size:12px;overflow-wrap:break-word}.buddypress.widget .activity-list{padding:0}.buddypress.widget .activity-list blockquote{margin:0 0 1.5em;overflow:visible;padding:0 0 .75em .75em}.buddypress.widget .activity-list img{margin-bottom:.5em}.buddypress.widget .avatar-block{display:-webkit-flex;display:-moz-flex;display:-ms-flex;display:-o-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;-o-flex-flow:row wrap;flex-flow:row wrap}.buddypress.widget .avatar-block img{margin-bottom:1em;margin-right:1em}.widget-area .buddypress.widget ul.item-list li{-webkit-flex:0 1 46%;-moz-flex:0 1 46%;-ms-flex:0 1 46%;-o-flex:0 1 46%;flex:0 1 46%;margin:2% 2% 10px}@media screen and (min-width:75em){.widget-area .buddypress.widget ul.item-list li .avatar{width:100%}}@media screen and (min-width:75em){.widget-area .buddypress.widget ul.item-list{margin:10px -2%;width:100%}.widget-area .buddypress.widget ul.item-list li{-webkit-flex:0 1 auto;-moz-flex:0 1 auto;-ms-flex:0 1 auto;-o-flex:0 1 auto;flex:0 1 auto;margin:10px 2% 1%;width:46%}}#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{-moz-animation:loader-pulsate .5s infinite ease-in-out alternate;-webkit-animation:loader-pulsate .5s infinite ease-in-out alternate;animation:loader-pulsate .5s infinite ease-in-out alternate;border-color:#aaa}@-webkit-keyframes loader-pulsate{from{border-color:#aaa;-webkit-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-webkit-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@-moz-keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;box-shadow:0 0 6px #f8f8f8}}@keyframes loader-pulsate{from{border-color:#aaa;-moz-box-shadow:0 0 6px #ccc;box-shadow:0 0 6px #ccc}to{border-color:#ccc;-moz-box-shadow:0 0 6px #f8f8f8;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;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);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;-webkit-transition:all 1.5s ease;-ms-transition:all 1.5s ease;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%;-webkit-transform:translate(-50%,0);-ms-transform:translate(-50%,0);transform:translate(-50%,0)}.user-list .bp-tooltip:after{left:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}@media screen and (min-width:46.8em){.user-list .bp-tooltip:after{left:auto;right:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}}.activity-list .bp-tooltip:after,.activity-meta-action .bp-tooltip:after,.notification-actions .bp-tooltip:after,.participants-list .bp-tooltip:after{left:0;-webkit-transform:translate(0,0);-ms-transform:translate(0,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;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.bp-invites-content #send-invites-editor .bp-tooltip:after{left:0;right:auto}#item-body,.single-screen-navs{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.grid>li,.grid>li .generic-button a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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/embeds-activity-rtl.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity-rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..a548db7d482c6be080520366b02d710c5b103536 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity-rtl.css @@ -0,0 +1,158 @@ +/** + * Embeds Activity styles + * + * @version 3.0.0 + */ +#bp-embed-header:after { + clear: both; + content: ""; + display: table; + margin-bottom: 1em; +} + +.bp-embed-avatar { + float: right; + margin: 0 0 0 0.75em; +} + +p.bp-embed-activity-action { + font-size: 15px; + margin-bottom: 0; +} + +p.bp-embed-activity-action a:first-child { + color: #32373c; + font-weight: 700; +} + +p.bp-embed-activity-action img.avatar { + padding: 0 3px 0 4px; + vertical-align: text-bottom; +} + +.bp-embed-excerpt { + margin-bottom: 1em; +} + +.bp-embed-excerpt a { + color: #21759b; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + max-width: 250px; +} + +.activity-read-more { + margin-right: 0.5em; +} + +.activity-read-more a { + color: #b4b9be; +} + +.wp-embed-footer { + margin-top: 20px; +} + +span.bp-embed-timestamp { + font-size: 0.9em; +} + +video { + width: 100%; + height: auto; +} + +.bp-activity-embed-display-media { + border: 1px solid #ccc; + border-radius: 6px; +} + +.bp-activity-embed-display-media.one-col, +.bp-activity-embed-display-media.one-col .thumb, +.bp-activity-embed-display-media.one-col .thumb img { + width: 100%; +} + +.bp-activity-embed-display-media.two-col .thumb, +.bp-activity-embed-display-media.two-col .caption { + display: table-cell; +} + +.bp-activity-embed-display-media.two-col .thumb { + background: #000; + vertical-align: middle; +} + +.bp-activity-embed-display-media.two-col .caption { + vertical-align: top; +} + +.bp-activity-embed-display-media.two-col .thumb img { + border-left: 1px solid #ccc; + display: block; + width: 100%; +} + +.bp-activity-embed-display-media .thumb { + position: relative; +} + +.bp-activity-embed-display-media .caption { + padding: 0.2em 0.5em 0.5em; +} + +a.play-btn { + background: rgba(0, 0, 0, 0.75); + border-radius: 50%; + height: 50px; + right: 50%; + margin: 0; + padding: 1em; + position: absolute; + text-indent: 0.25em; + top: 50%; + transform: translateY(-50%) translateX(50%); + -webkit-transform: translateY(-50%) translateX(50%); + transition: all 0.2s ease-out; + width: 50px; +} + +.bp-activity-embed-display-media.two-col a.play-btn { + height: 35px; + width: 35px; +} + +a.play-btn:hover { + background: rgba(0, 0, 0, 0.95); + transform: translateY(-50%) translateX(50%) scale(1.05); + -webkit-transform: translateY(-50%) translateX(50%) scale(1.05); + transition: all 0.2s ease-out; +} + +.bp-activity-embed-display-media .thumb svg { + fill: #fff; + overflow: hidden; +} + +.bp-activity-embed-display-media .caption-description { + font-size: 90%; + margin: 0.4em 0; +} + +@media only screen and (max-width: 480px) { + + .bp-activity-embed-display-media.two-col .thumb { + border-bottom: 1px solid #ccc; + border-left: 0; + display: block; + max-width: none !important; + } + + a.play-btn { + height: 35px; + width: 35px; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity-rtl.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity-rtl.min.css new file mode 100644 index 0000000000000000000000000000000000000000..dee10306c21a1814878f4e7dfac64975fc1c276c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity-rtl.min.css @@ -0,0 +1 @@ +#bp-embed-header:after{clear:both;content:"";display:table;margin-bottom:1em}.bp-embed-avatar{float:right;margin:0 0 0 .75em}p.bp-embed-activity-action{font-size:15px;margin-bottom:0}p.bp-embed-activity-action a:first-child{color:#32373c;font-weight:700}p.bp-embed-activity-action img.avatar{padding:0 3px 0 4px;vertical-align:text-bottom}.bp-embed-excerpt{margin-bottom:1em}.bp-embed-excerpt a{color:#21759b;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:250px}.activity-read-more{margin-right:.5em}.activity-read-more a{color:#b4b9be}.wp-embed-footer{margin-top:20px}span.bp-embed-timestamp{font-size:.9em}video{width:100%;height:auto}.bp-activity-embed-display-media{border:1px solid #ccc;border-radius:6px}.bp-activity-embed-display-media.one-col,.bp-activity-embed-display-media.one-col .thumb,.bp-activity-embed-display-media.one-col .thumb img{width:100%}.bp-activity-embed-display-media.two-col .caption,.bp-activity-embed-display-media.two-col .thumb{display:table-cell}.bp-activity-embed-display-media.two-col .thumb{background:#000;vertical-align:middle}.bp-activity-embed-display-media.two-col .caption{vertical-align:top}.bp-activity-embed-display-media.two-col .thumb img{border-left:1px solid #ccc;display:block;width:100%}.bp-activity-embed-display-media .thumb{position:relative}.bp-activity-embed-display-media .caption{padding:.2em .5em .5em}a.play-btn{background:rgba(0,0,0,.75);border-radius:50%;height:50px;right:50%;margin:0;padding:1em;position:absolute;text-indent:.25em;top:50%;transform:translateY(-50%) translateX(50%);-webkit-transform:translateY(-50%) translateX(50%);transition:all .2s ease-out;width:50px}.bp-activity-embed-display-media.two-col a.play-btn{height:35px;width:35px}a.play-btn:hover{background:rgba(0,0,0,.95);transform:translateY(-50%) translateX(50%) scale(1.05);-webkit-transform:translateY(-50%) translateX(50%) scale(1.05);transition:all .2s ease-out}.bp-activity-embed-display-media .thumb svg{fill:#fff;overflow:hidden}.bp-activity-embed-display-media .caption-description{font-size:90%;margin:.4em 0}@media only screen and (max-width:480px){.bp-activity-embed-display-media.two-col .thumb{border-bottom:1px solid #ccc;border-left:0;display:block;max-width:none!important}a.play-btn{height:35px;width:35px}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.css new file mode 100644 index 0000000000000000000000000000000000000000..dafc770be5eef87e3552c5b122180f0ce4842dc1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.css @@ -0,0 +1,158 @@ +/** + * Embeds Activity styles + * + * @version 3.0.0 + */ +#bp-embed-header:after { + clear: both; + content: ""; + display: table; + margin-bottom: 1em; +} + +.bp-embed-avatar { + float: left; + margin: 0 0.75em 0 0; +} + +p.bp-embed-activity-action { + font-size: 15px; + margin-bottom: 0; +} + +p.bp-embed-activity-action a:first-child { + color: #32373c; + font-weight: 700; +} + +p.bp-embed-activity-action img.avatar { + padding: 0 4px 0 3px; + vertical-align: text-bottom; +} + +.bp-embed-excerpt { + margin-bottom: 1em; +} + +.bp-embed-excerpt a { + color: #21759b; + display: inline-block; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + max-width: 250px; +} + +.activity-read-more { + margin-left: 0.5em; +} + +.activity-read-more a { + color: #b4b9be; +} + +.wp-embed-footer { + margin-top: 20px; +} + +span.bp-embed-timestamp { + font-size: 0.9em; +} + +video { + width: 100%; + height: auto; +} + +.bp-activity-embed-display-media { + border: 1px solid #ccc; + border-radius: 6px; +} + +.bp-activity-embed-display-media.one-col, +.bp-activity-embed-display-media.one-col .thumb, +.bp-activity-embed-display-media.one-col .thumb img { + width: 100%; +} + +.bp-activity-embed-display-media.two-col .thumb, +.bp-activity-embed-display-media.two-col .caption { + display: table-cell; +} + +.bp-activity-embed-display-media.two-col .thumb { + background: #000; + vertical-align: middle; +} + +.bp-activity-embed-display-media.two-col .caption { + vertical-align: top; +} + +.bp-activity-embed-display-media.two-col .thumb img { + border-right: 1px solid #ccc; + display: block; + width: 100%; +} + +.bp-activity-embed-display-media .thumb { + position: relative; +} + +.bp-activity-embed-display-media .caption { + padding: 0.2em 0.5em 0.5em; +} + +a.play-btn { + background: rgba(0, 0, 0, 0.75); + border-radius: 50%; + height: 50px; + left: 50%; + margin: 0; + padding: 1em; + position: absolute; + text-indent: 0.25em; + top: 50%; + transform: translateY(-50%) translateX(-50%); + -webkit-transform: translateY(-50%) translateX(-50%); + transition: all 0.2s ease-out; + width: 50px; +} + +.bp-activity-embed-display-media.two-col a.play-btn { + height: 35px; + width: 35px; +} + +a.play-btn:hover { + background: rgba(0, 0, 0, 0.95); + transform: translateY(-50%) translateX(-50%) scale(1.05); + -webkit-transform: translateY(-50%) translateX(-50%) scale(1.05); + transition: all 0.2s ease-out; +} + +.bp-activity-embed-display-media .thumb svg { + fill: #fff; + overflow: hidden; +} + +.bp-activity-embed-display-media .caption-description { + font-size: 90%; + margin: 0.4em 0; +} + +@media only screen and (max-width: 480px) { + + .bp-activity-embed-display-media.two-col .thumb { + border-bottom: 1px solid #ccc; + border-right: 0; + display: block; + max-width: none !important; + } + + a.play-btn { + height: 35px; + width: 35px; + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.min.css b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.min.css new file mode 100644 index 0000000000000000000000000000000000000000..15259126b6fddb9d8fb66f82da362ba51e7686d7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/css/embeds-activity.min.css @@ -0,0 +1 @@ +#bp-embed-header:after{clear:both;content:"";display:table;margin-bottom:1em}.bp-embed-avatar{float:left;margin:0 .75em 0 0}p.bp-embed-activity-action{font-size:15px;margin-bottom:0}p.bp-embed-activity-action a:first-child{color:#32373c;font-weight:700}p.bp-embed-activity-action img.avatar{padding:0 4px 0 3px;vertical-align:text-bottom}.bp-embed-excerpt{margin-bottom:1em}.bp-embed-excerpt a{color:#21759b;display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:250px}.activity-read-more{margin-left:.5em}.activity-read-more a{color:#b4b9be}.wp-embed-footer{margin-top:20px}span.bp-embed-timestamp{font-size:.9em}video{width:100%;height:auto}.bp-activity-embed-display-media{border:1px solid #ccc;border-radius:6px}.bp-activity-embed-display-media.one-col,.bp-activity-embed-display-media.one-col .thumb,.bp-activity-embed-display-media.one-col .thumb img{width:100%}.bp-activity-embed-display-media.two-col .caption,.bp-activity-embed-display-media.two-col .thumb{display:table-cell}.bp-activity-embed-display-media.two-col .thumb{background:#000;vertical-align:middle}.bp-activity-embed-display-media.two-col .caption{vertical-align:top}.bp-activity-embed-display-media.two-col .thumb img{border-right:1px solid #ccc;display:block;width:100%}.bp-activity-embed-display-media .thumb{position:relative}.bp-activity-embed-display-media .caption{padding:.2em .5em .5em}a.play-btn{background:rgba(0,0,0,.75);border-radius:50%;height:50px;left:50%;margin:0;padding:1em;position:absolute;text-indent:.25em;top:50%;transform:translateY(-50%) translateX(-50%);-webkit-transform:translateY(-50%) translateX(-50%);transition:all .2s ease-out;width:50px}.bp-activity-embed-display-media.two-col a.play-btn{height:35px;width:35px}a.play-btn:hover{background:rgba(0,0,0,.95);transform:translateY(-50%) translateX(-50%) scale(1.05);-webkit-transform:translateY(-50%) translateX(-50%) scale(1.05);transition:all .2s ease-out}.bp-activity-embed-display-media .thumb svg{fill:#fff;overflow:hidden}.bp-activity-embed-display-media .caption-description{font-size:90%;margin:.4em 0}@media only screen and (max-width:480px){.bp-activity-embed-display-media.two-col .thumb{border-bottom:1px solid #ccc;border-right:0;display:block;max-width:none!important}a.play-btn{height:35px;width:35px}} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/ajax.php new file mode 100644 index 0000000000000000000000000000000000000000..30af68395b97850f0f6611ca95a8f7364fd32b04 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/ajax.php @@ -0,0 +1,636 @@ +<?php +/** + * Activity Ajax functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +add_action( 'admin_init', function() { + $ajax_actions = array( + array( + 'activity_filter' => array( + 'function' => 'bp_nouveau_ajax_object_template_loader', + 'nopriv' => true, + ), + ), + array( + 'get_single_activity_content' => array( + 'function' => 'bp_nouveau_ajax_get_single_activity_content', + 'nopriv' => true, + ), + ), + array( + 'activity_mark_fav' => array( + 'function' => 'bp_nouveau_ajax_mark_activity_favorite', + 'nopriv' => false, + ), + ), + array( + 'activity_mark_unfav' => array( + 'function' => 'bp_nouveau_ajax_unmark_activity_favorite', + 'nopriv' => false, + ), + ), + array( + 'activity_clear_new_mentions' => array( + 'function' => 'bp_nouveau_ajax_clear_new_mentions', + 'nopriv' => false, + ), + ), + array( + 'delete_activity' => array( + 'function' => 'bp_nouveau_ajax_delete_activity', + 'nopriv' => false, + ), + ), + array( + 'new_activity_comment' => array( + 'function' => 'bp_nouveau_ajax_new_activity_comment', + 'nopriv' => false, + ), + ), + array( + 'bp_nouveau_get_activity_objects' => array( + 'function' => 'bp_nouveau_ajax_get_activity_objects', + 'nopriv' => false, + ), + ), + array( + 'post_update' => array( + 'function' => 'bp_nouveau_ajax_post_update', + 'nopriv' => false, + ), + ), + array( + 'bp_spam_activity' => array( + 'function' => 'bp_nouveau_ajax_spam_activity', + 'nopriv' => false, + ), + ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } +}, 12 ); + +/** + * Mark an activity as a favourite via a POST request. + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_mark_activity_favorite() { + if ( ! bp_is_post_request() ) { + wp_send_json_error(); + } + + // Nonce check! + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_activity' ) ) { + wp_send_json_error(); + } + + if ( bp_activity_add_user_favorite( $_POST['id'] ) ) { + $response = array( 'content' => __( 'Remove Favorite', 'buddypress' ) ); + + if ( ! bp_is_user() ) { + $fav_count = (int) bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ); + + if ( 1 === $fav_count ) { + $response['directory_tab'] = '<li id="activity-favorites" data-bp-scope="favorites" data-bp-object="activity"> + <a href="' . bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/"> + ' . esc_html__( 'My Favorites', 'buddypress' ) . ' + </a> + </li>'; + } else { + $response['fav_count'] = $fav_count; + } + } + + wp_send_json_success( $response ); + } else { + wp_send_json_error(); + } +} + +/** + * Un-favourite an activity via a POST request. + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_unmark_activity_favorite() { + if ( ! bp_is_post_request() ) { + wp_send_json_error(); + } + + // Nonce check! + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_activity' ) ) { + wp_send_json_error(); + } + + if ( bp_activity_remove_user_favorite( $_POST['id'] ) ) { + $response = array( 'content' => __( 'Favorite', 'buddypress' ) ); + + $fav_count = (int) bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ); + + if ( 0 === $fav_count && ! bp_is_single_activity() ) { + $response['no_favorite'] = '<li><div class="bp-feedback bp-messages info"> + ' . __( 'Sorry, there was no activity found. Please try a different filter.', 'buddypress' ) . ' + </div></li>'; + } else { + $response['fav_count'] = $fav_count; + } + + wp_send_json_success( $response ); + } else { + wp_send_json_error(); + } +} + +/** + * Clear mentions if the directory tab is clicked + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_clear_new_mentions() { + if ( ! bp_is_post_request() ) { + wp_send_json_error(); + } + + // Nonce check! + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_activity' ) ) { + wp_send_json_error(); + } + + bp_activity_clear_new_mentions( bp_loggedin_user_id() ); + wp_send_json_success(); +} + +/** + * Deletes an Activity item/Activity comment item received via a POST request. + * + * @since 3.0.0 + * + * @return string JSON reply. + */ +function bp_nouveau_ajax_delete_activity() { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html__( 'There was a problem when deleting. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + wp_send_json_error( $response ); + } + + // Nonce check! + if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'bp_activity_delete_link' ) ) { + wp_send_json_error( $response ); + } + + if ( ! is_user_logged_in() ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['id'] ) || ! is_numeric( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + $activity = new BP_Activity_Activity( (int) $_POST['id'] ); + + // Check access. + if ( ! bp_activity_user_can_delete( $activity ) ) { + wp_send_json_error( $response ); + } + + /** This action is documented in bp-activity/bp-activity-actions.php */ + do_action( 'bp_activity_before_action_delete_activity', $activity->id, $activity->user_id ); + + // Deleting an activity comment. + if ( ! empty( $_POST['is_comment'] ) ) { + if ( ! bp_activity_delete_comment( $activity->item_id, $activity->id ) ) { + wp_send_json_error( $response ); + } + + // Deleting an activity. + } else { + if ( ! bp_activity_delete( array( 'id' => $activity->id, 'user_id' => $activity->user_id ) ) ) { + wp_send_json_error( $response ); + } + } + + /** This action is documented in bp-activity/bp-activity-actions.php */ + do_action( 'bp_activity_action_delete_activity', $activity->id, $activity->user_id ); + + // The activity has been deleted successfully + $response = array( 'deleted' => $activity->id ); + + // If on a single activity redirect to user's home. + if ( ! empty( $_POST['is_single'] ) ) { + $response['redirect'] = bp_core_get_user_domain( $activity->user_id ); + bp_core_add_message( __( 'Activity deleted successfully', 'buddypress' ) ); + } + + wp_send_json_success( $response ); +} + +/** + * Fetches an activity's full, non-excerpted content via a POST request. + * Used for the 'Read More' link on long activity items. + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_get_single_activity_content() { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html__( 'There was a problem displaying the content. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + wp_send_json_error( $response ); + } + + // Nonce check! + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_activity' ) ) { + wp_send_json_error( $response ); + } + + $activity_array = bp_activity_get_specific( + array( + 'activity_ids' => $_POST['id'], + 'display_comments' => 'stream', + ) + ); + + if ( empty( $activity_array['activities'][0] ) ) { + wp_send_json_error( $response ); + } + + $activity = $activity_array['activities'][0]; + + /** + * Fires before the return of an activity's full, non-excerpted content via a POST request. + * + * @since 3.0.0 + * + * @param string $activity Activity content. Passed by reference. + */ + do_action_ref_array( 'bp_nouveau_get_single_activity_content', array( &$activity ) ); + + // Activity content retrieved through AJAX should run through normal filters, but not be truncated. + remove_filter( 'bp_get_activity_content_body', 'bp_activity_truncate_entry', 5 ); + + /** This filter is documented in bp-activity/bp-activity-template.php */ + $content = apply_filters( 'bp_get_activity_content_body', $activity->content ); + + wp_send_json_success( array( 'contents' => $content ) ); +} + +/** + * Posts new Activity comments received via a POST request. + * + * @since 3.0.0 + * + * @global BP_Activity_Template $activities_template + * + * @return string JSON reply + */ +function bp_nouveau_ajax_new_activity_comment() { + global $activities_template; + $bp = buddypress(); + + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html__( 'There was an error posting your reply. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + wp_send_json_error( $response ); + } + + // Nonce check! + if ( empty( $_POST['_wpnonce_new_activity_comment'] ) || ! wp_verify_nonce( $_POST['_wpnonce_new_activity_comment'], 'new_activity_comment' ) ) { + wp_send_json_error( $response ); + } + + if ( ! is_user_logged_in() ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['content'] ) ) { + wp_send_json_error( array( 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html__( 'Please do not leave the comment area blank.', 'buddypress' ) + ) ) ); + } + + if ( empty( $_POST['form_id'] ) || empty( $_POST['comment_id'] ) || ! is_numeric( $_POST['form_id'] ) || ! is_numeric( $_POST['comment_id'] ) ) { + wp_send_json_error( $response ); + } + + $comment_id = bp_activity_new_comment( array( + 'activity_id' => $_POST['form_id'], + 'content' => $_POST['content'], + 'parent_id' => $_POST['comment_id'], + ) ); + + if ( ! $comment_id ) { + if ( ! empty( $bp->activity->errors['new_comment'] ) && is_wp_error( $bp->activity->errors['new_comment'] ) ) { + $response = array( 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html( $bp->activity->errors['new_comment']->get_error_message() ) + ) ); + unset( $bp->activity->errors['new_comment'] ); + } + + wp_send_json_error( $response ); + } + + // Load the new activity item into the $activities_template global. + bp_has_activities( + array( + 'display_comments' => 'stream', + 'hide_spam' => false, + 'show_hidden' => true, + 'include' => $comment_id, + ) + ); + + // Swap the current comment with the activity item we just loaded. + if ( isset( $activities_template->activities[0] ) ) { + $activities_template->activity = new stdClass(); + $activities_template->activity->id = $activities_template->activities[0]->item_id; + $activities_template->activity->current_comment = $activities_template->activities[0]; + + // Because the whole tree has not been loaded, we manually + // determine depth. + $depth = 1; + $parent_id = (int) $activities_template->activities[0]->secondary_item_id; + while ( $parent_id !== (int) $activities_template->activities[0]->item_id ) { + $depth++; + $p_obj = new BP_Activity_Activity( $parent_id ); + $parent_id = (int) $p_obj->secondary_item_id; + } + $activities_template->activity->current_comment->depth = $depth; + } + + ob_start(); + // Get activity comment template part. + bp_get_template_part( 'activity/comment' ); + $response = array( 'contents' => ob_get_contents() ); + ob_end_clean(); + + unset( $activities_template ); + + wp_send_json_success( $response ); +} + +/** + * Get items to attach the activity to. + * + * This is used within the activity post form autocomplete field. + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_get_activity_objects() { + $response = array(); + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_activity' ) ) { + wp_send_json_error( $response ); + } + + if ( 'group' === $_POST['type'] ) { + $groups = groups_get_groups( + array( + 'user_id' => bp_loggedin_user_id(), + 'search_terms' => $_POST['search'], + 'show_hidden' => true, + 'per_page' => 2, + ) + ); + + wp_send_json_success( array_map( 'bp_nouveau_prepare_group_for_js', $groups['groups'] ) ); + } else { + + /** + * Filters the response for custom activity objects. + * + * @since 3.0.0 + * + * @param array $response Array of custom response objects to send to AJAX return. + * @param array $value Activity object type from $_POST global. + */ + $response = apply_filters( 'bp_nouveau_get_activity_custom_objects', $response, $_POST['type'] ); + } + + if ( empty( $response ) ) { + wp_send_json_error( array( 'error' => __( 'No activites were found.', 'buddypress' ) ) ); + } else { + wp_send_json_success( $response ); + } +} + +/** + * Processes Activity updates received via a POST request. + * + * @since 3.0.0 + * + * @return string JSON reply + */ +function bp_nouveau_ajax_post_update() { + $bp = buddypress(); + + if ( ! is_user_logged_in() || empty( $_POST['_wpnonce_post_update'] ) || ! wp_verify_nonce( $_POST['_wpnonce_post_update'], 'post_update' ) ) { + wp_send_json_error(); + } + + if ( empty( $_POST['content'] ) ) { + wp_send_json_error( + array( + 'message' => __( 'Please enter some content to post.', 'buddypress' ), + ) + ); + } + + $activity_id = 0; + $item_id = 0; + $object = ''; + $is_private = false; + + // Try to get the item id from posted variables. + if ( ! empty( $_POST['item_id'] ) ) { + $item_id = (int) $_POST['item_id']; + } + + // Try to get the object from posted variables. + if ( ! empty( $_POST['object'] ) ) { + $object = sanitize_key( $_POST['object'] ); + + // If the object is not set and we're in a group, set the item id and the object + } elseif ( bp_is_group() ) { + $item_id = bp_get_current_group_id(); + $object = 'group'; + $status = groups_get_current_group()->status; + } + + if ( 'user' === $object && bp_is_active( 'activity' ) ) { + $activity_id = bp_activity_post_update( array( 'content' => $_POST['content'] ) ); + + } elseif ( 'group' === $object ) { + if ( $item_id && bp_is_active( 'groups' ) ) { + // This function is setting the current group! + $activity_id = groups_post_update( + array( + 'content' => $_POST['content'], + 'group_id' => $item_id, + ) + ); + + if ( empty( $status ) ) { + if ( ! empty( $bp->groups->current_group->status ) ) { + $status = $bp->groups->current_group->status; + } else { + $group = groups_get_group( array( 'group_id' => $group_id ) ); + $status = $group->status; + } + + $is_private = 'public' !== $status; + } + } + + } else { + /** This filter is documented in bp-activity/bp-activity-actions.php */ + $activity_id = apply_filters( 'bp_activity_custom_update', false, $object, $item_id, $_POST['content'] ); + } + + if ( empty( $activity_id ) ) { + wp_send_json_error( + array( + 'message' => __( 'There was a problem posting your update. Please try again.', 'buddypress' ), + ) + ); + } + + ob_start(); + if ( bp_has_activities( array( 'include' => $activity_id, 'show_hidden' => $is_private ) ) ) { + while ( bp_activities() ) { + bp_the_activity(); + bp_get_template_part( 'activity/entry' ); + } + } + $acivity = ob_get_contents(); + ob_end_clean(); + + wp_send_json_success( array( + 'id' => $activity_id, + 'message' => esc_html__( 'Update posted.', 'buddypress' ) . ' ' . sprintf( '<a href="%s" class="just-posted">%s</a>', esc_url( bp_activity_get_permalink( $activity_id ) ), esc_html__( 'View activity.', 'buddypress' ) ), + 'activity' => $acivity, + + /** + * Filters whether or not an AJAX post update is private. + * + * @since 3.0.0 + * + * @param string/bool $is_private Privacy status for the update. + */ + 'is_private' => apply_filters( 'bp_nouveau_ajax_post_update_is_private', $is_private ), + 'is_directory' => bp_is_activity_directory(), + ) ); +} + +/** + * AJAX spam an activity item or comment. + * + * @since 3.0.0 + * + * @return string JSON reply. + */ +function bp_nouveau_ajax_spam_activity() { + $bp = buddypress(); + + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback bp-messages error">%s</div>', + esc_html__( 'There was a problem marking this activity as spam. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + wp_send_json_error( $response ); + } + + if ( ! is_user_logged_in() || ! bp_is_active( 'activity' ) || empty( $bp->activity->akismet ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['id'] ) || ! is_numeric( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + // Is the current user allowed to spam items? + if ( ! bp_activity_user_can_mark_spam() ) { + wp_send_json_error( $response ); + } + + $activity = new BP_Activity_Activity( (int) $_POST['id'] ); + + if ( empty( $activity->component ) ) { + wp_send_json_error( $response ); + } + + // Nonce check! + if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'bp_activity_akismet_spam_' . $activity->id ) ) { + wp_send_json_error( $response ); + } + + /** This action is documented in bp-activity/bp-activity-actions.php */ + do_action( 'bp_activity_before_action_spam_activity', $activity->id, $activity ); + + // Mark as spam. + bp_activity_mark_as_spam( $activity ); + $activity->save(); + + /** This action is documented in bp-activity/bp-activity-actions.php */ + do_action( 'bp_activity_action_spam_activity', $activity->id, $activity->user_id ); + + // Prepare the successfull reply + $response = array( 'spammed' => $activity->id ); + + // If on a single activity redirect to user's home. + if ( ! empty( $_POST['is_single'] ) ) { + $response['redirect'] = bp_core_get_user_domain( $activity->user_id ); + bp_core_add_message( __( 'This activity has been marked as spam and is no longer visible.', 'buddypress' ) ); + } + + // Send the json reply + wp_send_json_success( $response ); +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..5c6eed89614b4b952ccceda982fbcea67b36738f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/functions.php @@ -0,0 +1,534 @@ +<?php +/** + * Activity functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Register Scripts for the Activity component + * + * @since 3.0.0 + * + * @param array $scripts The array of scripts to register. + * + * @return array The same array with the specific activity scripts. + */ +function bp_nouveau_activity_register_scripts( $scripts = array() ) { + if ( ! isset( $scripts['bp-nouveau'] ) ) { + return $scripts; + } + + return array_merge( $scripts, array( + 'bp-nouveau-activity' => array( + 'file' => 'js/buddypress-activity%s.js', + 'dependencies' => array( 'bp-nouveau' ), + 'footer' => true, + ), + 'bp-nouveau-activity-post-form' => array( + 'file' => 'js/buddypress-activity-post-form%s.js', + 'dependencies' => array( 'bp-nouveau', 'bp-nouveau-activity', 'json2', 'wp-backbone' ), + 'footer' => true, + ), + ) ); +} + +/** + * Enqueue the activity scripts + * + * @since 3.0.0 + */ +function bp_nouveau_activity_enqueue_scripts() { + if ( ! bp_is_activity_component() && ! bp_is_group_activity() ) { + return; + } + + wp_enqueue_script( 'bp-nouveau-activity' ); +} + +/** + * Localize the strings needed for the Activity Post form UI + * + * @since 3.0.0 + * + * @param array $params Associative array containing the JS Strings needed by scripts. + * + * @return array The same array with specific strings for the Activity Post form UI if needed. + */ +function bp_nouveau_activity_localize_scripts( $params = array() ) { + if ( ! bp_is_activity_component() && ! bp_is_group_activity() ) { + return $params; + } + + $activity_params = array( + 'user_id' => bp_loggedin_user_id(), + 'object' => 'user', + 'backcompat' => (bool) has_action( 'bp_activity_post_form_options' ), + 'post_nonce' => wp_create_nonce( 'post_update', '_wpnonce_post_update' ), + ); + + $user_displayname = bp_get_loggedin_user_fullname(); + + if ( buddypress()->avatar->show_avatars ) { + $width = bp_core_avatar_thumb_width(); + $height = bp_core_avatar_thumb_height(); + $activity_params = array_merge( $activity_params, array( + 'avatar_url' => bp_get_loggedin_user_avatar( array( + 'width' => $width, + 'height' => $height, + 'html' => false, + ) ), + 'avatar_width' => $width, + 'avatar_height' => $height, + 'user_domain' => bp_loggedin_user_domain(), + 'avatar_alt' => sprintf( + /* translators: %s = member name */ + __( 'Profile photo of %s', 'buddypress' ), + $user_displayname + ), + ) ); + } + + /** + * Filters the included, specific, Action buttons. + * + * @since 3.0.0 + * + * @param array $value The array containing the button params. Must look like: + * array( 'buttonid' => array( + * 'id' => 'buttonid', // Id for your action + * 'caption' => __( 'Button caption', 'text-domain' ), + * 'icon' => 'dashicons-*', // The dashicon to use + * 'order' => 0, + * 'handle' => 'button-script-handle', // The handle of the registered script to enqueue + * ); + */ + $activity_buttons = apply_filters( 'bp_nouveau_activity_buttons', array() ); + + if ( ! empty( $activity_buttons ) ) { + $activity_params['buttons'] = bp_sort_by_key( $activity_buttons, 'order', 'num' ); + + // Enqueue Buttons scripts and styles + foreach ( $activity_params['buttons'] as $key_button => $buttons ) { + if ( empty( $buttons['handle'] ) ) { + continue; + } + + if ( wp_style_is( $buttons['handle'], 'registered' ) ) { + wp_enqueue_style( $buttons['handle'] ); + } + + if ( wp_script_is( $buttons['handle'], 'registered' ) ) { + wp_enqueue_script( $buttons['handle'] ); + } + + unset( $activity_params['buttons'][ $key_button ]['handle'] ); + } + } + + // Activity Objects + if ( ! bp_is_single_item() && ! bp_is_user() ) { + $activity_objects = array( + 'profile' => array( + 'text' => __( 'Post in: Profile', 'buddypress' ), + 'autocomplete_placeholder' => '', + 'priority' => 5, + ), + ); + + // the groups component is active & the current user is at least a member of 1 group + if ( bp_is_active( 'groups' ) && bp_has_groups( array( 'user_id' => bp_loggedin_user_id(), 'max' => 1 ) ) ) { + $activity_objects['group'] = array( + 'text' => __( 'Post in: Group', 'buddypress' ), + 'autocomplete_placeholder' => __( 'Start typing the group name...', 'buddypress' ), + 'priority' => 10, + ); + } + + /** + * Filters the activity objects to apply for localized javascript data. + * + * @since 3.0.0 + * + * @param array $activity_objects Array of activity objects. + */ + $activity_params['objects'] = apply_filters( 'bp_nouveau_activity_objects', $activity_objects ); + } + + $activity_strings = array( + 'whatsnewPlaceholder' => sprintf( __( "What's new, %s?", 'buddypress' ), bp_get_user_firstname( $user_displayname ) ), + 'whatsnewLabel' => __( 'Post what\'s new', 'buddypress' ), + 'whatsnewpostinLabel' => __( 'Post in', 'buddypress' ), + 'postUpdateButton' => __( 'Post Update', 'buddypress' ), + 'cancelButton' => __( 'Cancel', 'buddypress' ), + ); + + if ( bp_is_group() ) { + $activity_params = array_merge( + $activity_params, + array( + 'object' => 'group', + 'item_id' => bp_get_current_group_id(), + ) + ); + } + + $params['activity'] = array( + 'params' => $activity_params, + 'strings' => $activity_strings, + ); + + return $params; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_get_activity_directory_nav_items() { + $nav_items = array(); + + $nav_items['all'] = array( + 'component' => 'activity', + 'slug' => 'all', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'dynamic' ), + 'link' => bp_get_activity_directory_permalink(), + 'text' => __( 'All Members', 'buddypress' ), + 'count' => '', + 'position' => 5, + ); + + // deprecated hooks + $deprecated_hooks = array( + array( 'bp_before_activity_type_tab_all', 'activity', 0 ), + array( 'bp_activity_type_tabs', 'activity', 46 ), + ); + + if ( is_user_logged_in() ) { + $deprecated_hooks = array_merge( + $deprecated_hooks, + array( + array( 'bp_before_activity_type_tab_friends', 'activity', 6 ), + array( 'bp_before_activity_type_tab_groups', 'activity', 16 ), + array( 'bp_before_activity_type_tab_favorites', 'activity', 26 ), + ) + ); + + // If the user has favorite create a nav item + if ( bp_get_total_favorite_count_for_user( bp_loggedin_user_id() ) ) { + $nav_items['favorites'] = array( + 'component' => 'activity', + 'slug' => 'favorites', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array(), + 'link' => bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/', + 'text' => __( 'My Favorites', 'buddypress' ), + 'count' => false, + 'position' => 35, + ); + } + + // The friends component is active and user has friends + if ( bp_is_active( 'friends' ) && bp_get_total_friend_count( bp_loggedin_user_id() ) ) { + $nav_items['friends'] = array( + 'component' => 'activity', + 'slug' => 'friends', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'dynamic' ), + 'link' => bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_friends_slug() . '/', + 'text' => __( 'My Friends', 'buddypress' ), + 'count' => '', + 'position' => 15, + ); + } + + // The groups component is active and user has groups + if ( bp_is_active( 'groups' ) && bp_get_total_group_count_for_user( bp_loggedin_user_id() ) ) { + $nav_items['groups'] = array( + 'component' => 'activity', + 'slug' => 'groups', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'dynamic' ), + 'link' => bp_loggedin_user_domain() . bp_get_activity_slug() . '/' . bp_get_groups_slug() . '/', + 'text' => __( 'My Groups', 'buddypress' ), + 'count' => '', + 'position' => 25, + ); + } + + // Mentions are allowed + if ( bp_activity_do_mentions() ) { + $deprecated_hooks[] = array( 'bp_before_activity_type_tab_mentions', 'activity', 36 ); + + $count = ''; + if ( bp_get_total_mention_count_for_user( bp_loggedin_user_id() ) ) { + $count = bp_get_total_mention_count_for_user( bp_loggedin_user_id() ); + } + + $nav_items['mentions'] = array( + 'component' => 'activity', + 'slug' => 'mentions', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'dynamic' ), + 'link' => bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/', + 'text' => __( 'Mentions', 'buddypress' ), + 'count' => $count, + 'position' => 45, + ); + } + } + + // Check for deprecated hooks : + foreach ( $deprecated_hooks as $deprectated_hook ) { + list( $hook, $component, $position ) = $deprectated_hook; + + $extra_nav_items = bp_nouveau_parse_hooked_dir_nav( $hook, $component, $position ); + + if ( ! empty( $extra_nav_items ) ) { + $nav_items = array_merge( $nav_items, $extra_nav_items ); + } + } + + /** + * Filters the activity directory navigation items. + * + * Use this filter to introduce your custom nav items for the activity directory. + * + * @since 3.0.0 + * + * @param array $nav_items The list of the activity directory nav items. + */ + return apply_filters( 'bp_nouveau_get_activity_directory_nav_items', $nav_items ); +} + +/** + * Make sure bp_get_activity_show_filters() will return the filters and the context + * instead of the output. + * + * @since 3.0.0 + * + * @param string $output HTML output + * @param array $filters Optional. + * @param string $context + * + * @return array + */ +function bp_nouveau_get_activity_filters_array( $output = '', $filters = array(), $context = '' ) { + return array( + 'filters' => $filters, + 'context' => $context, + ); +} + +/** + * Get Dropdown filters of the activity component + * + * @since 3.0.0 + * + * @return array the filters + */ +function bp_nouveau_get_activity_filters() { + add_filter( 'bp_get_activity_show_filters', 'bp_nouveau_get_activity_filters_array', 10, 3 ); + + $filters_data = bp_get_activity_show_filters(); + + remove_filter( 'bp_get_activity_show_filters', 'bp_nouveau_get_activity_filters_array', 10, 3 ); + + $action = ''; + if ( 'group' === $filters_data['context'] ) { + $action = 'bp_group_activity_filter_options'; + } elseif ( 'member' === $filters_data['context'] || 'member_groups' === $filters_data['context'] ) { + $action = 'bp_member_activity_filter_options'; + } else { + $action = 'bp_activity_filter_options'; + } + + $filters = $filters_data['filters']; + + if ( $action ) { + return bp_nouveau_parse_hooked_options( $action, $filters ); + } + + return $filters; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_activity_secondary_avatars( $action, $activity ) { + switch ( $activity->component ) { + case 'groups': + case 'friends': + // Only insert avatar if one exists. + if ( $secondary_avatar = bp_get_activity_secondary_avatar() ) { + $reverse_content = strrev( $action ); + $position = strpos( $reverse_content, 'a<' ); + $action = substr_replace( $action, $secondary_avatar, -$position - 2, 0 ); + } + break; + } + + return $action; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_activity_scope_newest_class( $classes = '' ) { + if ( ! is_user_logged_in() ) { + return $classes; + } + + $user_id = bp_loggedin_user_id(); + $my_classes = array(); + + /* + * HeartBeat requests will transport the scope. + * See bp_nouveau_ajax_querystring(). + */ + $scope = ''; + + if ( ! empty( $_POST['data']['bp_heartbeat']['scope'] ) ) { + $scope = sanitize_key( $_POST['data']['bp_heartbeat']['scope'] ); + } + + // Add specific classes to perform specific actions on the client side. + if ( $scope && bp_is_activity_directory() ) { + $component = bp_get_activity_object_name(); + + /* + * These classes will be used to count the number of newest activities for + * the 'Mentions', 'My Groups' & 'My Friends' tabs + */ + if ( 'all' === $scope ) { + if ( 'groups' === $component && bp_is_active( $component ) ) { + // Is the current user a member of the group the activity is attached to? + if ( groups_is_user_member( $user_id, bp_get_activity_item_id() ) ) { + $my_classes[] = 'bp-my-groups'; + } + } + + // Friends can post in groups the user is a member of + if ( bp_is_active( 'friends' ) && (int) $user_id !== (int) bp_get_activity_user_id() ) { + if ( friends_check_friendship( $user_id, bp_get_activity_user_id() ) ) { + $my_classes[] = 'bp-my-friends'; + } + } + + // A mention can be posted by a friend within a group + if ( true === bp_activity_do_mentions() ) { + $new_mentions = bp_get_user_meta( $user_id, 'bp_new_mentions', true ); + + // The current activity is one of the new mentions + if ( is_array( $new_mentions ) && in_array( bp_get_activity_id(), $new_mentions ) ) { + $my_classes[] = 'bp-my-mentions'; + } + } + + /* + * This class will be used to highlight the newest activities when + * viewing the 'Mentions', 'My Groups' or the 'My Friends' tabs + */ + } elseif ( 'friends' === $scope || 'groups' === $scope || 'mentions' === $scope ) { + $my_classes[] = 'newest_' . $scope . '_activity'; + } + + // Leave other components do their specific stuff if needed. + /** + * Filters the classes to be applied to the newest activity item. + * + * Leave other components do their specific stuff if needed. + * + * @since 3.0.0 + * + * @param array $my_classes Array of classes to output to class attribute. + * @param string $scope Current scope for the activity type. + */ + $my_classes = (array) apply_filters( 'bp_nouveau_activity_scope_newest_class', $my_classes, $scope ); + + if ( ! empty( $my_classes ) ) { + $classes .= ' ' . join( ' ', $my_classes ); + } + } + + return $classes; +} + +/** + * Get the activity query args for the widget. + * + * @since 3.0.0 + * + * @return array The activity arguments. + */ +function bp_nouveau_activity_widget_query() { + $args = array(); + $bp_nouveau = bp_nouveau(); + + if ( isset( $bp_nouveau->activity->widget_args ) ) { + $args = $bp_nouveau->activity->widget_args; + } + + /** + * Filter to edit the activity widget arguments. + * + * @since 3.0.0 + * + * @param array $args The activity arguments. + */ + return apply_filters( 'bp_nouveau_activity_widget_query', $args ); +} + +/** + * Register notifications filters for the activity component. + * + * @since 3.0.0 + */ +function bp_nouveau_activity_notification_filters() { + $notifications = array( + array( + 'id' => 'new_at_mention', + 'label' => __( 'New mentions', 'buddypress' ), + 'position' => 5, + ), + array( + 'id' => 'update_reply', + 'label' => __( 'New update replies', 'buddypress' ), + 'position' => 15, + ), + array( + 'id' => 'comment_reply', + 'label' => __( 'New update comment replies', 'buddypress' ), + 'position' => 25, + ), + ); + + foreach ( $notifications as $notification ) { + bp_nouveau_notifications_register_filter( $notification ); + } +} + +/** + * Add controls for the settings of the customizer for the activity component. + * + * @since 3.0.0 + * + * @param array $controls Optional. The controls to add. + * + * @return array the controls to add. + */ +function bp_nouveau_activity_customizer_controls( $controls = array() ) { + return array_merge( $controls, array( + 'act_dir_layout' => array( + 'label' => __( 'Use column navigation for the Activity directory.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[activity_dir_layout]', + 'type' => 'checkbox', + ), + 'act_dir_tabs' => array( + 'label' => __( 'Use tab styling for Activity directory navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[activity_dir_tabs]', + 'type' => 'checkbox', + ), + ) ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/loader.php new file mode 100644 index 0000000000000000000000000000000000000000..1d6d8436b4999ef408479d186feb946843ed2cbf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/loader.php @@ -0,0 +1,117 @@ +<?php +/** + * BP Nouveau Activity + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Activity Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Activity { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = trailingslashit( dirname( __FILE__ ) ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require $this->dir . 'functions.php'; + require $this->dir . 'template-tags.php'; + require $this->dir . 'widgets.php'; + + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + // AJAX condtion. + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && + // Check to see if action is activity-specific. + ( false !== strpos( $_REQUEST['action'], 'activity' ) || ( 'post_update' === $_REQUEST['action'] ) ) + ) { + require $this->dir . 'ajax.php'; + } + } ); + } + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_activity_enqueue_scripts' ); + add_action( 'bp_widgets_init', array( 'BP_Latest_Activities', 'register_widget' ) ); + add_action( 'bp_nouveau_notifications_init_filters', 'bp_nouveau_activity_notification_filters' ); + + $bp = buddypress(); + + if ( bp_is_akismet_active() && isset( $bp->activity->akismet ) ) { + remove_action( 'bp_activity_entry_meta', array( $bp->activity->akismet, 'add_activity_spam_button' ) ); + remove_action( 'bp_activity_comment_options', array( $bp->activity->akismet, 'add_activity_comment_spam_button' ) ); + } + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + // Register customizer controls. + add_filter( 'bp_nouveau_customizer_controls', 'bp_nouveau_activity_customizer_controls', 10, 1 ); + + // Register activity scripts + add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_activity_register_scripts', 10, 1 ); + + // Localize Scripts + add_filter( 'bp_core_get_js_strings', 'bp_nouveau_activity_localize_scripts', 10, 1 ); + + add_filter( 'bp_get_activity_action_pre_meta', 'bp_nouveau_activity_secondary_avatars', 10, 2 ); + add_filter( 'bp_get_activity_css_class', 'bp_nouveau_activity_scope_newest_class', 10, 1 ); + } +} + +/** + * Launch the Activity loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_activity( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->activity = new BP_Nouveau_Activity(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_activity', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..a9e8f79e2d5c4b8b2b3824a6582b79db8aa15264 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/template-tags.php @@ -0,0 +1,916 @@ +<?php +/** + * Activity Template tags + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Before Activity's directory content legacy do_action hooks wrapper + * + * @since 3.0.0 + */ +function bp_nouveau_before_activity_directory_content() { + /** + * Fires at the begining of the templates BP injected content. + * + * @since 2.3.0 + */ + do_action( 'bp_before_directory_activity' ); + + /** + * Fires before the activity directory display content. + * + * @since 1.2.0 + */ + do_action( 'bp_before_directory_activity_content' ); +} + +/** + * After Activity's directory content legacy do_action hooks wrapper + * + * @since 3.0.0 + */ +function bp_nouveau_after_activity_directory_content() { + /** + * Fires after the display of the activity list. + * + * @since 1.5.0 + */ + do_action( 'bp_after_directory_activity_list' ); + + /** + * Fires inside and displays the activity directory display content. + */ + do_action( 'bp_directory_activity_content' ); + + /** + * Fires after the activity directory display content. + * + * @since 1.2.0 + */ + do_action( 'bp_after_directory_activity_content' ); + + /** + * Fires after the activity directory listing. + * + * @since 1.5.0 + */ + do_action( 'bp_after_directory_activity' ); +} + +/** + * Enqueue needed scripts for the Activity Post Form + * + * @since 3.0.0 + */ +function bp_nouveau_before_activity_post_form() { + if ( bp_nouveau_current_user_can( 'publish_activity' ) ) { + wp_enqueue_script( 'bp-nouveau-activity-post-form' ); + } + + /** + * Fires before the activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_before_activity_post_form' ); +} + +/** + * Load JS Templates for the Activity Post Form + * + * @since 3.0.0 + */ +function bp_nouveau_after_activity_post_form() { + if ( bp_nouveau_current_user_can( 'publish_activity' ) ) { + bp_get_template_part( 'common/js-templates/activity/form' ); + } + + /** + * Fires after the activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_after_activity_post_form' ); +} + +/** + * Display the displayed user activity post form if needed + * + * @since 3.0.0 + * + * @return string HTML. + */ +function bp_nouveau_activity_member_post_form() { + + /** + * Fires before the display of the member activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_before_member_activity_post_form' ); + + if ( is_user_logged_in() && bp_is_my_profile() && ( ! bp_current_action() || bp_is_current_action( 'just-me' ) ) ) { + bp_get_template_part( 'activity/post-form' ); + } + + /** + * Fires after the display of the member activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_after_member_activity_post_form' ); +} + +/** + * Fire specific hooks into the activity entry template + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_activity_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a activity entry hook + $hook[] = 'activity'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Checks if an activity of the loop has some content. + * + * @since 3.0.0 + * + * @return bool True if the activity has some content. False Otherwise. + */ +function bp_nouveau_activity_has_content() { + return bp_activity_has_content() || (bool) has_action( 'bp_activity_entry_content' ); +} + +/** + * Output the Activity content into the loop. + * + * @since 3.0.0 + */ +function bp_nouveau_activity_content() { + if ( bp_activity_has_content() ) { + bp_activity_content_body(); + } + + /** + * Fires after the display of an activity entry content. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_entry_content' ); +} + +/** + * Output the Activity timestamp into the bp-timestamp attribute. + * + * @since 3.0.0 + */ +function bp_nouveau_activity_timestamp() { + echo esc_attr( bp_nouveau_get_activity_timestamp() ); +} + + /** + * Get the Activity timestamp. + * + * @since 3.0.0 + * + * @return integer The Activity timestamp. + */ + function bp_nouveau_get_activity_timestamp() { + /** + * Filter here to edit the activity timestamp. + * + * @since 3.0.0 + * + * @param integer $value The Activity timestamp. + */ + return apply_filters( 'bp_nouveau_get_activity_timestamp', strtotime( bp_get_activity_date_recorded() ) ); + } + +/** + * Output the action buttons inside an Activity Loop. + * + * @since 3.0.0 + * + * @param array $args See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_activity_entry_buttons( $args = array() ) { + $output = join( ' ', bp_nouveau_get_activity_entry_buttons( $args ) ); + + ob_start(); + + /** + * Fires at the end of the activity entry meta data area. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_entry_meta' ); + + $output .= ob_get_clean(); + + $has_content = trim( $output, ' ' ); + if ( ! $has_content ) { + return; + } + + if ( ! $args ) { + $args = array( 'classes' => array( 'activity-meta' ) ); + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + + /** + * Get the action buttons inside an Activity Loop, + * + * @todo This function is too large and needs refactoring and reviewing. + * @since 3.0.0 + */ + function bp_nouveau_get_activity_entry_buttons( $args ) { + $buttons = array(); + + if ( ! isset( $GLOBALS['activities_template'] ) ) { + return $buttons; + } + + $activity_id = bp_get_activity_id(); + $activity_type = bp_get_activity_type(); + $parent_element = ''; + $button_element = 'a'; + + if ( ! $activity_id ) { + return $buttons; + } + + /* + * If the container is set to 'ul' force the $parent_element to 'li', + * else use parent_element args if set. + * + * This will render li elements around anchors/buttons. + */ + if ( isset( $args['container'] ) && 'ul' === $args['container'] ) { + $parent_element = 'li'; + } elseif ( ! empty( $args['parent_element'] ) ) { + $parent_element = $args['parent_element']; + } + + $parent_attr = ( ! empty( $args['parent_attr'] ) ) ? $args['parent_attr'] : array(); + + /* + * If we have a arg value for $button_element passed through + * use it to default all the $buttons['button_element'] values + * otherwise default to 'a' (anchor) + * Or override & hardcode the 'element' string on $buttons array. + * + */ + if ( ! empty( $args['button_element'] ) ) { + $button_element = $args['button_element']; + } + + /* + * The view conversation button and the comment one are sharing + * the same id because when display_comments is on stream mode, + * it is not possible to comment an activity comment and as we + * are updating the links to avoid sorting the activity buttons + * for each entry of the loop, it's a convenient way to make + * sure the right button will be displayed. + */ + if ( $activity_type === 'activity_comment' ) { + $buttons['activity_conversation'] = array( + 'id' => 'activity_conversation', + 'position' => 5, + 'component' => 'activity', + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'must_be_logged_in' => false, + 'button_element' => $button_element, + 'button_attr' => array( + 'class' => 'button view bp-secondary-action bp-tooltip', + 'data-bp-tooltip' => __( 'View Conversation', 'buddypress' ), + ), + 'link_text' => sprintf( + '<span class="bp-screen-reader-text">%1$s</span>', + __( 'View Conversation', 'buddypress' ) + ), + ); + + // If button element set add url link to data-attr + if ( 'button' === $button_element ) { + $buttons['activity_conversation']['button_attr']['data-bp-url'] = bp_get_activity_thread_permalink(); + } else { + $buttons['activity_conversation']['button_attr']['href'] = bp_get_activity_thread_permalink(); + $buttons['activity_conversation']['button_attr']['role'] = 'button'; + } + + /* + * We always create the Button to make sure we always have the right numbers of buttons, + * no matter the previous activity had less. + */ + } else { + $buttons['activity_conversation'] = array( + 'id' => 'activity_conversation', + 'position' => 5, + 'component' => 'activity', + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'must_be_logged_in' => true, + 'button_element' => $button_element, + 'button_attr' => array( + 'id' => 'acomment-comment-' . $activity_id, + 'class' => 'button acomment-reply bp-primary-action bp-tooltip', + 'data-bp-tooltip' => _x( 'Comment', 'button', 'buddypress' ), + 'aria-expanded' => 'false', + ), + 'link_text' => sprintf( + '<span class="bp-screen-reader-text">%1$s</span> <span class="comment-count">%2$s</span>', + _x( 'Comment', 'link', 'buddypress' ), + esc_html( bp_activity_get_comment_count() ) + ), + ); + + // If button element set add href link to data-attr + if ( 'button' === $button_element ) { + $buttons['activity_conversation']['button_attr']['data-bp-url'] = bp_get_activity_comment_link(); + } else { + $buttons['activity_conversation']['button_attr']['href'] = bp_get_activity_comment_link(); + $buttons['activity_conversation']['button_attr']['role'] = 'button'; + } + + } + + if ( bp_activity_can_favorite() ) { + + // If button element set attr needs to be data-* else 'href' + if ( 'button' === $button_element ) { + $key = 'data-bp-nonce'; + } else { + $key = 'href'; + } + + if ( ! bp_get_activity_is_favorite() ) { + $fav_args = array( + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'button_element' => $button_element, + 'link_class' => 'button fav bp-secondary-action bp-tooltip', + 'data_bp_tooltip' => __( 'Mark as Favorite', 'buddypress' ), + 'link_text' => __( 'Favorite', 'buddypress' ), + 'aria-pressed' => 'false', + 'link_attr' => bp_get_activity_favorite_link(), + ); + + } else { + $fav_args = array( + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'button_element' => $button_element, + 'link_class' => 'button unfav bp-secondary-action bp-tooltip', + 'data_bp_tooltip' => __( 'Remove Favorite', 'buddypress' ), + 'link_text' => __( 'Remove Favorite', 'buddypress' ), + 'aria-pressed' => 'true', + 'link_attr' => bp_get_activity_unfavorite_link(), + ); + } + + $buttons['activity_favorite'] = array( + 'id' => 'activity_favorite', + 'position' => 15, + 'component' => 'activity', + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'must_be_logged_in' => true, + 'button_element' => $fav_args['button_element'], + 'link_text' => sprintf( '<span class="bp-screen-reader-text">%1$s</span>', esc_html( $fav_args['link_text'] ) ), + 'button_attr' => array( + $key => $fav_args['link_attr'], + 'class' => $fav_args['link_class'], + 'data-bp-tooltip' => $fav_args['data_bp_tooltip'], + 'aria-pressed' => $fav_args['aria-pressed'], + ), + ); + } + + // The delete button is always created, and removed later on if needed. + $delete_args = array(); + + /* + * As the delete link is filterable we need this workaround + * to try to intercept the edits the filter made and build + * a button out of it. + */ + if ( has_filter( 'bp_get_activity_delete_link' ) ) { + preg_match( '/<a\s[^>]*>(.*)<\/a>/siU', bp_get_activity_delete_link(), $link ); + + if ( ! empty( $link[0] ) && ! empty( $link[1] ) ) { + $delete_args['link_text'] = $link[1]; + $subject = str_replace( $delete_args['link_text'], '', $link[0] ); + } + + preg_match_all( '/([\w\-]+)=([^"\'> ]+|([\'"]?)(?:[^\3]|\3+)+?\3)/', $subject, $attrs ); + + if ( ! empty( $attrs[1] ) && ! empty( $attrs[2] ) ) { + foreach ( $attrs[1] as $key_attr => $key_value ) { + $delete_args[ 'link_'. $key_value ] = trim( $attrs[2][$key_attr], '"' ); + } + } + + $delete_args = wp_parse_args( $delete_args, array( + 'link_text' => '', + 'button_attr' => array( + 'link_id' => '', + 'link_href' => '', + 'link_class' => '', + 'link_rel' => 'nofollow', + 'data_bp_tooltip' => '', + ), + ) ); + } + + if ( empty( $delete_args['link_href'] ) ) { + $delete_args = array( + 'button_element' => $button_element, + 'link_id' => '', + 'link_class' => 'button item-button bp-secondary-action bp-tooltip delete-activity confirm', + 'link_rel' => 'nofollow', + 'data_bp_tooltip' => _x( 'Delete', 'button', 'buddypress' ), + 'link_text' => _x( 'Delete', 'button', 'buddypress' ), + 'link_href' => bp_get_activity_delete_url(), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $delete_args['data-attr'] = bp_get_activity_delete_url(); + $delete_args['link_href'] = ''; + } else { + $delete_args['link_href'] = bp_get_activity_delete_url(); + $delete_args['data-attr'] = ''; + } + } + + $buttons['activity_delete'] = array( + 'id' => 'activity_delete', + 'position' => 35, + 'component' => 'activity', + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'must_be_logged_in' => true, + 'button_element' => $button_element, + 'button_attr' => array( + 'id' => $delete_args['link_id'], + 'href' => $delete_args['link_href'], + 'class' => $delete_args['link_class'], + 'data-bp-tooltip' => $delete_args['data_bp_tooltip'], + 'data-bp-nonce' => $delete_args['data-attr'] , + ), + 'link_text' => sprintf( '<span class="bp-screen-reader-text">%s</span>', esc_html( $delete_args['data_bp_tooltip'] ) ), + ); + + // Add the Spam Button if supported + if ( bp_is_akismet_active() && isset( buddypress()->activity->akismet ) && bp_activity_user_can_mark_spam() ) { + $buttons['activity_spam'] = array( + 'id' => 'activity_spam', + 'position' => 45, + 'component' => 'activity', + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'must_be_logged_in' => true, + 'button_element' => $button_element, + 'button_attr' => array( + 'class' => 'bp-secondary-action spam-activity confirm button item-button bp-tooltip', + 'id' => 'activity_make_spam_' . $activity_id, + 'data-bp-tooltip' => _x( 'Spam', 'button', 'buddypress' ), + ), + 'link_text' => sprintf( + /** @todo: use a specific css rule for this *************************************************************/ + '<span class="dashicons dashicons-flag" style="color:#a00;vertical-align:baseline;width:18px;height:18px" aria-hidden="true"></span><span class="bp-screen-reader-text">%s</span>', + esc_html_x( 'Spam', 'button', 'buddypress' ) + ), + ); + + // If button element, add nonce link to data attribute. + if ( 'button' === $button_element ) { + $data_element = 'data-bp-nonce'; + } else { + $data_element = 'href'; + } + + $buttons['activity_spam']['button_attr'][ $data_element ] = wp_nonce_url( + bp_get_root_domain() . '/' . bp_get_activity_slug() . '/spam/' . $activity_id . '/', + 'bp_activity_akismet_spam_' . $activity_id + ); + } + + /** + * Filter to add your buttons, use the position argument to choose where to insert it. + * + * @since 3.0.0 + * + * @param array $buttons The list of buttons. + * @param int $activity_id The current activity ID. + */ + $buttons_group = apply_filters( 'bp_nouveau_get_activity_entry_buttons', $buttons, $activity_id ); + + if ( ! $buttons_group ) { + return $buttons; + } + + // It's the first entry of the loop, so build the Group and sort it + if ( ! isset( bp_nouveau()->activity->entry_buttons ) || ! is_a( bp_nouveau()->activity->entry_buttons, 'BP_Buttons_Group' ) ) { + $sort = true; + bp_nouveau()->activity->entry_buttons = new BP_Buttons_Group( $buttons_group ); + + // It's not the first entry, the order is set, we simply need to update the Buttons Group + } else { + $sort = false; + bp_nouveau()->activity->entry_buttons->update( $buttons_group ); + } + + $return = bp_nouveau()->activity->entry_buttons->get( $sort ); + + if ( ! $return ) { + return array(); + } + + // Remove the Comment button if the user can't comment + if ( ! bp_activity_can_comment() && $activity_type !== 'activity_comment' ) { + unset( $return['activity_conversation'] ); + } + + // Remove the Delete button if the user can't delete + if ( ! bp_activity_user_can_delete() ) { + unset( $return['activity_delete'] ); + } + + if ( isset( $return['activity_spam'] ) && ! in_array( $activity_type, BP_Akismet::get_activity_types() ) ) { + unset( $return['activity_spam'] ); + } + + /** + * Leave a chance to adjust the $return + * + * @since 3.0.0 + * + * @param array $return The list of buttons ordered. + * @param int $activity_id The current activity ID. + */ + do_action_ref_array( 'bp_nouveau_return_activity_entry_buttons', array( &$return, $activity_id ) ); + + return $return; + } + +/** + * Output Activity Comments if any + * + * @since 3.0.0 + */ +function bp_nouveau_activity_comments() { + global $activities_template; + + if ( empty( $activities_template->activity->children ) ) { + return; + } + + bp_nouveau_activity_recurse_comments( $activities_template->activity ); +} + +/** + * Loops through a level of activity comments and loads the template for each. + * + * Note: This is an adaptation of the bp_activity_recurse_comments() BuddyPress core function + * + * @since 3.0.0 + * + * @param object $comment The activity object currently being recursed. + */ +function bp_nouveau_activity_recurse_comments( $comment ) { + global $activities_template; + + if ( empty( $comment->children ) ) { + return; + } + + /** + * Filters the opening tag for the template that lists activity comments. + * + * @since 1.6.0 + * + * @param string $value Opening tag for the HTML markup to use. + */ + echo apply_filters( 'bp_activity_recurse_comments_start_ul', '<ul>' ); + + foreach ( (array) $comment->children as $comment_child ) { + + // Put the comment into the global so it's available to filters. + $activities_template->activity->current_comment = $comment_child; + + /** + * Fires before the display of an activity comment. + * + * @since 1.5.0 + */ + do_action( 'bp_before_activity_comment' ); + + bp_get_template_part( 'activity/comment' ); + + /** + * Fires after the display of an activity comment. + * + * @since 1.5.0 + */ + do_action( 'bp_after_activity_comment' ); + + unset( $activities_template->activity->current_comment ); + } + + /** + * Filters the closing tag for the template that list activity comments. + * + * @since 1.6.0 + * + * @param string $value Closing tag for the HTML markup to use. + */ + echo apply_filters( 'bp_activity_recurse_comments_end_ul', '</ul>' ); +} + +/** + * Ouptut the Activity comment action string + * + * @since 3.0.0 + */ +function bp_nouveau_activity_comment_action() { + echo bp_nouveau_get_activity_comment_action(); +} + + /** + * Get the Activity comment action string + * + * @since 3.0.0 + */ + function bp_nouveau_get_activity_comment_action() { + + /** + * Filter to edit the activity comment action. + * + * @since 3.0.0 + * + * @param string $value HTML Output + */ + return apply_filters( 'bp_nouveau_get_activity_comment_action', + /* translators: 1: user profile link, 2: user name, 3: activity permalink, 4: activity recorded date, 5: activity timestamp, 6: activity human time since */ + sprintf( __( '<a href="%1$s">%2$s</a> replied <a href="%3$s" class="activity-time-since"><time class="time-since" datetime="%4$s" data-bp-timestamp="%5$d">%6$s</time></a>', 'buddypress' ), + esc_url( bp_get_activity_comment_user_link() ), + esc_html( bp_get_activity_comment_name() ), + esc_url( bp_get_activity_comment_permalink() ), + esc_attr( bp_get_activity_comment_date_recorded_raw() ), + esc_attr( strtotime( bp_get_activity_comment_date_recorded_raw() ) ), + esc_attr( bp_get_activity_comment_date_recorded() ) + ) ); + } + +/** + * Load the Activity comment form + * + * @since 3.0.0 + */ +function bp_nouveau_activity_comment_form() { + bp_get_template_part( 'activity/comment-form' ); +} + +/** + * Output the action buttons for the activity comments + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_activity_comment_buttons( $args = array() ) { + $output = join( ' ', bp_nouveau_get_activity_comment_buttons( $args ) ); + + ob_start(); + /** + * Fires after the defualt comment action options display. + * + * @since 1.6.0 + */ + do_action( 'bp_activity_comment_options' ); + + $output .= ob_get_clean(); + $has_content = trim( $output, ' ' ); + if ( ! $has_content ) { + return; + } + + if ( ! $args ) { + $args = array( 'classes' => array( 'acomment-options' ) ); + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + + /** + * Get the action buttons for the activity comments + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + * + * @return array + */ + function bp_nouveau_get_activity_comment_buttons($args) { + $buttons = array(); + + if ( ! isset( $GLOBALS['activities_template'] ) ) { + return $buttons; + } + + $activity_comment_id = bp_get_activity_comment_id(); + $activity_id = bp_get_activity_id(); + + if ( ! $activity_comment_id || ! $activity_id ) { + return $buttons; + } + + /* + * If the 'container' is set to 'ul' + * set a var $parent_element to li + * otherwise simply pass any value found in args + * or set var false. + */ + if ( 'ul' === $args['container'] ) { + $parent_element = 'li'; + } elseif ( ! empty( $args['parent_element'] ) ) { + $parent_element = $args['parent_element']; + } else { + $parent_element = false; + } + + $parent_attr = ( ! empty( $args['parent_attr'] ) ) ? $args['parent_attr'] : array(); + + /* + * If we have a arg value for $button_element passed through + * use it to default all the $buttons['button_element'] values + * otherwise default to 'a' (anchor). + */ + if ( ! empty( $args['button_element'] ) ) { + $button_element = $args['button_element'] ; + } else { + $button_element = 'a'; + } + + $buttons = array( + 'activity_comment_reply' => array( + 'id' => 'activity_comment_reply', + 'position' => 5, + 'component' => 'activity', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'button_element' => $button_element, + 'link_text' => _x( 'Reply', 'link', 'buddypress' ), + 'button_attr' => array( + 'class' => "acomment-reply bp-primary-action", + 'id' => sprintf( 'acomment-reply-%1$s-from-%2$s', $activity_id, $activity_comment_id ), + ), + ), + 'activity_comment_delete' => array( + 'id' => 'activity_comment_delete', + 'position' => 15, + 'component' => 'activity', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'button_element' => $button_element, + 'link_text' => _x( 'Delete', 'link', 'buddypress' ), + 'button_attr' => array( + 'class' => 'delete acomment-delete confirm bp-secondary-action', + 'rel' => 'nofollow', + ), + ), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $buttons['activity_comment_reply']['button_attr']['data-bp-act-reply-nonce'] = sprintf( '#acomment-%s', $activity_comment_id ); + $buttons['activity_comment_delete']['button_attr']['data-bp-act-reply-delete-nonce'] = bp_get_activity_comment_delete_link(); + } else { + $buttons['activity_comment_reply']['button_attr']['href'] = sprintf( '#acomment-%s', $activity_comment_id ); + $buttons['activity_comment_delete']['button_attr']['href'] = bp_get_activity_comment_delete_link(); + } + + // Add the Spam Button if supported + if ( bp_is_akismet_active() && isset( buddypress()->activity->akismet ) && bp_activity_user_can_mark_spam() ) { + $buttons['activity_comment_spam'] = array( + 'id' => 'activity_comment_spam', + 'position' => 25, + 'component' => 'activity', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'parent_attr' => $parent_attr, + 'button_element' => $button_element, + 'link_text' => _x( 'Spam', 'link', 'buddypress' ), + 'button_attr' => array( + 'id' => "activity_make_spam_{$activity_comment_id}", + 'class' => 'bp-secondary-action spam-activity-comment confirm', + 'rel' => 'nofollow', + ), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $data_element = 'data-bp-act-spam-nonce'; + } else { + $data_element = 'href'; + } + + $buttons['activity_comment_spam']['button_attr'][ $data_element ] = wp_nonce_url( + bp_get_root_domain() . '/' . bp_get_activity_slug() . '/spam/' . $activity_comment_id . '/?cid=' . $activity_comment_id, + 'bp_activity_akismet_spam_' . $activity_comment_id + ); + } + + /** + * Filter to add your buttons, use the position argument to choose where to insert it. + * + * @since 3.0.0 + * + * @param array $buttons The list of buttons. + * @param int $activity_comment_id The current activity comment ID. + * @param int $activity_id The current activity ID. + */ + $buttons_group = apply_filters( 'bp_nouveau_get_activity_comment_buttons', $buttons, $activity_comment_id, $activity_id ); + + if ( ! $buttons_group ) { + return $buttons; + } + + // It's the first comment of the loop, so build the Group and sort it + if ( ! isset( bp_nouveau()->activity->comment_buttons ) || ! is_a( bp_nouveau()->activity->comment_buttons, 'BP_Buttons_Group' ) ) { + $sort = true; + bp_nouveau()->activity->comment_buttons = new BP_Buttons_Group( $buttons_group ); + + // It's not the first comment, the order is set, we simply need to update the Buttons Group + } else { + $sort = false; + bp_nouveau()->activity->comment_buttons->update( $buttons_group ); + } + + $return = bp_nouveau()->activity->comment_buttons->get( $sort ); + + if ( ! $return ) { + return array(); + } + + /** + * If post comment / Activity comment sync is on, it's safer + * to unset the comment button just before returning it. + */ + if ( ! bp_activity_can_comment_reply( bp_activity_current_comment() ) ) { + unset( $return['activity_comment_reply'] ); + } + + /** + * If there was an activity of the user before one af another + * user as we're updating buttons, we need to unset the delete link + */ + if ( ! bp_activity_user_can_delete() ) { + unset( $return['activity_comment_delete'] ); + } + + if ( isset( $return['activity_comment_spam'] ) && ( ! bp_activity_current_comment() || ! in_array( bp_activity_current_comment()->type, BP_Akismet::get_activity_types(), true ) ) ) { + unset( $return['activity_comment_spam'] ); + } + + /** + * Leave a chance to adjust the $return + * + * @since 3.0.0 + * + * @param array $return The list of buttons ordered. + * @param int $activity_comment_id The current activity comment ID. + * @param int $activity_id The current activity ID. + */ + do_action_ref_array( 'bp_nouveau_return_activity_comment_buttons', array( &$return, $activity_comment_id, $activity_id ) ); + + return $return; + } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/widgets.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/widgets.php new file mode 100644 index 0000000000000000000000000000000000000000..e9464eb8f09bd7002eb7c00daf60538c043038ed --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/activity/widgets.php @@ -0,0 +1,201 @@ +<?php +/** + * BP Nouveau Activity widgets + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * A widget to display the latest activities of your community! + * + * @since 3.0.0 + */ +class BP_Latest_Activities extends WP_Widget { + /** + * Construct the widget. + * + * @since 3.0.0 + */ + public function __construct() { + + /** + * Filters the widget options for the BP_Latest_Activities widget. + * + * @since 3.0.0 + * + * @param array $value Array of widget options. + */ + $widget_ops = apply_filters( + 'bp_latest_activities', array( + 'classname' => 'bp-latest-activities buddypress', + 'description' => __( 'Display the latest updates of your community having the types of your choice.', 'buddypress' ), + 'customize_selective_refresh' => true, + ) + ); + + parent::__construct( false, __( '(BuddyPress) Latest Activities', 'buddypress' ), $widget_ops ); + } + + /** + * Register the widget. + * + * @since 3.0.0 + */ + public static function register_widget() { + register_widget( 'BP_Latest_Activities' ); + } + + /** + * Display the widget content. + * + * @since 3.0.0 + * + * @param array $args Widget arguments. + * @param array $instance Widget settings, as saved by the user. + */ + public function widget( $args, $instance ) { + // Default values + $title = __( 'Latest updates', 'buddypress' ); + $type = array( 'activity_update' ); + $max = 5; + $bp_nouveau = bp_nouveau(); + + // Check instance for a custom title + if ( ! empty( $instance['title'] ) ) { + $title = $instance['title']; + } + + /** + * Filters the BP_Latest_Activities widget title. + * + * @since 3.0.0 + * + * @param string $title The widget title. + * @param array $instance The settings for the particular instance of the widget. + * @param string $id_base Root ID for all widgets of this type. + */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + // Check instance for custom max number of activities to display + if ( ! empty( $instance['max'] ) ) { + $max = (int) $instance['max']; + } + + // Check instance for custom activity types + if ( ! empty( $instance['type'] ) ) { + $type = maybe_unserialize( $instance['type'] ); + $classes = array_map( 'sanitize_html_class', array_merge( $type, array( 'bp-latest-activities' ) ) ); + + // Add classes to the container + $args['before_widget'] = str_replace( 'bp-latest-activities', join( ' ', $classes ), $args['before_widget'] ); + } + + echo $args['before_widget']; + + if ( $title ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + $reset_activities_template = null; + if ( ! empty( $GLOBALS['activities_template'] ) ) { + $reset_activities_template = $GLOBALS['activities_template']; + } + + /** + * Globalize the activity widget arguments. + * @see bp_nouveau_activity_widget_query() to override + */ + $bp_nouveau->activity->widget_args = array( + 'max' => $max, + 'scope' => 'all', + 'user_id' => 0, + 'object' => false, + 'action' => join( ',', $type ), + 'primary_id' => 0, + 'secondary_id' => 0, + ); + + bp_get_template_part( 'activity/widget' ); + + // Reset the globals + $GLOBALS['activities_template'] = $reset_activities_template; + $bp_nouveau->activity->widget_args = array(); + + echo $args['after_widget']; + } + + /** + * Update the widget settings. + * + * @since 3.0.0 + * + * @param array $new_instance The new instance settings. + * @param array $old_instance The old instance settings. + * + * @return array The widget settings. + */ + public function update( $new_instance, $old_instance ) { + $instance = $old_instance; + + $instance['title'] = strip_tags( $new_instance['title'] ); + $instance['max'] = 5; + if ( ! empty( $new_instance['max'] ) ) { + $instance['max'] = $new_instance['max']; + } + + $instance['type'] = maybe_serialize( array( 'activity_update' ) ); + if ( ! empty( $new_instance['type'] ) ) { + $instance['type'] = maybe_serialize( $new_instance['type'] ); + } + + return $instance; + } + + /** + * Display the form to set the widget settings. + * + * @since 3.0.0 + * + * @param array $instance Settings for this widget. + * + * @return string HTML output. + */ + public function form( $instance ) { + $instance = wp_parse_args( (array) $instance, array( + 'title' => __( 'Latest updates', 'buddypress' ), + 'max' => 5, + 'type' => '', + ) ); + + $title = esc_attr( $instance['title'] ); + $max = (int) $instance['max']; + + $type = array( 'activity_update' ); + if ( ! empty( $instance['type'] ) ) { + $type = maybe_unserialize( $instance['type'] ); + } + ?> + <p> + <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php esc_html_e( 'Title:', 'buddypress' ); ?></label> + <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /> + </p> + + <p> + <label for="<?php echo $this->get_field_id( 'max' ); ?>"><?php _e( 'Maximum amount to display:', 'buddypress' ); ?></label> + <input type="number" class="widefat" id="<?php echo $this->get_field_id( 'max' ); ?>" name="<?php echo $this->get_field_name( 'max' ); ?>" value="<?php echo intval( $max ); ?>" step="1" min="1" max="20" /> + </p> + <p> + <label for="<?php echo $this->get_field_id( 'type' ); ?>"><?php esc_html_e( 'Type:', 'buddypress' ); ?></label> + <select class="widefat" multiple="multiple" id="<?php echo $this->get_field_id( 'type' ); ?>" name="<?php echo $this->get_field_name( 'type' ); ?>[]"> + <?php foreach ( bp_nouveau_get_activity_filters() as $key => $name ) : ?> + <option value="<?php echo esc_attr( $key ); ?>" <?php selected( in_array( $key, $type ) ); ?>><?php echo esc_html( $name ); ?></option> + <?php endforeach; ?> + </select> + </p> + <?php + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/ajax.php new file mode 100644 index 0000000000000000000000000000000000000000..83ab32cf33259263854f09de60df51b25790f5ba --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/ajax.php @@ -0,0 +1,141 @@ +<?php +/** + * Common functions only loaded on AJAX requests. + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Load the template loop for the current object. + * + * @since 3.0.0 + * + * @return string Template loop for the specified object + */ +function bp_nouveau_ajax_object_template_loader() { + if ( ! bp_is_post_request() ) { + wp_send_json_error(); + } + + if ( empty( $_POST['object'] ) ) { + wp_send_json_error(); + } + + $object = sanitize_title( $_POST['object'] ); + + // Bail if object is not an active component to prevent arbitrary file inclusion. + if ( ! bp_is_active( $object ) ) { + wp_send_json_error(); + } + + // Nonce check! + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_' . $object ) ) { + wp_send_json_error(); + } + + $result = array(); + + if ( 'activity' === $object ) { + $scope = ''; + if ( ! empty( $_POST['scope'] ) ) { + $scope = sanitize_text_field( $_POST['scope'] ); + } + + // We need to calculate and return the feed URL for each scope. + switch ( $scope ) { + case 'friends': + $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/friends/feed/'; + break; + case 'groups': + $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/groups/feed/'; + break; + case 'favorites': + $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/favorites/feed/'; + break; + case 'mentions': + $feed_url = bp_loggedin_user_domain() . bp_get_activity_slug() . '/mentions/feed/'; + + // Get user new mentions + $new_mentions = bp_get_user_meta( bp_loggedin_user_id(), 'bp_new_mentions', true ); + + // If we have some, include them into the returned json before deleting them + if ( is_array( $new_mentions ) ) { + $result['new_mentions'] = $new_mentions; + + // Clear new mentions + bp_activity_clear_new_mentions( bp_loggedin_user_id() ); + } + + break; + default: + $feed_url = bp_get_sitewide_activity_feed_link(); + break; + } + + /** + * Filters the browser URL for the template loader. + * + * @since 3.0.0 + * + * @param string $feed_url Template feed url. + * @param string $scope Current component scope. + */ + $result['feed_url'] = apply_filters( 'bp_nouveau_ajax_object_template_loader', $feed_url, $scope ); + } + + /* + * AJAX requests happen too early to be seen by bp_update_is_directory() + * so we do it manually here to ensure templates load with the correct + * context. Without this check, templates will load the 'single' version + * of themselves rather than the directory version. + */ + if ( ! bp_current_action() ) { + bp_update_is_directory( true, bp_current_component() ); + } + + // Get the template path based on the 'template' variable via the AJAX request. + $template = isset( $_POST['template'] ) ? wp_unslash( $_POST['template'] ) : ''; + + switch ( $template ) { + case 'group_members' : + case 'groups/single/members' : + $template_part = 'groups/single/members-loop.php'; + break; + + case 'group_requests' : + $template_part = 'groups/single/requests-loop.php'; + break; + + case 'member_notifications' : + $template_part = 'members/single/notifications/notifications-loop.php'; + break; + + default : + $template_part = $object . '/' . $object . '-loop.php'; + break; + } + + ob_start(); + + $template_path = bp_locate_template( array( $template_part ), false ); + + /** + * Filters the server path for the template loader. + * + * @since 3.0.0 + * + * @param string Template file path. + */ + $template_path = apply_filters( 'bp_nouveau_object_template_path', $template_path ); + + load_template( $template_path ); + $result['contents'] = ob_get_contents(); + ob_end_clean(); + + // Locate the object template. + wp_send_json_success( $result ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/ajax.php new file mode 100644 index 0000000000000000000000000000000000000000..4a0420cd07e0b56b6bbadc973fdcd60e2cbb0509 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/ajax.php @@ -0,0 +1,31 @@ +<?php +/** + * Blogs Ajax functions + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +add_action( 'admin_init', function() { + $ajax_actions = array( + array( + 'blogs_filter' => array( + 'function' => 'bp_nouveau_ajax_object_template_loader', + 'nopriv' => true, + ), + ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } +}, 12 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..548c28be9d8d26778cd5c1538f10573b60e07319 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/functions.php @@ -0,0 +1,234 @@ +<?php +/** + * Blogs functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * @since 3.0.0 + */ +function bp_nouveau_get_blogs_directory_nav_items() { + $nav_items = array(); + + $nav_items['all'] = array( + 'component' => 'blogs', + 'slug' => 'all', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'selected' ), + 'link' => bp_get_root_domain() . '/' . bp_get_blogs_root_slug(), + 'text' => __( 'All Sites', 'buddypress' ), + 'count' => bp_get_total_blog_count(), + 'position' => 5, + ); + + if ( is_user_logged_in() ) { + $my_blogs_count = bp_get_total_blog_count_for_user( bp_loggedin_user_id() ); + + // If the user has blogs create a nav item + if ( $my_blogs_count ) { + $nav_items['personal'] = array( + 'component' => 'blogs', + 'slug' => 'personal', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array(), + 'link' => bp_loggedin_user_domain() . bp_get_blogs_slug(), + 'text' => __( 'My Sites', 'buddypress' ), + 'count' => $my_blogs_count, + 'position' => 15, + ); + } + + // If the user can create blogs, add the create nav + if ( bp_blog_signup_enabled() ) { + $nav_items['create'] = array( + 'component' => 'blogs', + 'slug' => 'create', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'no-ajax', 'site-create', 'create-button' ), + 'link' => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ), + 'text' => __( 'Create a Site', 'buddypress' ), + 'count' => false, + 'position' => 999, + ); + } + } + + // Check for the deprecated hook : + $extra_nav_items = bp_nouveau_parse_hooked_dir_nav( 'bp_blogs_directory_blog_types', 'blogs', 20 ); + + if ( ! empty( $extra_nav_items ) ) { + $nav_items = array_merge( $nav_items, $extra_nav_items ); + } + + /** + * Use this filter to introduce your custom nav items for the blogs directory. + * + * @since 3.0.0 + * + * @param array $nav_items The list of the blogs directory nav items. + */ + return apply_filters( 'bp_nouveau_get_blogs_directory_nav_items', $nav_items ); +} + +/** + * Get Dropdown filters for the blogs component + * + * @since 3.0.0 + * + * @param string $context 'directory' or 'user' + * + * @return array the filters + */ +function bp_nouveau_get_blogs_filters( $context = '' ) { + if ( empty( $context ) ) { + return array(); + } + + $action = ''; + if ( 'user' === $context ) { + $action = 'bp_member_blog_order_options'; + } elseif ( 'directory' === $context ) { + $action = 'bp_blogs_directory_order_options'; + } + + /** + * Recommended, filter here instead of adding an action to 'bp_member_blog_order_options' + * or 'bp_blogs_directory_order_options' + * + * @since 3.0.0 + * + * @param array the blogs filters. + * @param string the context. + */ + $filters = apply_filters( 'bp_nouveau_get_blogs_filters', array( + 'active' => __( 'Last Active', 'buddypress' ), + 'newest' => __( 'Newest', 'buddypress' ), + 'alphabetical' => __( 'Alphabetical', 'buddypress' ), + ), $context ); + + if ( $action ) { + return bp_nouveau_parse_hooked_options( $action, $filters ); + } + + return $filters; +} + +/** + * Catch the arguments for buttons + * + * @since 3.0.0 + * + * @param array $buttons The arguments of the button that BuddyPress is about to create. + * + * @return array An empty array to stop the button creation process. + */ +function bp_nouveau_blogs_catch_button_args( $button = array() ) { + // Globalize the arguments so that we can use it in bp_nouveau_get_blogs_buttons(). + bp_nouveau()->blogs->button_args = $button; + + // return an empty array to stop the button creation process + return array(); +} + +/** + * Add settings to the customizer for the blogs component. + * + * @since 3.0.0 + * + * @param array $settings the settings to add. + * + * @return array the settings to add. + */ +function bp_nouveau_blogs_customizer_settings( $settings = array() ) { + return array_merge( $settings, array( + 'bp_nouveau_appearance[blogs_layout]' => array( + 'index' => 'blogs_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + ) ); +} + +/** + * Add controls for the settings of the customizer for the blogs component. + * + * @since 3.0.0 + * + * @param array $controls the controls to add. + * + * @return array the controls to add. + */ +function bp_nouveau_blogs_customizer_controls( $controls = array() ) { + return array_merge( $controls, array( + 'blogs_layout' => array( + 'label' => __( 'Sites loop:', 'buddypress' ), + 'section' => 'bp_nouveau_loops_layout', + 'settings' => 'bp_nouveau_appearance[blogs_layout]', + 'type' => 'select', + 'choices' => bp_nouveau_customizer_grid_choices(), + ), + 'sites_dir_layout' => array( + 'label' => __( 'Use column navigation for the Sites directory.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[sites_dir_layout]', + 'type' => 'checkbox', + ), + 'sites_dir_tabs' => array( + 'label' => __( 'Use tab styling for Sites directory navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[sites_dir_tabs]', + 'type' => 'checkbox', + ), + ) ); +} + +/** + * Inline script to toggle the signup blog form + * + * @since 3.0.0 + * + * @return string Javascript output + */ +function bp_nouveau_get_blog_signup_inline_script() { + return ' + ( function( $ ) { + if ( $( \'body\' ).hasClass( \'register\' ) ) { + var blog_checked = $( \'#signup_with_blog\' ); + + // hide "Blog Details" block if not checked by default + if ( ! blog_checked.prop( \'checked\' ) ) { + $( \'#blog-details\' ).toggle(); + } + + // toggle "Blog Details" block whenever checkbox is checked + blog_checked.change( function( event ) { + // Toggle HTML5 required attribute. + $.each( $( \'#blog-details\' ).find( \'[aria-required]\' ), function( i, input ) { + $( input ).prop( \'required\', $( event.target ).prop( \'checked\' ) ); + } ); + + $( \'#blog-details\' ).toggle(); + } ); + } + } )( jQuery ); + '; +} + +/** + * Filter bp_get_blog_class(). + * Adds a class if blog item has a latest post. + * + * @since 3.0.0 + */ +function bp_nouveau_blog_loop_item_has_lastest_post( $classes ) { + if ( bp_get_blog_latest_post_title() ) { + $classes[] = 'has-latest-post'; + } + + return $classes; +} +add_filter( 'bp_get_blog_class', 'bp_nouveau_blog_loop_item_has_lastest_post' ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..b75ed5c9ee2649cfbc2edf11da302517701d399e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/loader.php @@ -0,0 +1,107 @@ +<?php +/** + * BP Nouveau Blogs + * + * @since 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Blogs Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Blogs { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = trailingslashit( dirname( __FILE__ ) ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require $this->dir . 'functions.php'; + require $this->dir . 'template-tags.php'; + + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && 0 === strpos( $_REQUEST['action'], 'blogs_' ) ) { + require $this->dir . 'ajax.php'; + } + } ); + } + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + // Avoid Notices for BuddyPress Legacy Backcompat + remove_action( 'bp_blogs_directory_blog_types', 'bp_blog_backcompat_create_nav_item', 1000 ); + } + + add_action( 'bp_nouveau_enqueue_scripts', function() { + if ( bp_get_blog_signup_allowed() && bp_is_register_page() ) { + wp_add_inline_script( 'bp-nouveau', bp_nouveau_get_blog_signup_inline_script() ); + } + } ); + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + if ( is_multisite() ) { + // Add settings into the Blogs sections of the customizer. + add_filter( 'bp_nouveau_customizer_settings', 'bp_nouveau_blogs_customizer_settings', 11, 1 ); + + // Add controls into the Blogs sections of the customizer. + add_filter( 'bp_nouveau_customizer_controls', 'bp_nouveau_blogs_customizer_controls', 11, 1 ); + } + } +} + +/** + * Launch the Blogs loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_blogs( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->blogs = new BP_Nouveau_Blogs(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_blogs', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..5226c092f659aaf8800acb43ed597b39c8fe6c15 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/blogs/template-tags.php @@ -0,0 +1,311 @@ +<?php +/** + * Blogs Template tags + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Template tag to wrap all Legacy actions that was used + * before the blogs directory content + * + * @since 3.0.0 + */ +function bp_nouveau_before_blogs_directory_content() { + /** + * Fires at the begining of the templates BP injected content. + * + * @since 2.3.0 + */ + do_action( 'bp_before_directory_blogs_page' ); + + /** + * Fires before the display of the blogs. + * + * @since 1.5.0 + */ + do_action( 'bp_before_directory_blogs' ); + + /** + * Fires before the display of the blogs listing content. + * + * @since 3.0.0 + */ + do_action( 'bp_before_directory_blogs_content' ); + + /** + * Fires before the display of the blogs list tabs. + * + * @since 2.3.0 + */ + do_action( 'bp_before_directory_blogs_tabs' ); +} + +/** + * Template tag to wrap all Legacy actions that was used after the blogs directory content + * + * @since 3.0.0 + */ +function bp_nouveau_after_blogs_directory_content() { + /** + * Fires inside and displays the blogs content. + * + * @since 3.0.0 + */ + do_action( 'bp_directory_blogs_content' ); + + /** + * Fires after the display of the blogs listing content. + * + * @since 3.0.0 + */ + do_action( 'bp_after_directory_blogs_content' ); + + /** + * Fires at the bottom of the blogs directory template file. + * + * @since 1.5.0 + */ + do_action( 'bp_after_directory_blogs' ); + + /** + * Fires at the bottom of the blogs directory template file. + * + * @since 2.3.0 + */ + do_action( 'bp_after_directory_blogs_page' ); +} + +/** + * Fire specific hooks into the blogs create template + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_blogs_create_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a create a blog hook + $hook[] = 'create_blog'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Fire an isolated hook inside the blogs loop + * + * @since 3.0.0 + */ +function bp_nouveau_blogs_loop_item() { + /** + * Fires after the listing of a blog item in the blogs loop. + * + * @since 1.2.0 + */ + do_action( 'bp_directory_blogs_item' ); +} + +/** + * Output the action buttons inside the blogs loop. + * + * @since 3.0.0 + * + * @param array $args See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_blogs_loop_buttons( $args = array() ) { + if ( empty( $GLOBALS['blogs_template'] ) ) { + return; + } + + $args['type'] = 'loop'; + + $output = join( ' ', bp_nouveau_get_blogs_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the blogs action listing area. + * + * @since 3.0.0 + */ + do_action( 'bp_directory_blogs_actions' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + + /** + * Get the action buttons for the current blog in the loop. + * + * @since 3.0.0 + * + * @param string $type Type of Group of buttons to get. + * + * @return array + */ + function bp_nouveau_get_blogs_buttons( $args ) { + $type = ( ! empty( $args['type'] ) ) ? $args['type'] : 'loop'; + + // @todo Not really sure why BP Legacy needed to do this... + if ( 'loop' !== $type && is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + return array(); + } + + $buttons = array(); + + if ( isset( $GLOBALS['blogs_template']->blog ) ) { + $blog = $GLOBALS['blogs_template']->blog; + } + + if ( empty( $blog->blog_id ) ) { + return $buttons; + } + + /* + * If the 'container' is set to 'ul', set a var $parent_element to li, + * otherwise simply pass any value found in args or set var false. + */ + if ( ! empty( $args['container'] ) && 'ul' === $args['container'] ) { + $parent_element = 'li'; + } elseif ( ! empty( $args['parent_element'] ) ) { + $parent_element = $args['parent_element']; + } else { + $parent_element = false; + } + + /* + * If we have a arg value for $button_element passed through + * use it to default all the $buttons['button_element'] values + * otherwise default to 'a' (anchor) + * Or override & hardcode the 'element' string on $buttons array. + * + * Icons sets a class for icon display if not using the button element + */ + $icons = ''; + if ( ! empty( $args['button_element'] ) ) { + $button_element = $args['button_element'] ; + } else { + $button_element = 'a'; + $icons = ' icons'; + } + + /* + * This filter workaround is waiting for a core adaptation + * so that we can directly get the groups button arguments + * instead of the button. + * + * See https://buddypress.trac.wordpress.org/ticket/7126 + */ + add_filter( 'bp_get_blogs_visit_blog_button', 'bp_nouveau_blogs_catch_button_args', 100, 1 ); + + bp_get_blogs_visit_blog_button(); + + remove_filter( 'bp_get_blogs_visit_blog_button', 'bp_nouveau_blogs_catch_button_args', 100, 1 ); + + if ( ! empty( bp_nouveau()->blogs->button_args ) ) { + $button_args = bp_nouveau()->blogs->button_args ; + + // If we pass through parent classes add them to $button array + $parent_class = ''; + if ( ! empty( $args['parent_attr']['class'] ) ) { + $parent_class = $args['parent_attr']['class']; + } + + $buttons['visit_blog'] = array( + 'id' => 'visit_blog', + 'position' => 5, + 'component' => $button_args['component'], + 'must_be_logged_in' => $button_args['must_be_logged_in'], + 'block_self' => $button_args['block_self'], + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => $button_args['link_text'], + 'parent_attr' => array( + 'id' => $button_args['wrapper_id'], + 'class' => $parent_class, + ), + 'button_attr' => array( + 'href' => $button_args['link_href'], + 'id' => $button_args['link_id'], + 'class' => $button_args['link_class'] . ' button', + 'rel' => $button_args['link_rel'], + 'title' => '', + ), + ); + + unset( bp_nouveau()->blogs->button_args ); + } + + /** + * Filter to add your buttons, use the position argument to choose where to insert it. + * + * @since 3.0.0 + * + * @param array $buttons The list of buttons. + * @param object $blog The current blog object. + * @param string $type Whether we're displaying a blogs loop or a the blogs single item (in the future!). + */ + $buttons_group = apply_filters( 'bp_nouveau_get_blogs_buttons', $buttons, $blog, $type ); + + if ( ! $buttons_group ) { + return $buttons; + } + + // It's the first entry of the loop, so build the Group and sort it + if ( ! isset( bp_nouveau()->blogs->group_buttons ) || ! is_a( bp_nouveau()->blogs->group_buttons, 'BP_Buttons_Group' ) ) { + $sort = true; + bp_nouveau()->blogs->group_buttons = new BP_Buttons_Group( $buttons_group ); + + // It's not the first entry, the order is set, we simply need to update the Buttons Group + } else { + $sort = false; + bp_nouveau()->blogs->group_buttons->update( $buttons_group ); + } + + $return = bp_nouveau()->blogs->group_buttons->get( $sort ); + + if ( ! $return ) { + return array(); + } + + /** + * Leave a chance to adjust the $return + * + * @since 3.0.0 + * + * @param array $return The list of buttons ordered. + * @param object $blog The current blog object. + * @param string $type Whether we're displaying a blogs loop or a the blogs single item (in the future!). + */ + do_action_ref_array( 'bp_nouveau_return_blogs_buttons', array( &$return, $blog, $type ) ); + + return $return; + } + +/** + * Check if the Sites has a latest post + * + * @since 3.0.0 + * + * @return bool True if the sites has a latest post. False otherwise. + */ +function bp_nouveau_blog_has_latest_post() { + return (bool) bp_get_blog_latest_post_title(); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/classes.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/classes.php new file mode 100644 index 0000000000000000000000000000000000000000..6359b399c13f57bad0f90cf214fd9534e2789f42 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/classes.php @@ -0,0 +1,318 @@ +<?php +/** + * Common Classes + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Builds a group of BP_Button + * + * @since 3.0.0 + */ +class BP_Buttons_Group { + + /** + * The parameters of the Group of buttons + * + * @var array + */ + protected $group = array(); + + /** + * Constructor + * + * @since 3.0.0 + * + * @param array $args Optional array having the following parameters { + * @type string $id A string to use as the unique ID for the button. Required. + * @type int $position Where to insert the Button. Defaults to 99. + * @type string $component The Component's the button is build for (eg: Activity, Groups..). Required. + * @type bool $must_be_logged_in Whether the button should only be displayed to logged in users. Defaults to True. + * @type bool $block_self Optional. True if the button should be hidden when a user is viewing his own profile. + * Defaults to False. + * @type string $parent_element Whether to use a wrapper. Defaults to false. + * @type string $parent_attr set an array of attributes for the parent element. + * @type string $button_element Set this to 'button', 'img', or 'a', defaults to anchor. + * @type string $button_attr Any attributes required for the button_element + * @type string $link_text The text of the link. Required. + * } + */ + public function __construct( $args = array() ) { + foreach ( $args as $arg ) { + $r = wp_parse_args( (array) $arg, array( + 'id' => '', + 'position' => 99, + 'component' => '', + 'must_be_logged_in' => true, + 'block_self' => false, + 'parent_element' => false, + 'parent_attr' => array(), + 'button_element' => 'a', + 'button_attr' => array(), + 'link_text' => '', + ) ); + + // Just don't set the button if a param is missing + if ( empty( $r['id'] ) || empty( $r['component'] ) || empty( $r['link_text'] ) ) { + continue; + } + + $r['id'] = sanitize_key( $r['id'] ); + + // If the button already exist don't add it + if ( isset( $this->group[ $r['id'] ] ) ) { + continue; + } + + /* + * If, in bp_nouveau_get_*_buttons(), we pass through a false value for 'parent_element' + * but we have attributtes for it in the array, let's default to setting a div. + * + * Otherwise, the original false value will be passed through to BP buttons. + * @todo: this needs review, probably trying to be too clever + */ + if ( ( ! empty( $r['parent_attr'] ) ) && false === $r['parent_element'] ) { + $r['parent_element'] = 'div'; + } + + $this->group[ $r['id'] ] = $r; + } + } + + + /** + * Sort the Buttons of the group according to their position attribute + * + * @since 3.0.0 + * + * @param array the list of buttons to sort. + * + * @return array the list of buttons sorted. + */ + public function sort( $buttons ) { + $sorted = array(); + + foreach ( $buttons as $button ) { + $position = 99; + + if ( isset( $button['position'] ) ) { + $position = (int) $button['position']; + } + + // If position is already taken, move to the first next available + if ( isset( $sorted[ $position ] ) ) { + $sorted_keys = array_keys( $sorted ); + + do { + $position += 1; + } while ( in_array( $position, $sorted_keys, true ) ); + } + + $sorted[ $position ] = $button; + } + + ksort( $sorted ); + return $sorted; + } + + /** + * Get the BuddyPress buttons for the group + * + * @since 3.0.0 + * + * @param bool $sort whether to sort the buttons or not. + * + * @return array An array of HTML links. + */ + public function get( $sort = true ) { + $buttons = array(); + + if ( empty( $this->group ) ) { + return $buttons; + } + + if ( true === $sort ) { + $this->group = $this->sort( $this->group ); + } + + foreach ( $this->group as $key_button => $button ) { + // Reindex with ids. + if ( true === $sort ) { + $this->group[ $button['id'] ] = $button; + unset( $this->group[ $key_button ] ); + } + + $buttons[ $button['id'] ] = bp_get_button( $button ); + } + + return $buttons; + } + + /** + * Update the group of buttons + * + * @since 3.0.0 + * + * @param array $args Optional. See the __constructor for a description of this argument. + */ + public function update( $args = array() ) { + foreach ( $args as $id => $params ) { + if ( isset( $this->group[ $id ] ) ) { + $this->group[ $id ] = wp_parse_args( $params, $this->group[ $id ] ); + } + } + } +} + +/** + * BP Sidebar Item Nav_Widget + * + * Adds a widget to move avatar/item nav into the sidebar + * + * @since 3.0.0 + * + * @uses WP_Widget + */ +class BP_Nouveau_Object_Nav_Widget extends WP_Widget { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $widget_ops = array( + 'description' => __( 'Displays BuddyPress primary nav in the sidebar of your site. Make sure to use it as the first widget of the sidebar and only once.', 'buddypress' ), + 'classname' => 'widget_nav_menu buddypress_object_nav', + ); + + parent::__construct( + 'bp_nouveau_sidebar_object_nav_widget', + __( '(BuddyPress) Primary navigation', 'buddypress' ), + $widget_ops + ); + } + + /** + * Register the widget + * + * @since 3.0.0 + */ + public static function register_widget() { + register_widget( 'BP_Nouveau_Object_Nav_Widget' ); + } + + /** + * Displays the output, the button to post new support topics + * + * @since 3.0.0 + * + * @param mixed $args Arguments + * @param unknown $instance + */ + public function widget( $args, $instance ) { + if ( ! is_buddypress() || bp_is_group_create() ) { + return; + } + + /** + * Filters the nav widget args for the BP_Nouveau_Object_Nav_Widget widget. + * + * @since 3.0.0 + * + * @param array $value Array of arguments { + * @param bool $bp_nouveau_widget_title Whether or not to assign a title for the widget. + * } + */ + $item_nav_args = wp_parse_args( $instance, apply_filters( 'bp_nouveau_object_nav_widget_args', array( + 'bp_nouveau_widget_title' => true, + ) ) ); + + $title = ''; + + if ( ! empty( $item_nav_args['bp_nouveau_widget_title'] ) ) { + if ( bp_is_group() ) { + $title = bp_get_current_group_name(); + } elseif ( bp_is_user() ) { + $title = bp_get_displayed_user_fullname(); + } elseif ( bp_get_directory_title( bp_current_component() ) ) { + $title = bp_get_directory_title( bp_current_component() ); + } + } + + /** + * Filters the BP_Nouveau_Object_Nav_Widget widget title. + * + * @since 3.0.0 + * + * @param string $title The widget title. + * @param array $instance The settings for the particular instance of the widget. + * @param string $id_base Root ID for all widgets of this type. + */ + $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); + + echo $args['before_widget']; + + if ( ! empty( $title ) ) { + echo $args['before_title'] . $title . $args['after_title']; + } + + if ( bp_is_user() ) { + bp_get_template_part( 'members/single/parts/item-nav' ); + } elseif ( bp_is_group() ) { + bp_get_template_part( 'groups/single/parts/item-nav' ); + } elseif ( bp_is_directory() ) { + bp_get_template_part( 'common/nav/directory-nav' ); + } + + echo $args['after_widget']; + } + + /** + * Update the new support topic widget options (title) + * + * @since 3.0.0 + * + * @param array $new_instance The new instance options + * @param array $old_instance The old instance options + * + * @return array the instance + */ + public function update( $new_instance, $old_instance ) { + $instance = $old_instance; + $instance['bp_nouveau_widget_title'] = (bool) $new_instance['bp_nouveau_widget_title']; + + return $instance; + } + + /** + * Output the new support topic widget options form + * + * @since 3.0.0 + * + * @param $instance Instance + * + * @return string HTML Output + */ + public function form( $instance ) { + $defaults = array( + 'bp_nouveau_widget_title' => true, + ); + + $instance = wp_parse_args( (array) $instance, $defaults ); + + $bp_nouveau_widget_title = (bool) $instance['bp_nouveau_widget_title']; + ?> + + <p> + <input class="checkbox" type="checkbox" <?php checked( $bp_nouveau_widget_title, true ); ?> id="<?php echo $this->get_field_id( 'bp_nouveau_widget_title' ); ?>" name="<?php echo $this->get_field_name( 'bp_nouveau_widget_title' ); ?>" /> + <label for="<?php echo $this->get_field_id( 'bp_nouveau_widget_title' ); ?>"><?php esc_html_e( 'Include navigation title', 'buddypress' ); ?></label> + </p> + + <?php + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer-controls.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer-controls.php new file mode 100644 index 0000000000000000000000000000000000000000..8bc2a41ed82e38baa1ca0ba4fd448abec4997471 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer-controls.php @@ -0,0 +1,101 @@ +<?php +/** + * Customizer controls + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * This control let users change the order of the BuddyPress + * single items navigation items. + * + * NB: this is a first pass to improve by using Javascript templating as explained here: + * https://developer.wordpress.org/themes/advanced-topics/customizer-api/#putting-the-pieces-together + * + * @since 3.0.0 + */ +class BP_Nouveau_Nav_Customize_Control extends WP_Customize_Control { + /** + * @var string + */ + public $type = ''; + + /** + * Render the control's content. + * + * @since 3.0.0 + */ + public function render_content() { + $id = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ); + $class = 'customize-control customize-control-' . $this->type; + $setting = "bp_nouveau_appearance[{$this->type}_nav_order]"; + $item_nav = array(); + + // It's a group + if ( 'group' === $this->type ) { + $guide = __( 'Customizing the Groups navigation order needs you create at least one group first.', 'buddypress' ); + + // Try to fetch any random group: + $random = groups_get_groups( + array( + 'type' => 'random', + 'per_page' => 1, + 'show_hidden' => true, + ) + ); + + if ( ! empty( $random['groups'] ) ) { + $group = reset( $random['groups'] ); + $nav = new BP_Nouveau_Customizer_Group_Nav( $group->id ); + $item_nav = $nav->get_group_nav(); + } + + if ( $item_nav ) { + $guide = __( 'Drag each possible group navigation items that are listed below into the order you prefer, in some groups some of these navigation items might not be active.', 'buddypress' ); + } + + // It's a user! + } else { + $item_nav = bp_nouveau_member_customizer_nav(); + + $guide = __( 'Drag each possible member navigation items that are listed below into the order you prefer.', 'buddypress' ); + } + ?> + + <?php if ( isset( $guide ) ) : ?> + <p class="description"> + <?php echo esc_html( $guide ); ?> + </p> + <?php endif; ?> + + <?php if ( ! empty( $item_nav ) ) : ?> + <ul id="<?php echo esc_attr( $id ); ?>" class="ui-sortable" style="margin-top: 0px; height: 500px;" data-bp-type="<?php echo esc_attr( $this->type ); ?>"> + + <?php + $i = 0; + foreach ( $item_nav as $item ) : + $i += 1; + ?> + <li data-bp-nav="<?php echo esc_attr( $item->slug ); ?>"> + <div class="menu-item-bar"> + <div class="menu-item-handle ui-sortable-handle"> + <span class="item-title" aria-hidden="true"> + <span class="menu-item-title"><?php echo esc_html( _bp_strip_spans_from_title( $item->name ) ); ?></span> + </span> + </div> + </div> + </li> + <?php endforeach; ?> + + </ul> + <?php endif; ?> + + <input id="<?php echo esc_attr( 'bp_item_' . $this->type ); ?>" type="hidden" value="" data-customize-setting-link="<?php echo esc_attr( $setting ); ?>" /> + + <?php + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer.php new file mode 100644 index 0000000000000000000000000000000000000000..a4dcbde6a22dcfac8262322a07602ad2617e3104 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/customizer.php @@ -0,0 +1,333 @@ +<?php +/** + * Code to hook into the WP Customizer + * + * @since 3.0.0 + * @version 3.1.0 + */ + +/** + * Add a specific panel for the BP Nouveau Template Pack. + * + * @since 3.0.0 + * + * @param WP_Customize_Manager $wp_customize WordPress customizer. + */ +function bp_nouveau_customize_register( WP_Customize_Manager $wp_customize ) { + if ( ! bp_is_root_blog() ) { + return; + } + + require_once( trailingslashit( bp_nouveau()->includes_dir ) . 'customizer-controls.php' ); + $wp_customize->register_control_type( 'BP_Nouveau_Nav_Customize_Control' ); + $bp_nouveau_options = bp_nouveau_get_appearance_settings(); + + $wp_customize->add_panel( 'bp_nouveau_panel', array( + 'description' => __( 'Customize the appearance of BuddyPress Nouveau Template pack.', 'buddypress' ), + 'title' => _x( 'BuddyPress Nouveau', 'Customizer Panel', 'buddypress' ), + 'priority' => 200, + ) ); + + /** + * Filters the BuddyPress Nouveau customizer sections and their arguments. + * + * @since 3.0.0 + * + * @param array $value Array of Customizer sections. + */ + $sections = apply_filters( 'bp_nouveau_customizer_sections', array( + 'bp_nouveau_general_settings' => array( + 'title' => __( 'General BP Settings', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 10, + 'description' => __( 'Configure general BuddyPress appearance options.', 'buddypress' ), + ), + 'bp_nouveau_user_front_page' => array( + 'title' => __( 'Member front page', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 30, + 'description' => __( 'Configure the default front page for members.', 'buddypress' ), + ), + 'bp_nouveau_user_primary_nav' => array( + 'title' => __( 'Member navigation', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 50, + 'description' => __( 'Customize the navigation menu for members. In the preview window, navigate to a user to preview your changes.', 'buddypress' ), + ), + 'bp_nouveau_loops_layout' => array( + 'title' => __( 'Loop layouts', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 70, + 'description' => __( 'Set the number of columns to use for BuddyPress loops.', 'buddypress' ), + ), + 'bp_nouveau_dir_layout' => array( + 'title' => __( 'Directory layouts', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 80, + 'description' => __( 'Select the layout style for directory content & navigation.', 'buddypress' ), + ), + ) ); + + // Add the sections to the customizer + foreach ( $sections as $id_section => $section_args ) { + $wp_customize->add_section( $id_section, $section_args ); + } + + /** + * Filters the BuddyPress Nouveau customizer settings and their arguments. + * + * @since 3.0.0 + * + * @param array $value Array of Customizer settings. + */ + $settings = apply_filters( 'bp_nouveau_customizer_settings', array( + 'bp_nouveau_appearance[avatar_style]' => array( + 'index' => 'avatar_style', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_front_page]' => array( + 'index' => 'user_front_page', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_front_bio]' => array( + 'index' => 'user_front_bio', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_nav_display]' => array( + 'index' => 'user_nav_display', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_nav_tabs]' => array( + 'index' => 'user_nav_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_subnav_tabs]' => array( + 'index' => 'user_subnav_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[user_nav_order]' => array( + 'index' => 'user_nav_order', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'bp_nouveau_sanitize_nav_order', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[members_layout]' => array( + 'index' => 'members_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[members_group_layout]' => array( + 'index' => 'members_group_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[members_friends_layout]' => array( + 'index' => 'members_friends_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[activity_dir_layout]' => array( + 'index' => 'activity_dir_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[activity_dir_tabs]' => array( + 'index' => 'activity_dir_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[members_dir_layout]' => array( + 'index' => 'members_dir_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[members_dir_tabs]' => array( + 'index' => 'members_dir_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[groups_dir_layout]' => array( + 'index' => 'groups_dir_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[sites_dir_layout]' => array( + 'index' => 'sites_dir_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[sites_dir_tabs]' => array( + 'index' => 'sites_dir_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + ) ); + + // Add the settings + foreach ( $settings as $id_setting => $setting_args ) { + $args = array(); + + if ( empty( $setting_args['index'] ) || ! isset( $bp_nouveau_options[ $setting_args['index'] ] ) ) { + continue; + } + + $args = array_merge( $setting_args, array( 'default' => $bp_nouveau_options[ $setting_args['index'] ] ) ); + + $wp_customize->add_setting( $id_setting, $args ); + } + + $controls = array( + 'bp_site_avatars' => array( + 'label' => __( 'Use the round style for member and group avatars.', 'buddypress' ), + 'section' => 'bp_nouveau_general_settings', + 'settings' => 'bp_nouveau_appearance[avatar_style]', + 'type' => 'checkbox', + ), + 'user_front_page' => array( + 'label' => __( 'Enable default front page for member profiles.', 'buddypress' ), + 'section' => 'bp_nouveau_user_front_page', + 'settings' => 'bp_nouveau_appearance[user_front_page]', + 'type' => 'checkbox', + ), + 'user_front_bio' => array( + 'label' => __( 'Display the biographical info from the member\'s WordPress profile.', 'buddypress' ), + 'section' => 'bp_nouveau_user_front_page', + 'settings' => 'bp_nouveau_appearance[user_front_bio]', + 'type' => 'checkbox', + ), + 'user_nav_display' => array( + 'label' => __( 'Display the member navigation vertically.', 'buddypress' ), + 'section' => 'bp_nouveau_user_primary_nav', + 'settings' => 'bp_nouveau_appearance[user_nav_display]', + 'type' => 'checkbox', + ), + 'user_nav_tabs' => array( + 'label' => __( 'Use tab styling for primary nav.', 'buddypress' ), + 'section' => 'bp_nouveau_user_primary_nav', + 'settings' => 'bp_nouveau_appearance[user_nav_tabs]', + 'type' => 'checkbox', + ), + 'user_subnav_tabs' => array( + 'label' => __( 'Use tab styling for secondary nav.', 'buddypress' ), + 'section' => 'bp_nouveau_user_primary_nav', + 'settings' => 'bp_nouveau_appearance[user_subnav_tabs]', + 'type' => 'checkbox', + ), + 'user_nav_order' => array( + 'class' => 'BP_Nouveau_Nav_Customize_Control', + 'label' => __( 'Reorder the primary navigation for a user.', 'buddypress' ), + 'section' => 'bp_nouveau_user_primary_nav', + 'settings' => 'bp_nouveau_appearance[user_nav_order]', + 'type' => 'user', + ), + 'members_layout' => array( + 'label' => __( 'Members', 'buddypress' ), + 'section' => 'bp_nouveau_loops_layout', + 'settings' => 'bp_nouveau_appearance[members_layout]', + 'type' => 'select', + 'choices' => bp_nouveau_customizer_grid_choices(), + ), + 'members_friends_layout' => array( + 'label' => __( 'Member > Friends', 'buddypress' ), + 'section' => 'bp_nouveau_loops_layout', + 'settings' => 'bp_nouveau_appearance[members_friends_layout]', + 'type' => 'select', + 'choices' => bp_nouveau_customizer_grid_choices(), + ), + 'members_dir_layout' => array( + 'label' => __( 'Use column navigation for the Members directory.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[members_dir_layout]', + 'type' => 'checkbox', + ), + 'members_dir_tabs' => array( + 'label' => __( 'Use tab styling for Members directory navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[members_dir_tabs]', + 'type' => 'checkbox', + ), + ); + + /** + * Filters the BuddyPress Nouveau customizer controls and their arguments. + * + * @since 3.0.0 + * + * @param array $value Array of Customizer controls. + */ + $controls = apply_filters( 'bp_nouveau_customizer_controls', $controls ); + + // Add the controls to the customizer's section + foreach ( $controls as $id_control => $control_args ) { + if ( empty( $control_args['class'] ) ) { + $wp_customize->add_control( $id_control, $control_args ); + } else { + $wp_customize->add_control( new $control_args['class']( $wp_customize, $id_control, $control_args ) ); + } + } +} +add_action( 'bp_customize_register', 'bp_nouveau_customize_register', 10, 1 ); + +/** + * Enqueue needed JS for our customizer Settings & Controls + * + * @since 3.0.0 + */ +function bp_nouveau_customizer_enqueue_scripts() { + $min = bp_core_get_minified_asset_suffix(); + + wp_enqueue_script( + 'bp-nouveau-customizer', + trailingslashit( bp_get_theme_compat_url() ) . "js/customizer{$min}.js", + array( 'jquery', 'jquery-ui-sortable', 'customize-controls', 'iris', 'underscore', 'wp-util' ), + bp_nouveau()->version, + true + ); + + /** + * Fires after Nouveau enqueues its required javascript. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_customizer_enqueue_scripts' ); +} +add_action( 'customize_controls_enqueue_scripts', 'bp_nouveau_customizer_enqueue_scripts' ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/ajax.php new file mode 100644 index 0000000000000000000000000000000000000000..25b9701316eb132e4ac32a2ceff30e45872718a1 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/ajax.php @@ -0,0 +1,225 @@ +<?php +/** + * Friends Ajax functions + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +add_action( 'admin_init', function() { + $ajax_actions = array( + array( + 'friends_remove_friend' => array( + 'function' => 'bp_nouveau_ajax_addremove_friend', + 'nopriv' => false, + ), + ), + array( + 'friends_add_friend' => array( + 'function' => 'bp_nouveau_ajax_addremove_friend', + 'nopriv' => false, + ), + ), + array( + 'friends_withdraw_friendship' => array( + 'function' => 'bp_nouveau_ajax_addremove_friend', + 'nopriv' => false, + ), + ), + array( + 'friends_accept_friendship' => array( + 'function' => 'bp_nouveau_ajax_addremove_friend', + 'nopriv' => false, + ), + ), + array( + 'friends_reject_friendship' => array( + 'function' => 'bp_nouveau_ajax_addremove_friend', + 'nopriv' => false, + ), + ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } +}, 12 ); + +/** + * Friend/un-friend a user via a POST request. + * + * @since 3.0.0 + * + * @return string HTML + */ +function bp_nouveau_ajax_addremove_friend() { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error bp-ajax-message"><p>%s</p></div>', + esc_html__( 'There was a problem performing this action. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['nonce'] ) || empty( $_POST['item_id'] ) || ! bp_is_active( 'friends' ) ) { + wp_send_json_error( $response ); + } + + // Use default nonce + $nonce = $_POST['nonce']; + $check = 'bp_nouveau_friends'; + + // Use a specific one for actions needed it + if ( ! empty( $_POST['_wpnonce'] ) && ! empty( $_POST['action'] ) ) { + $nonce = $_POST['_wpnonce']; + $check = $_POST['action']; + } + + // Nonce check! + if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $check ) ) { + wp_send_json_error( $response ); + } + + // Cast fid as an integer. + $friend_id = (int) $_POST['item_id']; + + // Check if the user exists only when the Friend ID is not a Frienship ID. + if ( isset( $_POST['action'] ) && $_POST['action'] !== 'friends_accept_friendship' && $_POST['action'] !== 'friends_reject_friendship' ) { + $user = get_user_by( 'id', $friend_id ); + if ( ! $user ) { + wp_send_json_error( + array( + 'feedback' => sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'No member found by that ID.', 'buddypress' ) + ), + ) + ); + } + } + + // In the 2 first cases the $friend_id is a friendship id. + if ( ! empty( $_POST['action'] ) && 'friends_accept_friendship' === $_POST['action'] ) { + if ( ! friends_accept_friendship( $friend_id ) ) { + wp_send_json_error( + array( + 'feedback' => sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'There was a problem accepting that request. Please try again.', 'buddypress' ) + ), + ) + ); + } else { + wp_send_json_success( + array( + 'feedback' => sprintf( + '<div class="bp-feedback success">%s</div>', + esc_html__( 'Friendship accepted.', 'buddypress' ) + ), + 'type' => 'success', + 'is_user' => true, + ) + ); + } + + // Rejecting a friendship + } elseif ( ! empty( $_POST['action'] ) && 'friends_reject_friendship' === $_POST['action'] ) { + if ( ! friends_reject_friendship( $friend_id ) ) { + wp_send_json_error( + array( + 'feedback' => sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'There was a problem rejecting that request. Please try again.', 'buddypress' ) + ), + ) + ); + } else { + wp_send_json_success( + array( + 'feedback' => sprintf( + '<div class="bp-feedback success">%s</div>', + esc_html__( 'Friendship rejected.', 'buddypress' ) + ), + 'type' => 'success', + 'is_user' => true, + ) + ); + } + + // Trying to cancel friendship. + } elseif ( 'is_friend' === BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $friend_id ) ) { + if ( ! friends_remove_friend( bp_loggedin_user_id(), $friend_id ) ) { + $response['feedback'] = sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'Friendship could not be cancelled.', 'buddypress' ) + ); + + wp_send_json_error( $response ); + } else { + $is_user = bp_is_my_profile(); + + if ( ! $is_user ) { + $response = array( 'contents' => bp_get_add_friend_button( $friend_id ) ); + } else { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback success">%s</div>', + esc_html__( 'Friendship cancelled.', 'buddypress' ) + ), + 'type' => 'success', + 'is_user' => $is_user, + ); + } + + wp_send_json_success( $response ); + } + + // Trying to request friendship. + } elseif ( 'not_friends' === BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $friend_id ) ) { + if ( ! friends_add_friend( bp_loggedin_user_id(), $friend_id ) ) { + $response['feedback'] = sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'Friendship could not be requested.', 'buddypress' ) + ); + + wp_send_json_error( $response ); + } else { + wp_send_json_success( array( 'contents' => bp_get_add_friend_button( $friend_id ) ) ); + } + + // Trying to cancel pending request. + } elseif ( 'pending' === BP_Friends_Friendship::check_is_friend( bp_loggedin_user_id(), $friend_id ) ) { + if ( friends_withdraw_friendship( bp_loggedin_user_id(), $friend_id ) ) { + wp_send_json_success( array( 'contents' => bp_get_add_friend_button( $friend_id ) ) ); + } else { + $response['feedback'] = sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'Friendship request could not be cancelled.', 'buddypress' ) + ); + + wp_send_json_error( $response ); + } + + // Request already pending. + } else { + $response['feedback'] = sprintf( + '<div class="bp-feedback error">%s</div>', + esc_html__( 'Request Pending', 'buddypress' ) + ); + + wp_send_json_error( $response ); + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..bcd76e337f81c06355d60c4376c3efc89dcfd8e7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/friends/loader.php @@ -0,0 +1,129 @@ +<?php +/** + * BP Nouveau Friends + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Friends Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Friends { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = trailingslashit( dirname( __FILE__ ) ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && 0 === strpos( $_REQUEST['action'], 'friends_' ) ) { + require $this->dir . 'ajax.php'; + } + } ); + } + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + // Remove BuddyPress action for the members loop + remove_action( 'bp_directory_members_actions', 'bp_member_add_friend_button' ); + + // Register the friends Notifications filters + add_action( 'bp_nouveau_notifications_init_filters', array( $this, 'notification_filters' ) ); + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + $buttons = array( + 'friends_pending', + 'friends_is_friend', + 'friends_not_friends', + 'friends_member_friendship', + 'friends_accept_friendship', + 'friends_reject_friendship', + ); + + foreach ( $buttons as $button ) { + add_filter( 'bp_button_' . $button, 'bp_nouveau_ajax_button', 10, 5 ); + } + } + + /** + * Register notifications filters for the friends component. + * + * @since 3.0.0 + */ + public function notification_filters() { + $notifications = array( + array( + 'id' => 'friendship_accepted', + 'label' => __( 'Accepted friendship requests', 'buddypress' ), + 'position' => 35, + ), + array( + 'id' => 'friendship_request', + 'label' => __( 'Pending friendship requests', 'buddypress' ), + 'position' => 45, + ), + ); + + foreach ( $notifications as $notification ) { + bp_nouveau_notifications_register_filter( $notification ); + } + } +} + +/** + * Launch the Friends loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_friends( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->friends = new BP_Nouveau_Friends(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_friends', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..86b2099d4935c399f40d787a3db6bfce2013dd9d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/functions.php @@ -0,0 +1,1381 @@ +<?php +/** + * Common functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * This function looks scarier than it actually is. :) + * Each object loop (activity/members/groups/blogs/forums) contains default + * parameters to show specific information based on the page we are currently + * looking at. + * + * The following function will take into account any cookies set in the JS and + * allow us to override the parameters sent. That way we can change the results + * returned without reloading the page. + * + * By using cookies we can also make sure that user settings are retained + * across page loads. + * + * @since 3.0.0 + * + * @param string $query_string Query string for the current request. + * @param string $object Object for cookie. + * + * @return string Query string for the component loops + */ +function bp_nouveau_ajax_querystring( $query_string, $object ) { + if ( empty( $object ) ) { + return ''; + } + + // Default query + $post_query = array( + 'filter' => '', + 'scope' => 'all', + 'page' => 1, + 'search_terms' => '', + 'extras' => '', + ); + + if ( ! empty( $_POST ) ) { + $post_query = wp_parse_args( $_POST, $post_query ); + + // Make sure to transport the scope, filter etc.. in HeartBeat Requests + if ( ! empty( $post_query['data']['bp_heartbeat'] ) ) { + $bp_heartbeat = $post_query['data']['bp_heartbeat']; + + // Remove heartbeat specific vars + $post_query = array_diff_key( + wp_parse_args( $bp_heartbeat, $post_query ), + array( + 'data' => false, + 'interval' => false, + '_nonce' => false, + 'action' => false, + 'screen_id' => false, + 'has_focus' => false, + ) + ); + } + } + + // Init the query string + $qs = array(); + + // Activity stream filtering on action. + if ( ! empty( $post_query['filter'] ) && '-1' !== $post_query['filter'] ) { + if ( 'notifications' === $object ) { + $qs[] = 'component_action=' . $post_query['filter']; + } else { + $qs[] = 'type=' . $post_query['filter']; + $qs[] = 'action=' . $post_query['filter']; + } + } + + // Sort the notifications if needed + if ( ! empty( $post_query['extras'] ) && 'notifications' === $object ) { + $qs[] = 'sort_order=' . $post_query['extras']; + } + + if ( 'personal' === $post_query['scope'] ) { + $user_id = ( bp_displayed_user_id() ) ? bp_displayed_user_id() : bp_loggedin_user_id(); + $qs[] = 'user_id=' . $user_id; + } + + // Activity stream scope only on activity directory. + if ( 'all' !== $post_query['scope'] && ! bp_displayed_user_id() && ! bp_is_single_item() ) { + $qs[] = 'scope=' . $post_query['scope']; + } + + // If page have been passed via the AJAX post request, use those. + if ( '-1' != $post_query['page'] ) { + $qs[] = 'page=' . absint( $post_query['page'] ); + } + + // Excludes activity just posted and avoids duplicate ids. + if ( ! empty( $post_query['exclude_just_posted'] ) ) { + $just_posted = wp_parse_id_list( $post_query['exclude_just_posted'] ); + $qs[] = 'exclude=' . implode( ',', $just_posted ); + } + + // To get newest activities. + if ( ! empty( $post_query['offset'] ) ) { + $qs[] = 'offset=' . intval( $post_query['offset'] ); + } + + $object_search_text = bp_get_search_default_text( $object ); + if ( ! empty( $post_query['search_terms'] ) && $object_search_text != $post_query['search_terms'] && 'false' != $post_query['search_terms'] && 'undefined' != $post_query['search_terms'] ) { + $qs[] = 'search_terms=' . urlencode( $_POST['search_terms'] ); + } + + // Specific to messages + if ( 'messages' === $object ) { + if ( ! empty( $post_query['box'] ) ) { + $qs[] = 'box=' . $post_query['box']; + } + } + + // Single activity. + if ( bp_is_single_activity() ) { + $qs = array( + 'display_comments=threaded', + 'show_hidden=true', + 'include=' . bp_current_action(), + ); + } + + // Now pass the querystring to override default values. + $query_string = empty( $qs ) ? '' : join( '&', (array) $qs ); + + // List the variables for the filter + list( $filter, $scope, $page, $search_terms, $extras ) = array_values( $post_query ); + + /** + * Filters the AJAX query string for the component loops. + * + * @since 3.0.0 + * + * @param string $query_string The query string we are working with. + * @param string $object The type of page we are on. + * @param string $filter The current object filter. + * @param string $scope The current object scope. + * @param string $page The current object page. + * @param string $search_terms The current object search terms. + * @param string $extras The current object extras. + */ + return apply_filters( 'bp_nouveau_ajax_querystring', $query_string, $object, $filter, $scope, $page, $search_terms, $extras ); +} + +/** + * @since 3.0.0 + * + * @return string + */ +function bp_nouveau_ajax_button( $output = '', $button = null, $before = '', $after = '', $r = array() ) { + if ( empty( $button->component ) ) { + return $output; + } + + // Custom data attribute. + $r['button_attr']['data-bp-btn-action'] = $button->id; + + $reset_ids = array( + 'member_friendship' => true, + 'group_membership' => true, + ); + + if ( ! empty( $reset_ids[ $button->id ] ) ) { + $parse_class = array_map( 'sanitize_html_class', explode( ' ', $r['button_attr']['class'] ) ); + if ( false === $parse_class ) { + return $output; + } + + $find_id = array_intersect( $parse_class, array( + 'pending_friend', + 'is_friend', + 'not_friends', + 'leave-group', + 'join-group', + 'accept-invite', + 'membership-requested', + 'request-membership', + ) ); + + if ( 1 !== count( $find_id ) ) { + return $output; + } + + $data_attribute = reset( $find_id ); + if ( 'pending_friend' === $data_attribute ) { + $data_attribute = str_replace( '_friend', '', $data_attribute ); + } elseif ( 'group_membership' === $button->id ) { + $data_attribute = str_replace( '-', '_', $data_attribute ); + } + + $r['button_attr']['data-bp-btn-action'] = $data_attribute; + } + + // Re-render the button with our custom data attribute. + $output = new BP_Core_HTML_Element( array( + 'element' => $r['button_element'], + 'attr' => $r['button_attr'], + 'inner_html' => ! empty( $r['link_text'] ) ? $r['link_text'] : '' + ) ); + $output = $output->contents(); + + // Add span bp-screen-reader-text class + return $before . $output . $after; +} + +/** + * Output HTML content into a wrapper. + * + * @since 3.0.0 + * + * @param array $args { + * Optional arguments. + * + * @type string $container String HTML container type that should wrap + * the items as a group: 'div', 'ul', or 'p'. Required. + * @type string $container_id The group wrapping container element ID + * @type string $container_classes The group wrapping container elements class + * @type string $output The HTML to output. Required. + * } + */ +function bp_nouveau_wrapper( $args = array() ) { + /** + * Classes need to be determined & set by component to a certain degree + * + * Check the component to find a default container_class to add + */ + $current_component_class = bp_current_component() . '-meta'; + + if ( bp_is_group_activity() ) { + $generic_class = ' activity-meta '; + } else { + $generic_class = ''; + } + + $r = wp_parse_args( $args, array( + 'container' => 'div', + 'container_id' => '', + 'container_classes' => array( $generic_class, $current_component_class ), + 'output' => '', + ) ); + + $valid_containers = array( + 'div' => true, + 'ul' => true, + 'ol' => true, + 'span' => true, + 'p' => true, + ); + + // Actually merge some classes defaults and $args + // @todo This is temp, we need certain classes but maybe improve this approach. + $default_classes = array( 'action' ); + $r['container_classes'] = array_merge( $r['container_classes'], $default_classes ); + + if ( empty( $r['container'] ) || ! isset( $valid_containers[ $r['container'] ] ) || empty( $r['output'] ) ) { + return; + } + + $container = $r['container']; + $container_id = ''; + $container_classes = ''; + $output = $r['output']; + + if ( ! empty( $r['container_id'] ) ) { + $container_id = ' id="' . esc_attr( $r['container_id'] ) . '"'; + } + + if ( ! empty( $r['container_classes'] ) && is_array( $r['container_classes'] ) ) { + $container_classes = ' class="' . join( ' ', array_map( 'sanitize_html_class', $r['container_classes'] ) ) . '"'; + } + + // Print the wrapper and its content. + printf( '<%1$s%2$s%3$s>%4$s</%1$s>', $container, $container_id, $container_classes, $output ); +} + +/** + * Register the 2 sidebars for the Group & User default front page + * + * @since 3.0.0 + */ +function bp_nouveau_register_sidebars() { + $default_fronts = bp_nouveau_get_appearance_settings(); + $default_user_front = 0; + $default_group_front = 0; + $is_active_groups = bp_is_active( 'groups' ); + + if ( isset( $default_fronts['user_front_page'] ) ) { + $default_user_front = $default_fronts['user_front_page']; + } + + if ( $is_active_groups ) { + if ( isset( $default_fronts['group_front_page'] ) ) { + $default_group_front = $default_fronts['group_front_page']; + } + } + + // Setting the front template happens too early, so we need this! + if ( is_customize_preview() ) { + $default_user_front = bp_nouveau_get_temporary_setting( 'user_front_page', $default_user_front ); + + if ( $is_active_groups ) { + $default_group_front = bp_nouveau_get_temporary_setting( 'group_front_page', $default_group_front ); + } + } + + $sidebars = array(); + if ( $default_user_front ) { + $sidebars[] = array( + 'name' => __( 'BuddyPress Member\'s Home', 'buddypress' ), + 'id' => 'sidebar-buddypress-members', + 'description' => __( 'Add widgets here to appear in the front page of each member of your community.', 'buddypress' ), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ); + } + + if ( $default_group_front ) { + $sidebars[] = array( + 'name' => __( 'BuddyPress Group\'s Home', 'buddypress' ), + 'id' => 'sidebar-buddypress-groups', + 'description' => __( 'Add widgets here to appear in the front page of each group of your community.', 'buddypress' ), + 'before_widget' => '<div id="%1$s" class="widget %2$s">', + 'after_widget' => '</div>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ); + } + + if ( empty( $sidebars ) ) { + return; + } + + // Register the sidebars if needed. + foreach ( $sidebars as $sidebar ) { + register_sidebar( $sidebar ); + } +} + +/** + * @since 3.0.0 + * + * @return bool + */ +function bp_nouveau_is_object_nav_in_sidebar() { + return is_active_widget( false, false, 'bp_nouveau_sidebar_object_nav_widget', true ); +} + +/** + * @since 3.0.0 + * + * @return bool + */ +function bp_nouveau_current_user_can( $capability = '' ) { + /** + * Filters whether or not the current user can perform an action for BuddyPress Nouveau. + * + * @since 3.0.0 + * + * @param bool $value Whether or not the user is logged in. + * @param string $capability Current capability being checked. + * @param int $value Current logged in user ID. + */ + return apply_filters( 'bp_nouveau_current_user_can', is_user_logged_in(), $capability, bp_loggedin_user_id() ); +} + +/** + * Parse an html output to a list of component's directory nav item. + * + * @since 3.0.0 + * + * @param string $hook The hook to fire. + * @param string $component The component nav belongs to. + * @param int $position The position of the nav item. + * + * @return array A list of component's dir nav items + */ +function bp_nouveau_parse_hooked_dir_nav( $hook = '', $component = '', $position = 99 ) { + $extra_nav_items = array(); + + if ( empty( $hook ) || empty( $component ) || ! has_action( $hook ) ) { + return $extra_nav_items; + } + + // Get the hook output. + ob_start(); + + /** + * Fires at the start of the output for `bp_nouveau_parse_hooked_dir_nav()`. + * + * This hook is variable and depends on the hook parameter passed in. + * + * @since 3.0.0 + */ + do_action( $hook ); + $output = ob_get_clean(); + + if ( empty( $output ) ) { + return $extra_nav_items; + } + + preg_match_all( "/<li\sid=\"{$component}\-(.*)\"[^>]*>/siU", $output, $lis ); + if ( empty( $lis[1] ) ) { + return $extra_nav_items; + } + + $extra_nav_items = array_fill_keys( $lis[1], array( 'component' => $component, 'position' => $position ) ); + preg_match_all( '/<a\s[^>]*>(.*)<\/a>/siU', $output, $as ); + + if ( ! empty( $as[0] ) ) { + foreach ( $as[0] as $ka => $a ) { + $extra_nav_items[ $lis[1][ $ka ] ]['slug'] = $lis[1][ $ka ]; + $extra_nav_items[ $lis[1][ $ka ] ]['text'] = $as[1][ $ka ]; + preg_match_all( '/([\w\-]+)=([^"\'> ]+|([\'"]?)(?:[^\3]|\3+)+?\3)/', $a, $attrs ); + + if ( ! empty( $attrs[1] ) ) { + foreach ( $attrs[1] as $katt => $att ) { + if ( 'href' === $att ) { + $extra_nav_items[ $lis[1][ $ka ] ]['link'] = trim( $attrs[2][ $katt ], '"' ); + } else { + $extra_nav_items[ $lis[1][ $ka ] ][ $att ] = trim( $attrs[2][ $katt ], '"' ); + } + } + } + } + } + + if ( ! empty( $as[1] ) ) { + foreach ( $as[1] as $ks => $s ) { + preg_match_all( '/<span>(.*)<\/span>/siU', $s, $spans ); + + if ( empty( $spans[0] ) ) { + $extra_nav_items[ $lis[1][ $ks ] ]['count'] = false; + } elseif ( ! empty( $spans[1][0] ) ) { + $extra_nav_items[ $lis[1][ $ks ] ]['count'] = (int) $spans[1][0]; + } else { + $extra_nav_items[ $lis[1][ $ks ] ]['count'] = ''; + } + } + } + + return $extra_nav_items; +} + +/** + * Run specific "select filter" hooks to catch the options and build an array out of them + * + * @since 3.0.0 + * + * @param string $hook + * @param array $filters + * + * @return array + */ +function bp_nouveau_parse_hooked_options( $hook = '', $filters = array() ) { + if ( empty( $hook ) ) { + return $filters; + } + + ob_start(); + + /** + * Fires at the start of the output for `bp_nouveau_parse_hooked_options()`. + * + * This hook is variable and depends on the hook parameter passed in. + * + * @since 3.0.0 + */ + do_action( $hook ); + + $output = ob_get_clean(); + + preg_match_all( '/<option value="(.*?)"\s*>(.*?)<\/option>/', $output, $matches ); + + if ( ! empty( $matches[1] ) && ! empty( $matches[2] ) ) { + foreach ( $matches[1] as $ik => $key_action ) { + if ( ! empty( $matches[2][ $ik ] ) && ! isset( $filters[ $key_action ] ) ) { + $filters[ $key_action ] = $matches[2][ $ik ]; + } + } + } + + return $filters; +} + +/** + * Get Dropdawn filters for the current component of the one passed in params + * + * @since 3.0.0 + * + * @param string $context 'directory', 'user' or 'group' + * @param string $component The BuddyPress component ID + * + * @return array the dropdown filters + */ +function bp_nouveau_get_component_filters( $context = '', $component = '' ) { + $filters = array(); + + if ( empty( $context ) ) { + if ( bp_is_user() ) { + $context = 'user'; + } elseif ( bp_is_group() ) { + $context = 'group'; + + // Defaults to directory + } else { + $context = 'directory'; + } + } + + if ( empty( $component ) ) { + if ( 'directory' === $context || 'user' === $context ) { + $component = bp_current_component(); + + if ( 'friends' === $component ) { + $context = 'friends'; + $component = 'members'; + } + } elseif ( 'group' === $context && bp_is_group_activity() ) { + $component = 'activity'; + } elseif ( 'group' === $context && bp_is_group_members() ) { + $component = 'members'; + } + } + + if ( ! bp_is_active( $component ) ) { + return $filters; + } + + if ( 'members' === $component ) { + $filters = bp_nouveau_get_members_filters( $context ); + } elseif ( 'activity' === $component ) { + $filters = bp_nouveau_get_activity_filters(); + + // Specific case for the activity dropdown + $filters = array_merge( array( '-1' => __( '— Everything —', 'buddypress' ) ), $filters ); + } elseif ( 'groups' === $component ) { + $filters = bp_nouveau_get_groups_filters( $context ); + } elseif ( 'blogs' === $component ) { + $filters = bp_nouveau_get_blogs_filters( $context ); + } + + return $filters; +} + +/** + * When previewing make sure to get the temporary setting of the customizer. + * This is necessary when we need to get these very early. + * + * @since 3.0.0 + * + * @param string $option the index of the setting to get. + * @param mixed $retval the value to use as default. + * + * @return mixed The value for the requested option. + */ +function bp_nouveau_get_temporary_setting( $option = '', $retval = false ) { + if ( empty( $option ) || ! isset( $_POST['customized'] ) ) { + return $retval; + } + + $temporary_setting = wp_unslash( $_POST['customized'] ); + if ( ! is_array( $temporary_setting ) ) { + $temporary_setting = json_decode( $temporary_setting, true ); + } + + // This is used to transport the customizer settings into Ajax requests. + if ( 'any' === $option ) { + $retval = array(); + + foreach ( $temporary_setting as $key => $setting ) { + if ( 0 !== strpos( $key, 'bp_nouveau_appearance' ) ) { + continue; + } + + $k = str_replace( array( '[', ']' ), array( '_', '' ), $key ); + $retval[ $k ] = $setting; + } + + // Used when it's an early regular request + } elseif ( isset( $temporary_setting[ 'bp_nouveau_appearance[' . $option . ']' ] ) ) { + $retval = $temporary_setting[ 'bp_nouveau_appearance[' . $option . ']' ]; + + // Used when it's an ajax request + } elseif ( isset( $_POST['customized'][ 'bp_nouveau_appearance_' . $option ] ) ) { + $retval = $_POST['customized'][ 'bp_nouveau_appearance_' . $option ]; + } + + return $retval; +} + +/** + * Get the BP Nouveau Appearance settings. + * + * @since 3.0.0 + * + * @param string $option Leave empty to get all settings, specify a value for a specific one. + * @param mixed An array of settings, the value of the requested setting. + * + * @return array|false|mixed + */ +function bp_nouveau_get_appearance_settings( $option = '' ) { + $default_args = array( + 'avatar_style' => 0, + 'user_front_page' => 1, + 'user_front_bio' => 0, + 'user_nav_display' => 0, // O is default (horizontally). 1 is vertically. + 'user_nav_tabs' => 0, + 'user_subnav_tabs' => 0, + 'user_nav_order' => array(), + 'members_layout' => 1, + 'members_dir_tabs' => 0, + 'members_dir_layout' => 0, + ); + + if ( bp_is_active( 'friends' ) ) { + $default_args['members_friends_layout'] = 1; + } + + if ( bp_is_active( 'activity' ) ) { + $default_args['activity_dir_layout'] = 0; + $default_args['activity_dir_tabs'] = 0; // default = no tabs + } + + if ( bp_is_active( 'groups' ) ) { + $default_args = array_merge( $default_args, array( + 'group_front_page' => 1, + 'group_front_boxes' => 1, + 'group_front_description' => 0, + 'group_nav_display' => 0, // O is default (horizontally). 1 is vertically. + 'group_nav_order' => array(), + 'group_nav_tabs' => 0, + 'group_subnav_tabs' => 0, + 'groups_create_tabs' => 1, + 'groups_layout' => 1, + 'members_group_layout' => 1, + 'groups_dir_layout' => 0, + 'groups_dir_tabs' => 0, + ) ); + } + + if ( is_multisite() && bp_is_active( 'blogs' ) ) { + $default_args = array_merge( $default_args, array( + 'sites_dir_layout' => 0, + 'sites_dir_tabs' => 0, + ) ); + } + + $settings = bp_parse_args( + bp_get_option( 'bp_nouveau_appearance', array() ), + $default_args, + 'nouveau_appearance_settings' + ); + + if ( ! empty( $option ) ) { + if ( isset( $settings[ $option ] ) ) { + return $settings[ $option ]; + } else { + return false; + } + } + + return $settings; +} + +/** + * Returns the choices for the Layout option of the customizer + * or the list of corresponding css classes. + * + * @since 3.0.0 + * + * @param string $type 'option' to get the labels, 'classes' to get the classes + * + * @return array The list of labels or classes preserving keys. + */ +function bp_nouveau_customizer_grid_choices( $type = 'option' ) { + $columns = array( + array( 'key' => '1', 'label' => __( 'One column', 'buddypress' ), 'class' => '' ), + array( 'key' => '2', 'label' => __( 'Two columns', 'buddypress' ), 'class' => 'two' ), + array( 'key' => '3', 'label' => __( 'Three columns', 'buddypress' ), 'class' => 'three' ), + array( 'key' => '4', 'label' => __( 'Four columns', 'buddypress' ), 'class' => 'four' ), + ); + + if ( 'option' === $type ) { + return wp_list_pluck( $columns, 'label', 'key' ); + } + + return wp_list_pluck( $columns, 'class', 'key' ); +} + +/** + * Sanitize a list of slugs to save it as an array + * + * @since 3.0.0 + * + * @param string $option A comma separated list of nav items slugs. + * + * @return array An array of nav items slugs. + */ +function bp_nouveau_sanitize_nav_order( $option = '' ) { + $option = explode( ',', $option ); + return array_map( 'sanitize_key', $option ); +} + +/** + * BP Nouveau's callback for the cover image feature. + * + * @since 3.0.0 + * + * @param array $params Optional. The current component's feature parameters. + * + * @return string + */ +function bp_nouveau_theme_cover_image( $params = array() ) { + if ( empty( $params ) ) { + return ''; + } + + // Avatar height - padding - 1/2 avatar height. + $avatar_offset = $params['height'] - 5 - round( (int) bp_core_avatar_full_height() / 2 ); + + // Header content offset + spacing. + $top_offset = bp_core_avatar_full_height() - 10; + $left_offset = bp_core_avatar_full_width() + 20; + + $cover_image = isset( $params['cover_image'] ) ? 'background-image: url( ' . $params['cover_image'] . ' );' : ''; + $hide_avatar_style = ''; + + // Adjust the cover image header, in case avatars are completely disabled. + if ( ! buddypress()->avatar->show_avatars ) { + $hide_avatar_style = ' + #buddypress #item-header-cover-image #item-header-avatar { + display: none; + } + '; + + if ( bp_is_user() ) { + $hide_avatar_style = ' + #buddypress #item-header-cover-image #item-header-avatar a { + display: block; + height: ' . $top_offset . 'px; + margin: 0 15px 19px 0; + } + + #buddypress div#item-header #item-header-cover-image #item-header-content { + margin-left:auto; + } + '; + } + } + + return ' + /* Cover image */ + #buddypress #item-header-cover-image { + min-height: ' . $params['height'] . 'px; + margin-bottom: 1em; + } + + #buddypress #item-header-cover-image:after { + clear: both; + content: ""; + display: table; + } + + #buddypress #header-cover-image { + height: ' . $params['height'] . 'px; + ' . $cover_image . ' + } + + #buddypress #create-group-form #header-cover-image { + position: relative; + margin: 1em 0; + } + + .bp-user #buddypress #item-header { + padding-top: 0; + } + + #buddypress #item-header-cover-image #item-header-avatar { + margin-top: ' . $avatar_offset . 'px; + float: left; + overflow: visible; + width:auto; + } + + #buddypress div#item-header #item-header-cover-image #item-header-content { + clear: both; + float: left; + margin-left: ' . $left_offset . 'px; + margin-top: -' . $top_offset . 'px; + width:auto; + } + + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-header-content, + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-actions { + margin-top: ' . $params['height'] . 'px; + margin-left: 0; + clear: none; + max-width: 50%; + } + + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-actions { + padding-top: 20px; + max-width: 20%; + } + + ' . $hide_avatar_style . ' + + #buddypress div#item-header-cover-image h2 a, + #buddypress div#item-header-cover-image h2 { + color: #FFF; + text-rendering: optimizelegibility; + text-shadow: 0px 0px 3px rgba( 0, 0, 0, 0.8 ); + margin: 0 0 .6em; + font-size:200%; + } + + #buddypress #item-header-cover-image #item-header-avatar img.avatar { + border: solid 2px #FFF; + background: rgba( 255, 255, 255, 0.8 ); + } + + #buddypress #item-header-cover-image #item-header-avatar a { + border: none; + text-decoration: none; + } + + #buddypress #item-header-cover-image #item-buttons { + margin: 0 0 10px; + padding: 0 0 5px; + } + + #buddypress #item-header-cover-image #item-buttons:after { + clear: both; + content: ""; + display: table; + } + + @media screen and (max-width: 782px) { + #buddypress #item-header-cover-image #item-header-avatar, + .bp-user #buddypress #item-header #item-header-cover-image #item-header-avatar, + #buddypress div#item-header #item-header-cover-image #item-header-content { + width:100%; + text-align:center; + } + + #buddypress #item-header-cover-image #item-header-avatar a { + display:inline-block; + } + + #buddypress #item-header-cover-image #item-header-avatar img { + margin:0; + } + + #buddypress div#item-header #item-header-cover-image #item-header-content, + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-header-content, + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-actions { + margin:0; + } + + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-header-content, + body.single-item.groups #buddypress div#item-header #item-header-cover-image #item-actions { + max-width: 100%; + } + + #buddypress div#item-header-cover-image h2 a, + #buddypress div#item-header-cover-image h2 { + color: inherit; + text-shadow: none; + margin:25px 0 0; + font-size:200%; + } + + #buddypress #item-header-cover-image #item-buttons div { + float:none; + display:inline-block; + } + + #buddypress #item-header-cover-image #item-buttons:before { + content:""; + } + + #buddypress #item-header-cover-image #item-buttons { + margin: 5px 0; + } + } + '; +} + +/** + * All user feedback messages are available here + * + * @since 3.0.0 + * + * @param string $feedback_id The ID of the message. + * + * @return string|false The list of parameters for the message + */ +function bp_nouveau_get_user_feedback( $feedback_id = '' ) { + /** + * Filters the BuddyPress Nouveau feedback messages. + * + * Use this filter to add your custom feedback messages. + * + * @since 3.0.0 + * + * @param array $value The list of feedback messages. + */ + $feedback_messages = apply_filters( 'bp_nouveau_feedback_messages', array( + 'registration-disabled' => array( + 'type' => 'info', + 'message' => __( 'Member registration is currently not allowed.', 'buddypress' ), + 'before' => 'bp_before_registration_disabled', + 'after' => 'bp_after_registration_disabled' + ), + 'request-details' => array( + 'type' => 'info', + 'message' => __( 'Registering for this site is easy. Just fill in the fields below, and we\'ll get a new account set up for you in no time.', 'buddypress' ), + 'before' => false, + 'after' => false, + ), + 'completed-confirmation' => array( + 'type' => 'info', + 'message' => __( 'You have successfully created your account! Please log in using the username and password you have just created.', 'buddypress' ), + 'before' => 'bp_before_registration_confirmed', + 'after' => 'bp_after_registration_confirmed', + ), + 'directory-activity-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the community updates. Please wait.', 'buddypress' ), + ), + 'single-activity-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the update. Please wait.', 'buddypress' ), + ), + 'activity-loop-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, there was no activity found. Please try a different filter.', 'buddypress' ), + ), + 'blogs-loop-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, there were no sites found.', 'buddypress' ), + ), + 'blogs-no-signup' => array( + 'type' => 'info', + 'message' => __( 'Site registration is currently disabled.', 'buddypress' ), + ), + 'directory-blogs-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the sites of the network. Please wait.', 'buddypress' ), + ), + 'directory-groups-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the groups of the community. Please wait.', 'buddypress' ), + ), + 'groups-loop-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, there were no groups found.', 'buddypress' ), + ), + 'group-activity-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the group updates. Please wait.', 'buddypress' ), + ), + 'group-members-loading' => array( + 'type' => 'loading', + 'message' => __( 'Requesting the group members. Please wait.', 'buddypress' ), + ), + 'group-members-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, there were no group members found.', 'buddypress' ), + ), + 'group-members-search-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, there was no member of that name found in this group.', 'buddypress' ), + ), + 'group-manage-members-none' => array( + 'type' => 'info', + 'message' => __( 'This group has no members.', 'buddypress' ), + ), + 'group-requests-none' => array( + 'type' => 'info', + 'message' => __( 'There are no pending membership requests.', 'buddypress' ), + ), + 'group-requests-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the members who requested to join the group. Please wait.', 'buddypress' ), + ), + 'group-delete-warning' => array( + 'type' => 'warning', + 'message' => __( 'WARNING: Deleting this group will completely remove ALL content associated with it. There is no way back. Please be careful with this option.', 'buddypress' ), + ), + 'group-avatar-delete-info' => array( + 'type' => 'info', + 'message' => __( 'If you\'d like to remove the existing group profile photo but not upload a new one, please use the delete group profile photo button.', 'buddypress' ), + ), + 'directory-members-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the members of your community. Please wait.', 'buddypress' ), + ), + 'members-loop-none' => array( + 'type' => 'info', + 'message' => __( 'Sorry, no members were found.', 'buddypress' ), + ), + 'member-requests-none' => array( + 'type' => 'info', + 'message' => __( 'You have no pending friendship requests.', 'buddypress' ), + ), + 'member-invites-none' => array( + 'type' => 'info', + 'message' => __( 'You have no outstanding group invites.', 'buddypress' ), + ), + 'member-notifications-none' => array( + 'type' => 'info', + 'message' => __( 'This member has no notifications.', 'buddypress' ), + ), + 'member-wp-profile-none' => array( + 'type' => 'info', + 'message' => __( '%s did not save any profile information yet.', 'buddypress' ), + ), + 'member-delete-account' => array( + 'type' => 'warning', + 'message' => __( 'Deleting this account will delete all of the content it has created. It will be completely unrecoverable.', 'buddypress' ), + ), + 'member-activity-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the member\'s updates. Please wait.', 'buddypress' ), + ), + 'member-blogs-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the member\'s blogs. Please wait.', 'buddypress' ), + ), + 'member-friends-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the member\'s friends. Please wait.', 'buddypress' ), + ), + 'member-groups-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading the member\'s groups. Please wait.', 'buddypress' ), + ), + 'member-notifications-loading' => array( + 'type' => 'loading', + 'message' => __( 'Loading notifications. Please wait.', 'buddypress' ), + ), + 'member-group-invites-all' => array( + 'type' => 'info', + 'message' => __( 'Currently every member of the community can invite you to join their groups. If you are not comfortable with it, you can always restrict group invites to your friends only.', 'buddypress' ), + ), + 'member-group-invites-friends-only' => array( + 'type' => 'info', + 'message' => __( 'Currently only your friends can invite you to groups. Uncheck the box to allow any member to send invites.', 'buddypress' ), + ), + ) ); + + if ( ! isset( $feedback_messages[ $feedback_id ] ) ) { + return false; + } + + /* + * Adjust some messages to the context. + */ + if ( 'completed-confirmation' === $feedback_id && bp_registration_needs_activation() ) { + $feedback_messages['completed-confirmation']['message'] = __( 'You have successfully created your account! To begin using this site you will need to activate your account via the email we have just sent to your address.', 'buddypress' ); + } elseif ( 'member-notifications-none' === $feedback_id ) { + $is_myprofile = bp_is_my_profile(); + + if ( bp_is_current_action( 'unread' ) ) { + $feedback_messages['member-notifications-none']['message'] = __( 'This member has no unread notifications.', 'buddypress' ); + + if ( $is_myprofile ) { + $feedback_messages['member-notifications-none']['message'] = __( 'You have no unread notifications.', 'buddypress' ); + } + } elseif ( $is_myprofile ) { + $feedback_messages['member-notifications-none']['message'] = __( 'You have no notifications.', 'buddypress' ); + } + } elseif ( 'member-wp-profile-none' === $feedback_id && bp_is_user_profile() ) { + $feedback_messages['member-wp-profile-none']['message'] = sprintf( $feedback_messages['member-wp-profile-none']['message'], bp_get_displayed_user_fullname() ); + } elseif ( 'member-delete-account' === $feedback_id && bp_is_my_profile() ) { + $feedback_messages['member-delete-account']['message'] = __( 'Deleting your account will delete all of the content you have created. It will be completely irrecoverable.', 'buddypress' ); + } elseif ( 'member-activity-loading' === $feedback_id && bp_is_my_profile() ) { + $feedback_messages['member-activity-loading']['message'] = __( 'Loading your updates. Please wait.', 'buddypress' ); + } elseif ( 'member-blogs-loading' === $feedback_id && bp_is_my_profile() ) { + $feedback_messages['member-blogs-loading']['message'] = __( 'Loading your blogs. Please wait.', 'buddypress' ); + } elseif ( 'member-friends-loading' === $feedback_id && bp_is_my_profile() ) { + $feedback_messages['member-friends-loading']['message'] = __( 'Loading your friends. Please wait.', 'buddypress' ); + } elseif ( 'member-groups-loading' === $feedback_id && bp_is_my_profile() ) { + $feedback_messages['member-groups-loading']['message'] = __( 'Loading your groups. Please wait.', 'buddypress' ); + } + + /** + * Filter here if you wish to edit the message just before being displayed + * + * @since 3.0.0 + * + * @param array $feedback_messages + */ + return apply_filters( 'bp_nouveau_get_user_feedback', $feedback_messages[ $feedback_id ] ); +} + +/** + * Get the signup fields for the requested section + * + * @since 3.0.0 + * + * @param string $section Optional. The section of fields to get 'account_details' or 'blog_details'. + * + * @return array|false The list of signup fields for the requested section. False if not found. + */ +function bp_nouveau_get_signup_fields( $section = '' ) { + if ( empty( $section ) ) { + return false; + } + + /** + * Filter to add your specific 'text' or 'password' inputs + * + * If you need to use other types of field, please use the + * do_action( 'bp_account_details_fields' ) or do_action( 'blog_details' ) hooks instead. + * + * @since 3.0.0 + * + * @param array $value The list of fields organized into sections. + */ + $fields = apply_filters( 'bp_nouveau_get_signup_fields', array( + 'account_details' => array( + 'signup_username' => array( + 'label' => __( 'Username', 'buddypress' ), + 'required' => true, + 'value' => 'bp_get_signup_username_value', + 'attribute_type' => 'username', + 'type' => 'text', + 'class' => '', + ), + 'signup_email' => array( + 'label' => __( 'Email Address', 'buddypress' ), + 'required' => true, + 'value' => 'bp_get_signup_email_value', + 'attribute_type' => 'email', + 'type' => 'email', + 'class' => '', + ), + 'signup_password' => array( + 'label' => __( 'Choose a Password', 'buddypress' ), + 'required' => true, + 'value' => '', + 'attribute_type' => 'password', + 'type' => 'password', + 'class' => 'password-entry', + ), + 'signup_password_confirm' => array( + 'label' => __( 'Confirm Password', 'buddypress' ), + 'required' => true, + 'value' => '', + 'attribute_type' => 'password', + 'type' => 'password', + 'class' => 'password-entry-confirm', + ), + ), + 'blog_details' => array( + 'signup_blog_url' => array( + 'label' => __( 'Site URL', 'buddypress' ), + 'required' => true, + 'value' => 'bp_get_signup_blog_url_value', + 'attribute_type' => 'slug', + 'type' => 'text', + 'class' => '', + ), + 'signup_blog_title' => array( + 'label' => __( 'Site Title', 'buddypress' ), + 'required' => true, + 'value' => 'bp_get_signup_blog_title_value', + 'attribute_type' => 'title', + 'type' => 'text', + 'class' => '', + ), + 'signup_blog_privacy_public' => array( + 'label' => __( 'Yes', 'buddypress' ), + 'required' => false, + 'value' => 'public', + 'attribute_type' => '', + 'type' => 'radio', + 'class' => '', + ), + 'signup_blog_privacy_private' => array( + 'label' => __( 'No', 'buddypress' ), + 'required' => false, + 'value' => 'private', + 'attribute_type' => '', + 'type' => 'radio', + 'class' => '', + ), + ), + ) ); + + if ( ! bp_get_blog_signup_allowed() ) { + unset( $fields['blog_details'] ); + } + + if ( isset( $fields[ $section ] ) ) { + return $fields[ $section ]; + } + + return false; +} + +/** + * Get Some submit buttons data. + * + * @since 3.0.0 + * + * @param string $action The action requested. + * + * @return array|false The list of the submit button parameters for the requested action + * False if no actions were found. + */ +function bp_nouveau_get_submit_button( $action = '' ) { + if ( empty( $action ) ) { + return false; + } + + /** + * Filter the Submit buttons to add your own. + * + * @since 3.0.0 + * + * @param array $value The list of submit buttons. + * + * @return array|false + */ + $actions = apply_filters( 'bp_nouveau_get_submit_button', array( + 'register' => array( + 'before' => 'bp_before_registration_submit_buttons', + 'after' => 'bp_after_registration_submit_buttons', + 'nonce' => 'bp_new_signup', + 'attributes' => array( + 'name' => 'signup_submit', + 'id' => 'signup_submit', + 'value' => __( 'Complete Sign Up', 'buddypress' ), + ), + ), + 'member-profile-edit' => array( + 'before' => '', + 'after' => '', + 'nonce' => 'bp_xprofile_edit', + 'attributes' => array( + 'name' => 'profile-group-edit-submit', + 'id' => 'profile-group-edit-submit', + 'value' => __( 'Save Changes', 'buddypress' ), + ), + ), + 'member-capabilities' => array( + 'before' => 'bp_members_capabilities_account_before_submit', + 'after' => 'bp_members_capabilities_account_after_submit', + 'nonce' => 'capabilities', + 'attributes' => array( + 'name' => 'capabilities-submit', + 'id' => 'capabilities-submit', + 'value' => __( 'Save', 'buddypress' ), + ), + ), + 'member-delete-account' => array( + 'before' => 'bp_members_delete_account_before_submit', + 'after' => 'bp_members_delete_account_after_submit', + 'nonce' => 'delete-account', + 'attributes' => array( + 'disabled' => 'disabled', + 'name' => 'delete-account-button', + 'id' => 'delete-account-button', + 'value' => __( 'Delete Account', 'buddypress' ), + ), + ), + 'members-general-settings' => array( + 'before' => 'bp_core_general_settings_before_submit', + 'after' => 'bp_core_general_settings_after_submit', + 'nonce' => 'bp_settings_general', + 'attributes' => array( + 'name' => 'submit', + 'id' => 'submit', + 'value' => __( 'Save Changes', 'buddypress' ), + 'class' => 'auto', + ), + ), + 'member-notifications-settings' => array( + 'before' => 'bp_members_notification_settings_before_submit', + 'after' => 'bp_members_notification_settings_after_submit', + 'nonce' => 'bp_settings_notifications', + 'attributes' => array( + 'name' => 'submit', + 'id' => 'submit', + 'value' => __( 'Save Changes', 'buddypress' ), + 'class' => 'auto', + ), + ), + 'members-profile-settings' => array( + 'before' => 'bp_core_xprofile_settings_before_submit', + 'after' => 'bp_core_xprofile_settings_after_submit', + 'nonce' => 'bp_xprofile_settings', + 'attributes' => array( + 'name' => 'xprofile-settings-submit', + 'id' => 'submit', + 'value' => __( 'Save Changes', 'buddypress' ), + 'class' => 'auto', + ), + ), + 'member-group-invites' => array( + 'nonce' => 'bp_nouveau_group_invites_settings', + 'attributes' => array( + 'name' => 'member-group-invites-submit', + 'id' => 'submit', + 'value' => __( 'Save', 'buddypress' ), + 'class' => 'auto', + ), + ), + 'activity-new-comment' => array( + 'after' => 'bp_activity_entry_comments', + 'nonce' => 'new_activity_comment', + 'nonce_key' => '_wpnonce_new_activity_comment', + 'wrapper' => false, + 'attributes' => array( + 'name' => 'ac_form_submit', + 'value' => _x( 'Post', 'button', 'buddypress' ), + ), + ), + ) ); + + if ( isset( $actions[ $action ] ) ) { + return $actions[ $action ]; + } + + return false; +} + +/** + * Reorder a BuddyPress item nav according to a given list of nav item slugs + * + * @since 3.0.0 + * + * @param object $nav The BuddyPress Item Nav object to reorder + * @param array $order A list of slugs ordered (eg: array( 'profile', 'activity', etc..) ) + * @param string $parent_slug A parent slug if it's a secondary nav we are reordering (case of the Groups single item) + * + * @return bool True on success. False otherwise. + */ +function bp_nouveau_set_nav_item_order( $nav = null, $order = array(), $parent_slug = '' ) { + if ( ! is_object( $nav ) || empty( $order ) || ! is_array( $order ) ) { + return false; + } + + $position = 0; + + foreach ( $order as $slug ) { + $position += 10; + + $key = $slug; + if ( ! empty( $parent_slug ) ) { + $key = $parent_slug . '/' . $key; + } + + $item_nav = $nav->get( $key ); + + if ( ! $item_nav ) { + continue; + } + + if ( (int) $item_nav->position !== (int) $position ) { + $nav->edit_nav( array( 'position' => $position ), $slug, $parent_slug ); + } + } + + return true; +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..530fc85d87d4efbd5dfc2362bca1202ac6025cf0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/ajax.php @@ -0,0 +1,481 @@ +<?php +/** + * Groups Ajax functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +add_action( 'admin_init', function() { + $ajax_actions = array( + array( 'groups_filter' => array( 'function' => 'bp_nouveau_ajax_object_template_loader', 'nopriv' => true ) ), + array( 'groups_join_group' => array( 'function' => 'bp_nouveau_ajax_joinleave_group', 'nopriv' => false ) ), + array( 'groups_leave_group' => array( 'function' => 'bp_nouveau_ajax_joinleave_group', 'nopriv' => false ) ), + array( 'groups_accept_invite' => array( 'function' => 'bp_nouveau_ajax_joinleave_group', 'nopriv' => false ) ), + array( 'groups_reject_invite' => array( 'function' => 'bp_nouveau_ajax_joinleave_group', 'nopriv' => false ) ), + array( 'groups_request_membership' => array( 'function' => 'bp_nouveau_ajax_joinleave_group', 'nopriv' => false ) ), + array( 'groups_get_group_potential_invites' => array( 'function' => 'bp_nouveau_ajax_get_users_to_invite', 'nopriv' => false ) ), + array( 'groups_send_group_invites' => array( 'function' => 'bp_nouveau_ajax_send_group_invites', 'nopriv' => false ) ), + array( 'groups_delete_group_invite' => array( 'function' => 'bp_nouveau_ajax_remove_group_invite', 'nopriv' => false ) ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } +}, 12 ); + +/** + * Join or leave a group when clicking the "join/leave" button via a POST request. + * + * @since 3.0.0 + * + * @return string HTML + */ +function bp_nouveau_ajax_joinleave_group() { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'There was a problem performing this action. Please try again.', 'buddypress' ) + ), + ); + + // Bail if not a POST action. + if ( ! bp_is_post_request() || empty( $_POST['action'] ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['nonce'] ) || empty( $_POST['item_id'] ) || ! bp_is_active( 'groups' ) ) { + wp_send_json_error( $response ); + } + + // Use default nonce + $nonce = $_POST['nonce']; + $check = 'bp_nouveau_groups'; + + // Use a specific one for actions needed it + if ( ! empty( $_POST['_wpnonce'] ) && ! empty( $_POST['action'] ) ) { + $nonce = $_POST['_wpnonce']; + $check = $_POST['action']; + } + + // Nonce check! + if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $check ) ) { + wp_send_json_error( $response ); + } + + // Cast gid as integer. + $group_id = (int) $_POST['item_id']; + + $errors = array( + 'cannot' => sprintf( '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', esc_html__( 'You cannot join this group.', 'buddypress' ) ), + 'member' => sprintf( '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', esc_html__( 'You are already a member of the group.', 'buddypress' ) ), + ); + + if ( groups_is_user_banned( bp_loggedin_user_id(), $group_id ) ) { + $response['feedback'] = $errors['cannot']; + + wp_send_json_error( $response ); + } + + // Validate and get the group + $group = groups_get_group( array( 'group_id' => $group_id ) ); + + if ( empty( $group->id ) ) { + wp_send_json_error( $response ); + } + + // Manage all button's possible actions here. + switch ( $_POST['action'] ) { + + case 'groups_accept_invite': + if ( ! groups_accept_invite( bp_loggedin_user_id(), $group_id ) ) { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Group invitation could not be accepted.', 'buddypress' ) + ), + 'type' => 'error', + ); + + } else { + if ( bp_is_active( 'activity' ) ) { + groups_record_activity( + array( + 'type' => 'joined_group', + 'item_id' => $group->id, + ) + ); + } + + // User is now a member of the group + $group->is_member = '1'; + + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback success"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Group invite accepted.', 'buddypress' ) + ), + 'type' => 'success', + 'is_user' => bp_is_user(), + 'contents' => bp_get_group_join_button( $group ), + 'is_group' => bp_is_group(), + ); + } + break; + + case 'groups_reject_invite': + if ( ! groups_reject_invite( bp_loggedin_user_id(), $group_id ) ) { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Group invite could not be rejected', 'buddypress' ) + ), + 'type' => 'error', + ); + } else { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback success"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Group invite rejected', 'buddypress' ) + ), + 'type' => 'success', + 'is_user' => bp_is_user(), + ); + } + break; + + case 'groups_join_group': + if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { + $response = array( + 'feedback' => $errors['member'], + 'type' => 'error', + ); + } elseif ( 'public' !== $group->status ) { + $response = array( + 'feedback' => $errors['cannot'], + 'type' => 'error', + ); + } elseif ( ! groups_join_group( $group->id ) ) { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Error joining this group.', 'buddypress' ) + ), + 'type' => 'error', + ); + } else { + // User is now a member of the group + $group->is_member = '1'; + + $response = array( + 'contents' => bp_get_group_join_button( $group ), + 'is_group' => bp_is_group(), + 'type' => 'success', + ); + } + break; + + case 'groups_request_membership' : + if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Error requesting membership.', 'buddypress' ) + ), + 'type' => 'error', + ); + } else { + // Request is pending + $group->is_pending = '1'; + + $response = array( + 'contents' => bp_get_group_join_button( $group ), + 'is_group' => bp_is_group(), + 'type' => 'success', + ); + } + break; + + case 'groups_leave_group' : + if ( groups_leave_group( $group->id ) ) { + $response = array( + 'feedback' => sprintf( + '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>%s</p></div>', + esc_html__( 'Error leaving group.', 'buddypress' ) + ), + 'type' => 'error', + ); + } else { + // User is no more a member of the group + $group->is_member = '0'; + $bp = buddypress(); + + /** + * When inside the group or in the loggedin user's group memberships screen + * we need to reload the page. + */ + $bp_is_group = bp_is_group() || ( bp_is_user_groups() && bp_is_my_profile() ); + + $response = array( + 'contents' => bp_get_group_join_button( $group ), + 'is_group' => $bp_is_group, + 'type' => 'success', + ); + + // Reset the message if not in a Group or in a loggedin user's group memberships one! + if ( ! $bp_is_group && isset( $bp->template_message ) && isset( $bp->template_message_type ) ) { + unset( $bp->template_message, $bp->template_message_type ); + + @setcookie( 'bp-message', false, time() - 1000, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + @setcookie( 'bp-message-type', false, time() - 1000, COOKIEPATH, COOKIE_DOMAIN, is_ssl() ); + } + } + break; + } + + if ( 'error' === $response['type'] ) { + wp_send_json_error( $response ); + } + + wp_send_json_success( $response ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_get_users_to_invite() { + $bp = buddypress(); + + $response = array( + 'feedback' => __( 'There was a problem performing this action. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + if ( empty( $_POST['nonce'] ) ) { + wp_send_json_error( $response ); + } + + // Use default nonce + $nonce = $_POST['nonce']; + $check = 'bp_nouveau_groups'; + + // Use a specific one for actions needed it + if ( ! empty( $_POST['_wpnonce'] ) && ! empty( $_POST['action'] ) ) { + $nonce = $_POST['_wpnonce']; + $check = $_POST['action']; + } + + // Nonce check! + if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $check ) ) { + wp_send_json_error( $response ); + } + + $request = wp_parse_args( $_POST, array( + 'scope' => 'members', + ) ); + + $bp->groups->invites_scope = 'members'; + $message = __( 'Select members to invite by clicking the + button. Once you\'ve made your selection, use the "Send Invites" navigation item to continue.', 'buddypress' ); + + if ( 'friends' === $request['scope'] ) { + $request['user_id'] = bp_loggedin_user_id(); + $bp->groups->invites_scope = 'friends'; + $message = __( 'Select friends to invite by clicking the + button. Once you\'ve made your selection, use the "Send Invites" navigation item to continue.', 'buddypress' ); + } + + if ( 'invited' === $request['scope'] ) { + + if ( ! bp_group_has_invites( array( 'user_id' => 'any' ) ) ) { + wp_send_json_error( array( + 'feedback' => __( 'No pending group invitations found.', 'buddypress' ), + 'type' => 'info', + ) ); + } + + $request['is_confirmed'] = false; + $bp->groups->invites_scope = 'invited'; + $message = __( 'You can view the group\'s pending invitations from this screen.', 'buddypress' ); + } + + $potential_invites = bp_nouveau_get_group_potential_invites( $request ); + + if ( empty( $potential_invites->users ) ) { + $error = array( + 'feedback' => __( 'No members were found. Try another filter.', 'buddypress' ), + 'type' => 'info', + ); + + if ( 'friends' === $bp->groups->invites_scope ) { + $error = array( + 'feedback' => __( 'All your friends are already members of this group, or have already received an invite to join this group, or have requested to join it.', 'buddypress' ), + 'type' => 'info', + ); + + if ( 0 === (int) bp_get_total_friend_count( bp_loggedin_user_id() ) ) { + $error = array( + 'feedback' => __( 'You have no friends!', 'buddypress' ), + 'type' => 'info', + ); + } + } + + unset( $bp->groups->invites_scope ); + + wp_send_json_error( $error ); + } + + $potential_invites->users = array_map( 'bp_nouveau_prepare_group_potential_invites_for_js', array_values( $potential_invites->users ) ); + $potential_invites->users = array_filter( $potential_invites->users ); + + // Set a message to explain use of the current scope + $potential_invites->feedback = $message; + + unset( $bp->groups->invites_scope ); + + wp_send_json_success( $potential_invites ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_send_group_invites() { + $bp = buddypress(); + + $response = array( + 'feedback' => __( 'Invites could not be sent. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + // Verify nonce + if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'groups_send_invites' ) ) { + wp_send_json_error( $response ); + } + + $group_id = bp_get_current_group_id(); + + if ( bp_is_group_create() && ! empty( $_POST['group_id'] ) ) { + $group_id = (int) $_POST['group_id']; + } + + if ( ! bp_groups_user_can_send_invites( $group_id ) ) { + $response['feedback'] = __( 'You are not allowed to send invitations for this group.', 'buddypress' ); + wp_send_json_error( $response ); + } + + if ( empty( $_POST['users'] ) ) { + wp_send_json_error( $response ); + } + + // For feedback + $invited = array(); + + foreach ( (array) $_POST['users'] as $user_id ) { + $invited[ (int) $user_id ] = groups_invite_user( + array( + 'user_id' => $user_id, + 'group_id' => $group_id, + ) + ); + } + + 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( bp_loggedin_user_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 ); + + $error_count = count( $errors ); + $error_message = sprintf( + /* translators: count of users affected */ + _n( + 'Invitation failed for %s user.', + 'Invitation failed for %s users.', + $error_count, 'buddypress' + ), + number_format_i18n( $error_count ) + ); + + wp_send_json_error( + array( + 'feedback' => $error_message, + 'users' => $errors, + 'type' => 'error', + ) + ); + } + + wp_send_json_success( + array( + 'feedback' => __( 'Invitations sent.', 'buddypress' ), + 'type' => 'success', + ) + ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_remove_group_invite() { + $user_id = (int) $_POST['user']; + $group_id = bp_get_current_group_id(); + + // Verify nonce + if ( empty( $_POST['_wpnonce'] ) || ! wp_verify_nonce( $_POST['_wpnonce'], 'groups_invite_uninvite_user' ) ) { + wp_send_json_error( + array( + 'feedback' => __( 'Group invitation could not be removed.', 'buddypress' ), + 'type' => 'error', + ) + ); + } + + if ( BP_Groups_Member::check_for_membership_request( $user_id, $group_id ) ) { + wp_send_json_error( + array( + 'feedback' => __( 'The member is already a member of the group.', 'buddypress' ), + 'type' => 'warning', + 'code' => 1, + ) + ); + } + + // Remove the unsent invitation. + if ( ! groups_uninvite_user( $user_id, $group_id ) ) { + wp_send_json_error( + array( + 'feedback' => __( 'Group invitation could not be removed.', 'buddypress' ), + 'type' => 'error', + 'code' => 0, + ) + ); + } + + wp_send_json_success( + array( + 'feedback' => __( 'There are no more pending invitations for the group.', 'buddypress' ), + 'type' => 'info', + 'has_invites' => bp_group_has_invites( array( 'user_id' => 'any' ) ), + ) + ); +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..8ee2a45073a3b54ab0679ae53cd5153fe7cdc87c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/classes.php @@ -0,0 +1,357 @@ +<?php +/** + * Groups classes + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Query to get members that are not already members of the group + * + * @since 3.0.0 + */ +class BP_Nouveau_Group_Invite_Query extends BP_User_Query { + /** + * Array of group member ids, cached to prevent redundant lookups + * + * @var null|array Null if not yet defined, otherwise an array of ints + * @since 3.0.0 + */ + protected $group_member_ids; + + /** + * Set up action hooks + * + * @since 3.0.0 + */ + public function setup_hooks() { + add_action( 'bp_pre_user_query_construct', array( $this, 'build_exclude_args' ) ); + add_action( 'bp_pre_user_query', array( $this, 'build_meta_query' ) ); + } + + /** + * Exclude group members from the user query as it's not needed to invite members to join the group. + * + * @since 3.0.0 + */ + public function build_exclude_args() { + $this->query_vars = wp_parse_args( $this->query_vars, array( + 'group_id' => 0, + 'is_confirmed' => true, + ) ); + + $group_member_ids = $this->get_group_member_ids(); + + // We want to get users that are already members of the group + $type = 'exclude'; + + // We want to get invited users who did not confirmed yet + if ( false === $this->query_vars['is_confirmed'] ) { + $type = 'include'; + } + + if ( ! empty( $group_member_ids ) ) { + $this->query_vars[ $type ] = $group_member_ids; + } + } + + /** + * Get the members of the queried group + * + * @since 3.0.0 + * + * @return array $ids User IDs of relevant group member ids + */ + protected function get_group_member_ids() { + global $wpdb; + + if ( is_array( $this->group_member_ids ) ) { + return $this->group_member_ids; + } + + $bp = buddypress(); + $sql = array( + 'select' => "SELECT user_id FROM {$bp->groups->table_name_members}", + 'where' => array(), + 'orderby' => '', + 'order' => '', + 'limit' => '', + ); + + /** WHERE clauses *****************************************************/ + + // Group id + $sql['where'][] = $wpdb->prepare( 'group_id = %d', $this->query_vars['group_id'] ); + + if ( false === $this->query_vars['is_confirmed'] ) { + $sql['where'][] = $wpdb->prepare( 'is_confirmed = %d', (int) $this->query_vars['is_confirmed'] ); + $sql['where'][] = 'inviter_id != 0'; + } + + // Join the query part + $sql['where'] = ! empty( $sql['where'] ) ? 'WHERE ' . implode( ' AND ', $sql['where'] ) : ''; + + /** ORDER BY clause ***************************************************/ + $sql['orderby'] = 'ORDER BY date_modified'; + $sql['order'] = 'DESC'; + + /** LIMIT clause ******************************************************/ + $this->group_member_ids = $wpdb->get_col( "{$sql['select']} {$sql['where']} {$sql['orderby']} {$sql['order']} {$sql['limit']}" ); + + return $this->group_member_ids; + } + + /** + * @since 3.0.0 + */ + public function build_meta_query( BP_User_Query $bp_user_query ) { + if ( isset( $this->query_vars['scope'] ) && 'members' === $this->query_vars['scope'] && isset( $this->query_vars['meta_query'] ) ) { + + $invites_meta_query = new WP_Meta_Query( $this->query_vars['meta_query'] ); + $meta_sql = $invites_meta_query->get_sql( 'user', 'u', 'ID' ); + + if ( empty( $meta_sql['join'] ) || empty( $meta_sql['where'] ) ) { + return; + } + + $bp_user_query->uid_clauses['select'] .= ' ' . $meta_sql['join']; + $bp_user_query->uid_clauses['where'] .= ' ' . $meta_sql['where']; + } + } + + /** + * @since 3.0.0 + */ + public static function get_inviter_ids( $user_id = 0, $group_id = 0 ) { + global $wpdb; + + if ( empty( $group_id ) || empty( $user_id ) ) { + return array(); + } + + $bp = buddypress(); + + return $wpdb->get_col( $wpdb->prepare( "SELECT inviter_id FROM {$bp->groups->table_name_members} WHERE user_id = %d AND group_id = %d", $user_id, $group_id ) ); + } +} + +/** + * A specific Group Nav class to make it possible to set new positions for + * buddypress()->groups->nav. + * + * @since 3.0.0 + */ +class BP_Nouveau_Customizer_Group_Nav extends BP_Core_Nav { + /** + * Constructor + * + * @param int $object_id Optional. The random group ID used to generate the nav. + */ + public function __construct( $object_id = 0 ) { + $error = new WP_Error( 'missing_parameter' ); + + if ( empty( $object_id ) || ! bp_current_user_can( 'bp_moderate' ) || ! did_action( 'admin_init' ) ) { + return $error; + } + + $group = groups_get_group( array( 'group_id' => $object_id ) ); + if ( empty( $group->id ) ) { + return $error; + } + + $this->group = $group; + + parent::__construct( $group->id ); + $this->setup_nav(); + } + + /** + * Checks whether a property is set. + * + * Overrides BP_Core_Nav::__isset() to avoid looking into its nav property. + * + * @since 3.0.0 + * + * @param string $key The property. + * + * @return bool True if the property is set, false otherwise. + */ + public function __isset( $key ) { + return isset( $this->{$key} ); + } + + /** + * Gets a property. + * + * Overrides BP_Core_Nav::__isset() to avoid looking into its nav property. + * + * @since 3.0.0 + * + * @param string $key The property. + * + * @return mixed The value corresponding to the property. + */ + public function __get( $key ) { + if ( ! isset( $this->{$key} ) ) { + $this->{$key} = null; + } + + return $this->{$key}; + } + + /** + * Sets a property. + * + * Overrides BP_Core_Nav::__isset() to avoid adding a value to its nav property. + * + * @since 3.0.0 + * + * @param string $key The property. + * + * @param mixed $value The value of the property. + */ + public function __set( $key, $value ) { + $this->{$key} = $value; + } + + /** + * Setup a temporary nav with only the needed parameters. + * + * @since 3.0.0 + */ + protected function setup_nav() { + $nav_items = array( + 'root' => array( + 'name' => __( 'Memberships', 'buddypress' ), + 'slug' => $this->group->slug, + 'position' => -1, + /** This filter is documented in bp-groups/classes/class-bp-groups-component.php. */ + 'default_subnav_slug' => apply_filters( 'bp_groups_default_extension', defined( 'BP_GROUPS_DEFAULT_EXTENSION' ) ? BP_GROUPS_DEFAULT_EXTENSION : 'home' ), + ), + 'home' => array( + 'name' => _x( 'Home', 'Group screen navigation title', 'buddypress' ), + 'slug' => 'home', + 'parent_slug' => $this->group->slug, + 'position' => 10, + ), + 'invites' => array( + 'name' => _x( 'Invite', 'My Group screen nav', 'buddypress' ), + 'slug' => 'send-invites', + 'parent_slug' => $this->group->slug, + 'position' => 70, + ), + 'manage' => array( + 'name' => _x( 'Manage', 'My Group screen nav', 'buddypress' ), + 'slug' => 'admin', + 'parent_slug' => $this->group->slug, + 'position' => 1000, + ), + ); + + // Make sure only global front.php will be checked. + add_filter( '_bp_nouveau_group_reset_front_template', array( $this, 'all_groups_fronts' ), 10, 1 ); + + $front_template = bp_groups_get_front_template( $this->group ); + + remove_filter( '_bp_nouveau_group_reset_front_template', array( $this, 'all_groups_fronts' ), 10, 1 ); + + if ( ! $front_template ) { + if ( bp_is_active( 'activity' ) ) { + $nav_items['home']['name'] = _x( 'Home (Activity)', 'Group screen navigation title', 'buddypress' ); + } else { + $nav_items['home']['name'] = _x( 'Home (Members)', 'Group screen navigation title', 'buddypress' ); + } + } else { + if ( bp_is_active( 'activity' ) ) { + $nav_items['activity'] = array( + 'name' => _x( 'Activity', 'My Group screen nav', 'buddypress' ), + 'slug' => 'activity', + 'parent_slug' => $this->group->slug, + 'position' => 11, + ); + } + + // Add the members one + $nav_items['members'] = array( + 'name' => _x( 'Members', 'My Group screen nav', 'buddypress' ), + 'slug' => 'members', + 'parent_slug' => $this->group->slug, + 'position' => 60, + ); + } + + // Required params + $required_params = array( + 'slug' => true, + 'name' => true, + 'nav_item_position' => true, + ); + + // Now find nav items plugins are creating within their Group extensions! + foreach ( get_declared_classes() as $class ) { + if ( is_subclass_of( $class, 'BP_Group_Extension' ) ) { + $extension = new $class; + + if ( ! empty( $extension->params ) && ! array_diff_key( $required_params, $extension->params ) ) { + $nav_items[ $extension->params['slug'] ] = array( + 'name' => $extension->params['name'], + 'slug' => $extension->params['slug'], + 'parent_slug' => $this->group->slug, + 'position' => $extension->params['nav_item_position'], + ); + } + } + } + + // Now we got all, create the temporary nav. + foreach ( $nav_items as $nav_item ) { + $this->add_nav( $nav_item ); + } + } + + /** + * Front template: do not look into group's template hierarchy. + * + * @since 3.0.0 + * + * @param array $templates The list of possible group front templates. + * + * @return array The list of "global" group front templates. + */ + public function all_groups_fronts( $templates = array() ) { + return array_intersect( array( + 'groups/single/front.php', + 'groups/single/default-front.php', + ), $templates ); + } + + /** + * Get the original order for the group navigation. + * + * @since 3.0.0 + * + * @return array a list of nav items slugs ordered. + */ + public function get_default_value() { + $default_nav = $this->get_secondary( array( 'parent_slug' => $this->group->slug ) ); + return wp_list_pluck( $default_nav, 'slug' ); + } + + /** + * Get the list of nav items ordered according to the Site owner preferences. + * + * @since 3.0.0 + * + * @return array the nav items ordered. + */ + public function get_group_nav() { + // Eventually reset the order + bp_nouveau_set_nav_item_order( $this, bp_nouveau_get_appearance_settings( 'group_nav_order' ), $this->group->slug ); + + return $this->get_secondary( array( 'parent_slug' => $this->group->slug ) ); + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..38cc62a08536c02259015f692f7afa308b79e992 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/functions.php @@ -0,0 +1,1217 @@ +<?php +/** + * Groups functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Provide a convenience function to add markup wrapper for message strings + * + * @param string $message The message text string + * @param string $type The message type - 'error, 'info', 'warning', success' + * + * @return string + * + * @since 3.0 + */ +function bp_nouveau_message_markup_wrapper( $message, $type ) { + if ( ! $message ) { + return false; + } + + $message = '<div class=" ' . esc_attr( "bp-feedback {$type}" ) . '"><span class="bp-icon" aria-hidden="true"></span><p>' . esc_html( $message ) . '</p></div>'; + + return $message; +} + +/** + * Register Scripts for the Groups component + * + * @since 3.0.0 + * + * @param array $scripts Optional. The array of scripts to register. + * + * @return array The same array with the specific groups scripts. + */ +function bp_nouveau_groups_register_scripts( $scripts = array() ) { + if ( ! isset( $scripts['bp-nouveau'] ) ) { + return $scripts; + } + + return array_merge( $scripts, array( + 'bp-nouveau-group-invites' => array( + 'file' => 'js/buddypress-group-invites%s.js', + 'dependencies' => array( 'bp-nouveau', 'json2', 'wp-backbone' ), + 'footer' => true, + ), + ) ); +} + +/** + * Enqueue the groups scripts + * + * @since 3.0.0 + */ +function bp_nouveau_groups_enqueue_scripts() { + // Neutralize Ajax when using BuddyPress Groups & member widgets on default front page + if ( bp_is_group_home() && bp_nouveau_get_appearance_settings( 'group_front_page' ) ) { + wp_add_inline_style( 'bp-nouveau', ' + #group-front-widgets #groups-list-options, + #group-front-widgets #members-list-options { + display: none; + } + ' ); + } + + if ( ! bp_is_group_invites() && ! ( bp_is_group_create() && bp_is_group_creation_step( 'group-invites' ) ) ) { + return; + } + + wp_enqueue_script( 'bp-nouveau-group-invites' ); +} + +/** + * Can all members be invited to join any group? + * + * @since 3.0.0 + * + * @param bool $default False to allow. True to disallow. + * + * @return bool + */ +function bp_nouveau_groups_disallow_all_members_invites( $default = false ) { + /** + * Filter to remove the All members nav, returning true + * + * @since 3.0.0 + * + * @param bool $default True to disable the nav. False otherwise. + */ + return apply_filters( 'bp_nouveau_groups_disallow_all_members_invites', $default ); +} + +/** + * Localize the strings needed for the Group's Invite UI + * + * @since 3.0.0 + * + * @param array $params Associative array containing the JS Strings needed by scripts + * + * @return array The same array with specific strings for the Group's Invite UI if needed. + */ +function bp_nouveau_groups_localize_scripts( $params = array() ) { + if ( ! bp_is_group_invites() && ! ( bp_is_group_create() && bp_is_group_creation_step( 'group-invites' ) ) ) { + return $params; + } + + $show_pending = bp_group_has_invites( array( 'user_id' => 'any' ) ) && ! bp_is_group_create(); + + // Init the Group invites nav + $invites_nav = array( + 'members' => array( + 'id' => 'members', + 'caption' => __( 'All Members', 'buddypress' ), + 'order' => 5, + ), + 'invited' => array( + 'id' => 'invited', + 'caption' => __( 'Pending Invites', 'buddypress' ), + 'order' => 90, + 'hide' => (int) ! $show_pending, + ), + 'invites' => array( + 'id' => 'invites', + 'caption' => __( 'Send Invites', 'buddypress' ), + 'order' => 100, + 'hide' => 1, + 'href' => '#send-invites-editor', + ), + ); + + if ( bp_is_active( 'friends' ) ) { + $invites_nav['friends'] = array( + 'id' => 'friends', + 'caption' => __( 'My Friends', 'buddypress' ), + 'order' => 0, + ); + + if ( true === bp_nouveau_groups_disallow_all_members_invites() ) { + unset( $invites_nav['members'] ); + } + } + + $params['group_invites'] = array( + 'nav' => bp_sort_by_key( $invites_nav, 'order', 'num' ), + 'loading' => __( 'Loading members. Please wait.', 'buddypress' ), + 'invites_form' => __( 'Use the "Send" button to send your invite or the "Cancel" button to abort.', 'buddypress' ), + 'invites_form_reset' => __( 'Group invitations cleared. Please use one of the available tabs to select members to invite.', 'buddypress' ), + 'invites_sending' => __( 'Sending group invitations. Please wait.', 'buddypress' ), + 'removeUserInvite' => __( 'Cancel invitation %s', 'buddypress' ), + 'group_id' => ! bp_get_current_group_id() ? bp_get_new_group_id() : bp_get_current_group_id(), + 'is_group_create' => bp_is_group_create(), + 'nonces' => array( + 'uninvite' => wp_create_nonce( 'groups_invite_uninvite_user' ), + 'send_invites' => wp_create_nonce( 'groups_send_invites' ) + ), + ); + + return $params; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_groups_get_inviter_ids( $user_id, $group_id ) { + if ( empty( $user_id ) || empty( $group_id ) ) { + return false; + } + + return BP_Nouveau_Group_Invite_Query::get_inviter_ids( $user_id, $group_id ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_prepare_group_potential_invites_for_js( $user ) { + $bp = buddypress(); + + $response = array( + 'id' => intval( $user->ID ), + 'name' => $user->display_name, + 'avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => $user->ID, + 'object' => 'user', + 'type' => 'thumb', + 'width' => 50, + 'height' => 50, + 'html' => false ) + ) ), + ); + + // Do extra queries only if needed + if ( ! empty( $bp->groups->invites_scope ) && 'invited' === $bp->groups->invites_scope ) { + $response['is_sent'] = (bool) groups_check_user_has_invite( $user->ID, bp_get_current_group_id() ); + + $inviter_ids = bp_nouveau_groups_get_inviter_ids( $user->ID, bp_get_current_group_id() ); + + foreach ( $inviter_ids as $inviter_id ) { + $class = false; + + if ( bp_loggedin_user_id() === (int) $inviter_id ) { + $class = 'group-self-inviter'; + } + + $response['invited_by'][] = array( + 'avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => $inviter_id, + 'object' => 'user', + 'type' => 'thumb', + 'width' => 50, + 'height' => 50, + 'html' => false, + 'class' => $class, + ) ) ), + 'user_link' => bp_core_get_userlink( $inviter_id, false, true ), + 'user_name' => bp_core_get_username( $inviter_id ), + ); + } + + if ( bp_is_item_admin() ) { + $response['can_edit'] = true; + } else { + $response['can_edit'] = in_array( bp_loggedin_user_id(), $inviter_ids ); + } + } + + /** + * Filters the response value for potential group invite data for use with javascript. + * + * @since 3.0.0 + * + * @param array $response Array of invite data. + * @param WP_User $user User object. + */ + return apply_filters( 'bp_nouveau_prepare_group_potential_invites_for_js', $response, $user ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_get_group_potential_invites( $args = array() ) { + $r = bp_parse_args( $args, array( + 'group_id' => bp_get_current_group_id(), + 'type' => 'alphabetical', + 'per_page' => 20, + 'page' => 1, + 'search_terms' => false, + 'member_type' => false, + 'user_id' => 0, + 'is_confirmed' => true, + ) ); + + if ( empty( $r['group_id'] ) ) { + return false; + } + + /* + * If it's not a friend request and users can restrict invites to friends, + * make sure they are not displayed in results. + */ + if ( ! $r['user_id'] && bp_is_active( 'friends' ) && bp_is_active( 'settings' ) && ! bp_nouveau_groups_disallow_all_members_invites() ) { + $r['meta_query'] = array( + array( + 'key' => '_bp_nouveau_restrict_invites_to_friends', + 'compare' => 'NOT EXISTS', + ), + ); + } + + $query = new BP_Nouveau_Group_Invite_Query( $r ); + + $response = new stdClass(); + + $response->meta = array( 'total_page' => 0, 'current_page' => 0 ); + $response->users = array(); + + if ( ! empty( $query->results ) ) { + $response->users = $query->results; + + if ( ! empty( $r['per_page'] ) ) { + $response->meta = array( + 'total_page' => ceil( (int) $query->total_users / (int) $r['per_page'] ), + 'page' => (int) $r['page'], + ); + } + } + + return $response; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_group_invites_create_steps( $steps = array() ) { + if ( bp_is_active( 'friends' ) && isset( $steps['group-invites'] ) ) { + // Simply change the name + $steps['group-invites']['name'] = _x( 'Invite', 'Group invitations menu title', 'buddypress' ); + return $steps; + } + + // Add the create step if friends component is not active + $steps['group-invites'] = array( + 'name' => _x( 'Invite', 'Group invitations menu title', 'buddypress' ), + 'position' => 30, + ); + + return $steps; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_group_setup_nav() { + if ( ! bp_is_group() || ! bp_groups_user_can_send_invites() ) { + return; + } + + // Simply change the name + if ( bp_is_active( 'friends' ) ) { + $bp = buddypress(); + + $bp->groups->nav->edit_nav( + array( 'name' => _x( 'Invite', 'Group invitations menu title', 'buddypress' ) ), + 'send-invites', + bp_get_current_group_slug() + ); + + // Create the Subnav item for the group + } else { + $current_group = groups_get_current_group(); + $group_link = bp_get_group_permalink( $current_group ); + + bp_core_new_subnav_item( array( + 'name' => _x( 'Invite', 'Group invitations menu title', 'buddypress' ), + 'slug' => 'send-invites', + 'parent_url' => $group_link, + 'parent_slug' => $current_group->slug, + 'screen_function' => 'groups_screen_group_invite', + 'item_css_id' => 'invite', + 'position' => 70, + 'user_has_access' => $current_group->user_has_access, + 'no_access_url' => $group_link, + ) ); + } +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_groups_invites_custom_message( $message = '' ) { + if ( empty( $message ) ) { + return $message; + } + + $bp = buddypress(); + + if ( empty( $bp->groups->invites_message ) ) { + return $message; + } + + $message = str_replace( '---------------------', " +---------------------\n +" . $bp->groups->invites_message . "\n +--------------------- + ", $message ); + + return $message; +} + +/** + * Format a Group for a json reply + * + * @since 3.0.0 + */ +function bp_nouveau_prepare_group_for_js( $item ) { + if ( empty( $item->id ) ) { + return array(); + } + + $item_avatar_url = bp_core_fetch_avatar( array( + 'item_id' => $item->id, + 'object' => 'group', + 'type' => 'thumb', + 'html' => false + ) ); + + return array( + 'id' => $item->id, + 'name' => $item->name, + 'avatar_url' => $item_avatar_url, + 'object_type' => 'group', + 'is_public' => ( 'public' === $item->status ), + ); +} + +/** + * Group invites restriction settings navigation. + * + * @since 3.0.0 + */ +function bp_nouveau_groups_invites_restriction_nav() { + $slug = bp_get_settings_slug(); + $user_domain = bp_loggedin_user_domain(); + + if ( bp_displayed_user_domain() ) { + $user_domain = bp_displayed_user_domain(); + } + + bp_core_new_subnav_item( array( + 'name' => _x( 'Group Invites', 'Group invitations main menu title', 'buddypress' ), + 'slug' => 'invites', + 'parent_url' => trailingslashit( $user_domain . $slug ), + 'parent_slug' => $slug, + 'screen_function' => 'bp_nouveau_groups_screen_invites_restriction', + 'item_css_id' => 'invites', + 'position' => 70, + 'user_has_access' => bp_core_can_edit_settings(), + ), 'members' ); +} + +/** + * Group invites restriction settings Admin Bar navigation. + * + * @since 3.0.0 + * + * @param array $wp_admin_nav The list of settings admin subnav items. + * + * @return array The list of settings admin subnav items. + */ +function bp_nouveau_groups_invites_restriction_admin_nav( $wp_admin_nav ) { + // Setup the logged in user variables. + $settings_link = trailingslashit( bp_loggedin_user_domain() . bp_get_settings_slug() ); + + // Add the "Group Invites" subnav item. + $wp_admin_nav[] = array( + 'parent' => 'my-account-' . buddypress()->settings->id, + 'id' => 'my-account-' . buddypress()->settings->id . '-invites', + 'title' => _x( 'Group Invites', 'Group invitations main menu title', 'buddypress' ), + 'href' => trailingslashit( $settings_link . 'invites/' ), + ); + + return $wp_admin_nav; +} + +/** + * Group invites restriction screen. + * + * @since 3.0.0 + */ +function bp_nouveau_groups_screen_invites_restriction() { + // Redirect if no invites restriction settings page is accessible. + if ( 'invites' !== bp_current_action() || ! bp_is_active( 'friends' ) ) { + bp_do_404(); + return; + } + + if ( isset( $_POST['member-group-invites-submit'] ) ) { + // Nonce check. + check_admin_referer( 'bp_nouveau_group_invites_settings' ); + + if ( bp_is_my_profile() || bp_current_user_can( 'bp_moderate' ) ) { + if ( empty( $_POST['account-group-invites-preferences'] ) ) { + bp_delete_user_meta( bp_displayed_user_id(), '_bp_nouveau_restrict_invites_to_friends' ); + } else { + bp_update_user_meta( bp_displayed_user_id(), '_bp_nouveau_restrict_invites_to_friends', (int) $_POST['account-group-invites-preferences'] ); + } + + bp_core_add_message( __( 'Group invites preferences saved.', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'You are not allowed to perform this action.', 'buddypress' ), 'error' ); + } + + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_settings_slug() ) . 'invites/' ); + } + + /** + * Filters the template to load for the Group Invites settings screen. + * + * @since 3.0.0 + * + * @param string $template Path to the Group Invites settings screen template to load. + */ + bp_core_load_template( apply_filters( 'bp_nouveau_groups_screen_invites_restriction', 'members/single/settings/group-invites' ) ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_get_groups_directory_nav_items() { + $nav_items = array(); + + $nav_items['all'] = array( + 'component' => 'groups', + 'slug' => 'all', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'selected' ), + 'link' => bp_get_groups_directory_permalink(), + 'text' => __( 'All Groups', 'buddypress' ), + 'count' => bp_get_total_group_count(), + 'position' => 5, + ); + + if ( is_user_logged_in() ) { + + $my_groups_count = bp_get_total_group_count_for_user( bp_loggedin_user_id() ); + + // If the user has groups create a nav item + if ( $my_groups_count ) { + $nav_items['personal'] = array( + 'component' => 'groups', + 'slug' => 'personal', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array(), + 'link' => bp_loggedin_user_domain() . bp_get_groups_slug() . '/my-groups/', + 'text' => __( 'My Groups', 'buddypress' ), + 'count' => $my_groups_count, + 'position' => 15, + ); + } + + // If the user can create groups, add the create nav + if ( bp_user_can_create_groups() ) { + $nav_items['create'] = array( + 'component' => 'groups', + 'slug' => 'create', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array( 'no-ajax', 'group-create', 'create-button' ), + 'link' => trailingslashit( bp_get_groups_directory_permalink() . 'create' ), + 'text' => __( 'Create a Group', 'buddypress' ), + 'count' => false, + 'position' => 999, + ); + } + } + + // Check for the deprecated hook : + $extra_nav_items = bp_nouveau_parse_hooked_dir_nav( 'bp_groups_directory_group_filter', 'groups', 20 ); + + if ( ! empty( $extra_nav_items ) ) { + $nav_items = array_merge( $nav_items, $extra_nav_items ); + } + + /** + * Use this filter to introduce your custom nav items for the groups directory. + * + * @since 3.0.0 + * + * @param array $nav_items The list of the groups directory nav items. + */ + return apply_filters( 'bp_nouveau_get_groups_directory_nav_items', $nav_items ); +} + +/** + * Get Dropdown filters for the groups component + * + * @since 3.0.0 + * + * @param string $context 'directory' or 'user' + * + * @return array the filters + */ +function bp_nouveau_get_groups_filters( $context = '' ) { + if ( empty( $context ) ) { + return array(); + } + + $action = ''; + if ( 'user' === $context ) { + $action = 'bp_member_group_order_options'; + } elseif ( 'directory' === $context ) { + $action = 'bp_groups_directory_order_options'; + } + + /** + * Recommended, filter here instead of adding an action to 'bp_member_group_order_options' + * or 'bp_groups_directory_order_options' + * + * @since 3.0.0 + * + * @param array the members filters. + * @param string the context. + */ + $filters = apply_filters( 'bp_nouveau_get_groups_filters', array( + 'active' => __( 'Last Active', 'buddypress' ), + 'popular' => __( 'Most Members', 'buddypress' ), + 'newest' => __( 'Newly Created', 'buddypress' ), + 'alphabetical' => __( 'Alphabetical', 'buddypress' ), + ), $context ); + + if ( $action ) { + return bp_nouveau_parse_hooked_options( $action, $filters ); + } + + return $filters; +} + +/** + * Catch the arguments for buttons + * + * @since 3.0.0 + * + * @param array $button The arguments of the button that BuddyPress is about to create. + * + * @return array An empty array to stop the button creation process. + */ +function bp_nouveau_groups_catch_button_args( $button = array() ) { + /** + * Globalize the arguments so that we can use it + * in bp_nouveau_get_groups_buttons(). + */ + bp_nouveau()->groups->button_args = $button; + + // return an empty array to stop the button creation process + return array(); +} + +/** + * Catch the content hooked to the 'bp_group_header_meta' action + * + * @since 3.0.0 + * + * @return string|bool HTML Output if hooked. False otherwise. + */ +function bp_nouveau_get_hooked_group_meta() { + ob_start(); + + /** + * Fires after inside the group header item meta section. + * + * @since 1.2.0 + */ + do_action( 'bp_group_header_meta' ); + + $output = ob_get_clean(); + + if ( ! empty( $output ) ) { + return $output; + } + + return false; +} + +/** + * Display the Widgets of Group extensions into the default front page? + * + * @since 3.0.0 + * + * @return bool True to display. False otherwise. + */ +function bp_nouveau_groups_do_group_boxes() { + $group_settings = bp_nouveau_get_appearance_settings(); + + return ! empty( $group_settings['group_front_page'] ) && ! empty( $group_settings['group_front_boxes'] ); +} + +/** + * Display description of the Group into the default front page? + * + * @since 3.0.0 + * + * @return bool True to display. False otherwise. + */ +function bp_nouveau_groups_front_page_description() { + $group_settings = bp_nouveau_get_appearance_settings(); + + // This check is a problem it needs to be used in templates but returns true even if not on the front page + // return false on this if we are not displaying the front page 'bp_is_group_home()' + // This may well be a bad approach to re-think ~hnla. + // @todo + return ! empty( $group_settings['group_front_page'] ) && ! empty( $group_settings['group_front_description'] ) && bp_is_group_home(); +} + +/** + * Add sections to the customizer for the groups component. + * + * @since 3.0.0 + * + * @param array $sections the Customizer sections to add. + * + * @return array the Customizer sections to add. + */ +function bp_nouveau_groups_customizer_sections( $sections = array() ) { + return array_merge( $sections, array( + 'bp_nouveau_group_front_page' => array( + 'title' => __( 'Group front page', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 20, + 'description' => __( 'Configure the default front page for groups.', 'buddypress' ), + ), + 'bp_nouveau_group_primary_nav' => array( + 'title' => __( 'Group navigation', 'buddypress' ), + 'panel' => 'bp_nouveau_panel', + 'priority' => 40, + 'description' => __( 'Customize the navigation menu for groups. See your changes by navigating to a group in the live-preview window.', 'buddypress' ), + ), + ) ); +} + +/** + * Add settings to the customizer for the groups component. + * + * @since 3.0.0 + * + * @param array $settings Optional. The settings to add. + * + * @return array the settings to add. + */ +function bp_nouveau_groups_customizer_settings( $settings = array() ) { + return array_merge( $settings, array( + 'bp_nouveau_appearance[group_front_page]' => array( + 'index' => 'group_front_page', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_front_boxes]' => array( + 'index' => 'group_front_boxes', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_front_description]' => array( + 'index' => 'group_front_description', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_nav_display]' => array( + 'index' => 'group_nav_display', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_nav_tabs]' => array( + 'index' => 'group_nav_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_subnav_tabs]' => array( + 'index' => 'group_subnav_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[groups_create_tabs]' => array( + 'index' => 'groups_create_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[group_nav_order]' => array( + 'index' => 'group_nav_order', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'bp_nouveau_sanitize_nav_order', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[groups_layout]' => array( + 'index' => 'groups_layout', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + 'bp_nouveau_appearance[groups_dir_tabs]' => array( + 'index' => 'groups_dir_tabs', + 'capability' => 'bp_moderate', + 'sanitize_callback' => 'absint', + 'transport' => 'refresh', + 'type' => 'option', + ), + ) ); +} + +/** + * Add controls for the settings of the customizer for the groups component. + * + * @since 3.0.0 + * + * @param array $controls Optional. The controls to add. + * + * @return array the controls to add. + */ +function bp_nouveau_groups_customizer_controls( $controls = array() ) { + return array_merge( $controls, array( + 'group_front_page' => array( + 'label' => __( 'Enable custom front pages for groups.', 'buddypress' ), + 'section' => 'bp_nouveau_group_front_page', + 'settings' => 'bp_nouveau_appearance[group_front_page]', + 'type' => 'checkbox', + ), + 'group_front_boxes' => array( + 'label' => __( 'Enable widget region for group homepages. When enabled, the site admin can add widgets to group pages via the Widgets panel.', 'buddypress' ), + 'section' => 'bp_nouveau_group_front_page', + 'settings' => 'bp_nouveau_appearance[group_front_boxes]', + 'type' => 'checkbox', + ), + 'group_front_description' => array( + 'label' => __( "Display the group description in the body of the group's front page.", 'buddypress' ), + 'section' => 'bp_nouveau_group_front_page', + 'settings' => 'bp_nouveau_appearance[group_front_description]', + 'type' => 'checkbox', + ), + 'group_nav_display' => array( + 'label' => __( 'Display the group navigation vertically.', 'buddypress' ), + 'section' => 'bp_nouveau_group_primary_nav', + 'settings' => 'bp_nouveau_appearance[group_nav_display]', + 'type' => 'checkbox', + ), + 'group_nav_tabs' => array( + 'label' => __( 'Use tab styling for primary navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_group_primary_nav', + 'settings' => 'bp_nouveau_appearance[group_nav_tabs]', + 'type' => 'checkbox', + ), + 'group_subnav_tabs' => array( + 'label' => __( 'Use tab styling for secondary navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_group_primary_nav', + 'settings' => 'bp_nouveau_appearance[group_subnav_tabs]', + 'type' => 'checkbox', + ), + 'groups_create_tabs' => array( + 'label' => __( 'Use tab styling for the group creation process.', 'buddypress' ), + 'section' => 'bp_nouveau_group_primary_nav', + 'settings' => 'bp_nouveau_appearance[groups_create_tabs]', + 'type' => 'checkbox', + ), + 'group_nav_order' => array( + 'class' => 'BP_Nouveau_Nav_Customize_Control', + 'label' => __( 'Reorder the primary navigation for a group.', 'buddypress' ), + 'section' => 'bp_nouveau_group_primary_nav', + 'settings' => 'bp_nouveau_appearance[group_nav_order]', + 'type' => 'group', + ), + 'groups_layout' => array( + 'label' => _x( 'Groups', 'Customizer control label', 'buddypress' ), + 'section' => 'bp_nouveau_loops_layout', + 'settings' => 'bp_nouveau_appearance[groups_layout]', + 'type' => 'select', + 'choices' => bp_nouveau_customizer_grid_choices(), + ), + 'members_group_layout' => array( + 'label' => __( 'Group > Members', 'buddypress' ), + 'section' => 'bp_nouveau_loops_layout', + 'settings' => 'bp_nouveau_appearance[members_group_layout]', + 'type' => 'select', + 'choices' => bp_nouveau_customizer_grid_choices(), + ), + 'group_dir_layout' => array( + 'label' => __( 'Use column navigation for the Groups directory.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[groups_dir_layout]', + 'type' => 'checkbox', + ), + 'group_dir_tabs' => array( + 'label' => __( 'Use tab styling for Groups directory navigation.', 'buddypress' ), + 'section' => 'bp_nouveau_dir_layout', + 'settings' => 'bp_nouveau_appearance[groups_dir_tabs]', + 'type' => 'checkbox', + ), + ) ); +} + +/** + * Add the default group front template to the front template hierarchy. + * + * @since 3.0.0 + * + * @param array $templates Optional. The list of templates for the front.php template part. + * @param BP_Groups_Group $group Optional. The group object. + * + * @return array The same list with the default front template if needed. + */ +function bp_nouveau_group_reset_front_template( $templates = array(), $group = null ) { + if ( empty( $group->id ) ) { + return $templates; + } + + $use_default_front = bp_nouveau_get_appearance_settings( 'group_front_page' ); + + // Setting the front template happens too early, so we need this! + if ( is_customize_preview() ) { + $use_default_front = bp_nouveau_get_temporary_setting( 'group_front_page', $use_default_front ); + } + + if ( ! empty( $use_default_front ) ) { + array_push( $templates, 'groups/single/default-front.php' ); + } + + /** + * Filters the BuddyPress Nouveau template hierarchy after resetting front template for groups. + * + * @since 3.0.0 + * + * @param array $templates Array of templates. + */ + return apply_filters( '_bp_nouveau_group_reset_front_template', $templates ); +} + +/** + * Locate a single group template into a specific hierarchy. + * + * @since 3.0.0 + * + * @param string $template Optional. The template part to get (eg: activity, members...). + * + * @return string The located template. + */ +function bp_nouveau_group_locate_template_part( $template = '' ) { + $current_group = groups_get_current_group(); + $bp_nouveau = bp_nouveau(); + + if ( ! $template || empty( $current_group->id ) ) { + return ''; + } + + // Use a global to avoid requesting the hierarchy for each template + if ( ! isset( $bp_nouveau->groups->current_group_hierarchy ) ) { + $bp_nouveau->groups->current_group_hierarchy = array( + 'groups/single/%s-id-' . sanitize_file_name( $current_group->id ) . '.php', + 'groups/single/%s-slug-' . sanitize_file_name( $current_group->slug ) . '.php', + ); + + /** + * Check for group types and add it to the hierarchy + */ + if ( bp_groups_get_group_types() ) { + $current_group_type = bp_groups_get_group_type( $current_group->id ); + if ( ! $current_group_type ) { + $current_group_type = 'none'; + } + + $bp_nouveau->groups->current_group_hierarchy[] = 'groups/single/%s-group-type-' . sanitize_file_name( $current_group_type ) . '.php'; + } + + $bp_nouveau->groups->current_group_hierarchy = array_merge( $bp_nouveau->groups->current_group_hierarchy, array( + 'groups/single/%s-status-' . sanitize_file_name( $current_group->status ) . '.php', + 'groups/single/%s.php' + ) ); + } + + // Init the templates + $templates = array(); + + // Loop in the hierarchy to fill it for the requested template part + foreach ( $bp_nouveau->groups->current_group_hierarchy as $part ) { + $templates[] = sprintf( $part, sanitize_file_name( $template ) ); + } + + /** + * Filters the found template parts for the group template part locating functionality. + * + * @since 3.0.0 + * + * @param array $templates Array of found templates. + */ + return bp_locate_template( apply_filters( 'bp_nouveau_group_locate_template_part', $templates ), false, true ); +} + +/** + * Load a single group template part + * + * @since 3.0.0 + * + * @param string $template Optional. The template part to get (eg: activity, members...). + * + * @return string HTML output. + */ +function bp_nouveau_group_get_template_part( $template = '' ) { + $located = bp_nouveau_group_locate_template_part( $template ); + + if ( false !== $located ) { + $slug = str_replace( '.php', '', $located ); + $name = null; + + /** + * Let plugins adding an action to bp_get_template_part get it from here. + * + * This is a variable hook that is dependent on the template part slug. + * + * @since 3.0.0 + * + * @param string $slug Template part slug requested. + * @param string $name Template part name requested. + */ + do_action( 'get_template_part_' . $slug, $slug, $name ); + + load_template( $located, true ); + } + + return $located; +} + +/** + * Are we inside the Current group's default front page sidebar? + * + * @since 3.0.0 + * + * @return bool True if in the group's home sidebar. False otherwise. + */ +function bp_nouveau_group_is_home_widgets() { + return ( true === bp_nouveau()->groups->is_group_home_sidebar ); +} + +/** + * Filter the Latest activities Widget to only keep the one of the group displayed + * + * @since 3.0.0 + * + * @param array $args Optional. The Activities Template arguments. + * + * @return array The Activities Template arguments. + */ +function bp_nouveau_group_activity_widget_overrides( $args = array() ) { + return array_merge( $args, array( + 'object' => 'groups', + 'primary_id' => bp_get_current_group_id(), + ) ); +} + +/** + * Filter the Groups widget to only keep the displayed group. + * + * @since 3.0.0 + * + * @param array $args Optional. The Groups Template arguments. + * + * @return array The Groups Template arguments. + */ +function bp_nouveau_group_groups_widget_overrides( $args = array() ) { + return array_merge( $args, array( + 'include' => bp_get_current_group_id(), + ) ); +} + +/** + * Filter the Members widgets to only keep members of the displayed group. + * + * @since 3.0.0 + * + * @param array $args Optional. The Members Template arguments. + * + * @return array The Members Template arguments. + */ +function bp_nouveau_group_members_widget_overrides( $args = array() ) { + $group_members = groups_get_group_members( array( 'exclude_admins_mods' => false ) ); + + if ( empty( $group_members['members'] ) ) { + return $args; + } + + return array_merge( $args, array( + 'include' => wp_list_pluck( $group_members['members'], 'ID' ), + ) ); +} + +/** + * Init the Group's default front page filters as we're in the sidebar + * + * @since 3.0.0 + */ +function bp_nouveau_groups_add_home_widget_filters() { + add_filter( 'bp_nouveau_activity_widget_query', 'bp_nouveau_group_activity_widget_overrides', 10, 1 ); + add_filter( 'bp_before_has_groups_parse_args', 'bp_nouveau_group_groups_widget_overrides', 10, 1 ); + add_filter( 'bp_before_has_members_parse_args', 'bp_nouveau_group_members_widget_overrides', 10, 1 ); + + /** + * Fires after BuddyPress Nouveau groups have added their home widget filters. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_groups_add_home_widget_filters' ); +} + +/** + * Remove the Group's default front page filters as we're no more in the sidebar + * + * @since 3.0.0 + */ +function bp_nouveau_groups_remove_home_widget_filters() { + remove_filter( 'bp_nouveau_activity_widget_query', 'bp_nouveau_group_activity_widget_overrides', 10, 1 ); + remove_filter( 'bp_before_has_groups_parse_args', 'bp_nouveau_group_groups_widget_overrides', 10, 1 ); + remove_filter( 'bp_before_has_members_parse_args', 'bp_nouveau_group_members_widget_overrides', 10, 1 ); + + /** + * Fires after BuddyPress Nouveau groups have removed their home widget filters. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_groups_remove_home_widget_filters' ); +} + +/** + * Get the hook, nonce, and eventually a specific template for Core Group's create screens. + * + * @since 3.0.0 + * + * @param string $id Optional. The screen id + * + * @return mixed An array containing the hook dynamic part, the nonce, and eventually a specific template. + * False if it's not a core create screen. + */ +function bp_nouveau_group_get_core_create_screens( $id = '' ) { + // screen id => dynamic part of the hooks, nonce & specific template to use. + $screens = array( + 'group-details' => array( + 'hook' => 'group_details_creation_step', + 'nonce' => 'groups_create_save_group-details', + 'template' => 'groups/single/admin/edit-details', + ), + 'group-settings' => array( + 'hook' => 'group_settings_creation_step', + 'nonce' => 'groups_create_save_group-settings', + ), + 'group-avatar' => array( + 'hook' => 'group_avatar_creation_step', + 'nonce' => 'groups_create_save_group-avatar', + ), + 'group-cover-image' => array( + 'hook' => 'group_cover_image_creation_step', + 'nonce' => 'groups_create_save_group-cover-image', + ), + 'group-invites' => array( + 'hook' => 'group_invites_creation_step', + 'nonce' => 'groups_create_save_group-invites', + 'template' => 'common/js-templates/invites/index', + ), + ); + + if ( isset( $screens[ $id ] ) ) { + return $screens[ $id ]; + } + + return false; +} + +/** + * Get the hook and nonce for Core Group's manage screens. + * + * @since 3.0.0 + * + * @param string $id Optional. The screen id + * + * @return mixed An array containing the hook dynamic part and the nonce. + * False if it's not a core manage screen. + */ +function bp_nouveau_group_get_core_manage_screens( $id = '' ) { + // screen id => dynamic part of the hooks & nonce. + $screens = array( + 'edit-details' => array( 'hook' => 'group_details_admin', 'nonce' => 'groups_edit_group_details' ), + 'group-settings' => array( 'hook' => 'group_settings_admin', 'nonce' => 'groups_edit_group_settings' ), + 'group-avatar' => array(), + 'group-cover-image' => array( 'hook' => 'group_settings_cover_image', 'nonce' => '' ), + 'manage-members' => array( 'hook' => 'group_manage_members_admin', 'nonce' => '' ), + 'membership-requests' => array( 'hook' => 'group_membership_requests_admin', 'nonce' => '' ), + 'delete-group' => array( 'hook' => 'group_delete_admin', 'nonce' => 'groups_delete_group' ), + ); + + if ( isset( $screens[ $id ] ) ) { + return $screens[ $id ]; + } + + return false; +} + +/** + * Register notifications filters for the groups component. + * + * @since 3.0.0 + */ +function bp_nouveau_groups_notification_filters() { + $notifications = array( + array( + 'id' => 'new_membership_request', + 'label' => __( 'Pending Group membership requests', 'buddypress' ), + 'position' => 55, + ), + array( + 'id' => 'membership_request_accepted', + 'label' => __( 'Accepted Group membership requests', 'buddypress' ), + 'position' => 65, + ), + array( + 'id' => 'membership_request_rejected', + 'label' => __( 'Rejected Group membership requests', 'buddypress' ), + 'position' => 75, + ), + array( + 'id' => 'member_promoted_to_admin', + 'label' => __( 'Group Administrator promotions', 'buddypress' ), + 'position' => 85, + ), + array( + 'id' => 'member_promoted_to_mod', + 'label' => __( 'Group Moderator promotions', 'buddypress' ), + 'position' => 95, + ), + array( + 'id' => 'group_invite', + 'label' => __( 'Group invitations', 'buddypress' ), + 'position' => 105, + ), + ); + + foreach ( $notifications as $notification ) { + bp_nouveau_notifications_register_filter( $notification ); + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..4fee608a2b8d31a9899a9c328e6383a7a85a1cda --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/loader.php @@ -0,0 +1,185 @@ +<?php +/** + * BP Nouveau Groups + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Groups Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Groups { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = trailingslashit( dirname( __FILE__ ) ); + $this->is_group_home_sidebar = false; + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require $this->dir . 'functions.php'; + require $this->dir . 'classes.php'; + require $this->dir . 'template-tags.php'; + + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && 0 === strpos( $_REQUEST['action'], 'groups_' ) ) { + require $this->dir . 'ajax.php'; + } + } ); + } + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + if ( ! is_admin() || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + add_action( 'groups_setup_nav', 'bp_nouveau_group_setup_nav' ); + } + + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_groups_enqueue_scripts' ); + + // Avoid Notices for BuddyPress Legacy Backcompat + remove_action( 'bp_groups_directory_group_filter', 'bp_group_backcompat_create_nav_item', 1000 ); + + // Register the Groups Notifications filters + add_action( 'bp_nouveau_notifications_init_filters', 'bp_nouveau_groups_notification_filters' ); + + // Actions to check whether we are in the Group's default front page sidebar + add_action( 'dynamic_sidebar_before', array( $this, 'group_home_sidebar_set' ), 10, 1 ); + add_action( 'dynamic_sidebar_after', array( $this, 'group_home_sidebar_unset' ), 10, 1 ); + + // Add a new nav item to settings to let users choose their group invites preferences + if ( bp_is_active( 'friends' ) && ! bp_nouveau_groups_disallow_all_members_invites() ) { + add_action( 'bp_settings_setup_nav', 'bp_nouveau_groups_invites_restriction_nav' ); + } + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_groups_register_scripts', 10, 1 ); + add_filter( 'bp_core_get_js_strings', 'bp_nouveau_groups_localize_scripts', 10, 1 ); + add_filter( 'groups_create_group_steps', 'bp_nouveau_group_invites_create_steps', 10, 1 ); + + $buttons = array( + 'groups_leave_group', + 'groups_join_group', + 'groups_accept_invite', + 'groups_reject_invite', + 'groups_membership_requested', + 'groups_request_membership', + 'groups_group_membership', + ); + + foreach ( $buttons as $button ) { + add_filter( 'bp_button_' . $button, 'bp_nouveau_ajax_button', 10, 5 ); + } + + // Add sections in the BP Template Pack panel of the customizer. + add_filter( 'bp_nouveau_customizer_sections', 'bp_nouveau_groups_customizer_sections', 10, 1 ); + + // Add settings into the Groups sections of the customizer. + add_filter( 'bp_nouveau_customizer_settings', 'bp_nouveau_groups_customizer_settings', 10, 1 ); + + // Add controls into the Groups sections of the customizer. + add_filter( 'bp_nouveau_customizer_controls', 'bp_nouveau_groups_customizer_controls', 10, 1 ); + + // Add the group's default front template to hieararchy if user enabled it (Enabled by default). + add_filter( 'bp_groups_get_front_template', 'bp_nouveau_group_reset_front_template', 10, 2 ); + + // Add a new nav item to settings to let users choose their group invites preferences + if ( bp_is_active( 'friends' ) && ! bp_nouveau_groups_disallow_all_members_invites() ) { + add_filter( 'bp_settings_admin_nav', 'bp_nouveau_groups_invites_restriction_admin_nav', 10, 1 ); + } + } + + /** + * Add filters to be sure the (BuddyPress) widgets display will be consistent + * with the current group's default front page. + * + * @since 3.0.0 + * + * @param string $sidebar_index The Sidebar identifier. + */ + public function group_home_sidebar_set( $sidebar_index = '' ) { + if ( 'sidebar-buddypress-groups' !== $sidebar_index ) { + return; + } + + $this->is_group_home_sidebar = true; + + // Add needed filters. + bp_nouveau_groups_add_home_widget_filters(); + } + + /** + * Remove filters to be sure the (BuddyPress) widgets display will no more take + * the current group displayed in account. + * + * @since 3.0.0 + * + * @param string $sidebar_index The Sidebar identifier. + */ + public function group_home_sidebar_unset( $sidebar_index = '' ) { + if ( 'sidebar-buddypress-groups' !== $sidebar_index ) { + return; + } + + $this->is_group_home_sidebar = false; + + // Remove no more needed filters. + bp_nouveau_groups_remove_home_widget_filters(); + } +} + +/** + * Launch the Groups loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_groups( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->groups = new BP_Nouveau_Groups(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_groups', 10, 1 ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..456d0c56bf552f370d85bc503545c774827f4456 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/groups/template-tags.php @@ -0,0 +1,1362 @@ +<?php +/** + * Groups Template tags + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Template tag to wrap all Legacy actions that was used + * before the groups directory content + * + * @since 3.0.0 + */ +function bp_nouveau_before_groups_directory_content() { + /** + * Fires at the begining of the templates BP injected content. + * + * @since 2.3.0 + */ + do_action( 'bp_before_directory_groups_page' ); + + /** + * Fires before the display of the groups. + * + * @since 1.1.0 + */ + do_action( 'bp_before_directory_groups' ); + + /** + * Fires before the display of the groups content. + * + * @since 1.1.0 + */ + do_action( 'bp_before_directory_groups_content' ); +} + +/** + * Template tag to wrap all Legacy actions that was used + * after the groups directory content + * + * @since 3.0.0 + */ +function bp_nouveau_after_groups_directory_content() { + /** + * Fires and displays the group content. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_groups_content' ); + + /** + * Fires after the display of the groups content. + * + * @since 1.1.0 + */ + do_action( 'bp_after_directory_groups_content' ); + + /** + * Fires after the display of the groups. + * + * @since 1.1.0 + */ + do_action( 'bp_after_directory_groups' ); + + /** + * Fires at the bottom of the groups directory template file. + * + * @since 1.5.0 + */ + do_action( 'bp_after_directory_groups_page' ); +} + +/** + * Fire specific hooks into the groups create template. + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_groups_create_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a create group hook + $hook[] = 'create_group'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Fire specific hooks into the single groups templates. + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_group_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a group hook + $hook[] = 'group'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Fire an isolated hook inside the groups loop + * + * @since 3.0.0 + */ +function bp_nouveau_groups_loop_item() { + /** + * Fires inside the listing of an individual group listing item. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_groups_item' ); +} + +/** + * Display the current group activity post form if needed + * + * @since 3.0.0 + */ +function bp_nouveau_groups_activity_post_form() { + /** + * Fires before the display of the group activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_before_group_activity_post_form' ); + + if ( is_user_logged_in() && bp_group_is_member() ) { + bp_get_template_part( 'activity/post-form' ); + } + + /** + * Fires after the display of the group activity post form. + * + * @since 1.2.0 + */ + do_action( 'bp_after_group_activity_post_form' ); +} + +/** + * Load the Group Invites UI. + * + * @since 3.0.0 + * + * @return string HTML Output. + */ +function bp_nouveau_group_invites_interface() { + /** + * Fires before the send invites content. + * + * @since 1.1.0 + */ + do_action( 'bp_before_group_send_invites_content' ); + + bp_get_template_part( 'common/js-templates/invites/index' ); + + /** + * Fires after the send invites content. + * + * @since 1.2.0 + */ + do_action( 'bp_after_group_send_invites_content' ); +} + +/** + * Gets the displayed user group invites preferences + * + * @since 3.0.0 + * + * @return int Returns 1 if user chose to restrict to friends, 0 otherwise. + */ +function bp_nouveau_groups_get_group_invites_setting() { + return (int) bp_get_user_meta( bp_displayed_user_id(), '_bp_nouveau_restrict_invites_to_friends' ); +} + +/** + * Outputs the group creation numbered steps navbar + * + * @since 3.0.0 + * + * @todo This output isn't localised correctly. + */ +function bp_nouveau_group_creation_tabs() { + $bp = buddypress(); + + if ( ! is_array( $bp->groups->group_creation_steps ) ) { + return; + } + + if ( ! bp_get_groups_current_create_step() ) { + $keys = array_keys( $bp->groups->group_creation_steps ); + $bp->groups->current_create_step = array_shift( $keys ); + } + + $counter = 1; + + foreach ( (array) $bp->groups->group_creation_steps as $slug => $step ) { + $is_enabled = bp_are_previous_group_creation_steps_complete( $slug ); ?> + + <li<?php if ( bp_get_groups_current_create_step() === $slug ) : ?> class="current"<?php endif; ?>> + <?php if ( $is_enabled ) : ?> + <a href="<?php echo esc_url( bp_groups_directory_permalink() . 'create/step/' . $slug . '/' ); ?>"> + <?php echo (int) $counter; ?> <?php echo esc_html( $step['name'] ); ?> + </a> + <?php else : ?> + <?php echo (int) $counter; ?>. <?php echo esc_html( $step['name'] ); ?> + <?php endif ?> + </li> + <?php + $counter++; + } + + unset( $is_enabled ); + + /** + * Fires at the end of the creation of the group tabs. + * + * @since 1.0.0 + */ + do_action( 'groups_creation_tabs' ); +} + +/** + * Load the requested Create Screen for the new group. + * + * @since 3.0.0 + */ +function bp_nouveau_group_creation_screen() { + return bp_nouveau_group_manage_screen(); +} + +/** + * Load the requested Manage Screen for the current group. + * + * @since 3.0.0 + */ + +function bp_nouveau_group_manage_screen() { + $action = bp_action_variable( 0 ); + $is_group_create = bp_is_group_create(); + $output = ''; + + if ( $is_group_create ) { + $action = bp_action_variable( 1 ); + } + + $screen_id = sanitize_file_name( $action ); + if ( ! bp_is_group_admin_screen( $screen_id ) && ! bp_is_group_creation_step( $screen_id ) ) { + return; + } + + if ( ! $is_group_create ) { + /** + * Fires inside the group admin form and before the content. + * + * @since 1.1.0 + */ + do_action( 'bp_before_group_admin_content' ); + + $core_screen = bp_nouveau_group_get_core_manage_screens( $screen_id ); + + // It's a group step, get the creation screens. + } else { + $core_screen = bp_nouveau_group_get_core_create_screens( $screen_id ); + } + + if ( ! $core_screen ) { + if ( ! $is_group_create ) { + /** + * Fires inside the group admin template. + * + * Allows plugins to add custom group edit screens. + * + * @since 1.1.0 + */ + do_action( 'groups_custom_edit_steps' ); + + // Else use the group create hook + } else { + /** + * Fires inside the group admin template. + * + * Allows plugins to add custom group creation steps. + * + * @since 1.1.0 + */ + do_action( 'groups_custom_create_steps' ); + } + + // Else we load the core screen. + } else { + if ( ! empty( $core_screen['hook'] ) ) { + /** + * Fires before the display of group delete admin. + * + * @since 1.1.0 For most hooks. + * @since 2.4.0 For the cover image hook. + */ + do_action( 'bp_before_' . $core_screen['hook'] ); + } + + $template = 'groups/single/admin/' . $screen_id; + + if ( ! empty( $core_screen['template'] ) ) { + $template = $core_screen['template']; + } + + bp_get_template_part( $template ); + + if ( ! empty( $core_screen['hook'] ) ) { + /** + * Fires before the display of group delete admin. + * + * @since 1.1.0 For most hooks. + * @since 2.4.0 For the cover image hook. + */ + do_action( 'bp_after_' . $core_screen['hook'] ); + } + + if ( ! empty( $core_screen['nonce'] ) ) { + if ( ! $is_group_create ) { + $output = sprintf( '<p><input type="submit" value="%s" id="save" name="save" /></p>', esc_attr__( 'Save Changes', 'buddypress' ) ); + + // Specific case for the delete group screen + if ( 'delete-group' === $screen_id ) { + $output = sprintf( + '<div class="submit"> + <input type="submit" disabled="disabled" value="%s" id="delete-group-button" name="delete-group-button" /> + </div>', + esc_attr__( 'Delete Group', 'buddypress' ) + ); + } + } + } + } + + if ( $is_group_create ) { + /** + * Fires before the display of the group creation step buttons. + * + * @since 1.1.0 + */ + do_action( 'bp_before_group_creation_step_buttons' ); + + if ( 'crop-image' !== bp_get_avatar_admin_step() ) { + $creation_step_buttons = ''; + + if ( ! bp_is_first_group_creation_step() ) { + $creation_step_buttons .= sprintf( + '<input type="button" value="%1$s" id="group-creation-previous" name="previous" onclick="%2$s" />', + esc_attr__( 'Back to Previous Step', 'buddypress' ), + "location.href='" . esc_js( esc_url_raw( bp_get_group_creation_previous_link() ) ) . "'" + ); + } + + if ( ! bp_is_last_group_creation_step() && ! bp_is_first_group_creation_step() ) { + $creation_step_buttons .= sprintf( + '<input type="submit" value="%s" id="group-creation-next" name="save" />', + esc_attr__( 'Next Step', 'buddypress' ) + ); + } + + if ( bp_is_first_group_creation_step() ) { + $creation_step_buttons .= sprintf( + '<input type="submit" value="%s" id="group-creation-create" name="save" />', + esc_attr__( 'Create Group and Continue', 'buddypress' ) + ); + } + + if ( bp_is_last_group_creation_step() ) { + $creation_step_buttons .= sprintf( + '<input type="submit" value="%s" id="group-creation-finish" name="save" />', + esc_attr__( 'Finish', 'buddypress' ) + ); + } + + // Set the output for the buttons + $output = sprintf( '<div class="submit" id="previous-next">%s</div>', $creation_step_buttons ); + } + + /** + * Fires after the display of the group creation step buttons. + * + * @since 1.1.0 + */ + do_action( 'bp_after_group_creation_step_buttons' ); + } + + /** + * Avoid nested forms with the Backbone views for the group invites step. + */ + if ( 'group-invites' === bp_get_groups_current_create_step() ) { + printf( + '<form action="%s" method="post" enctype="multipart/form-data">', + bp_get_group_creation_form_action() + ); + } + + if ( ! empty( $core_screen['nonce'] ) ) { + wp_nonce_field( $core_screen['nonce'] ); + } + + printf( + '<input type="hidden" name="group-id" id="group-id" value="%s" />', + $is_group_create ? esc_attr( bp_get_new_group_id() ) : esc_attr( bp_get_group_id() ) + ); + + // The submit actions + echo $output; + + if ( ! $is_group_create ) { + /** + * Fires inside the group admin form and after the content. + * + * @since 1.1.0 + */ + do_action( 'bp_after_group_admin_content' ); + + } else { + /** + * Fires and displays the groups directory content. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_groups_content' ); + } + + /** + * Avoid nested forms with the Backbone views for the group invites step. + */ + if ( 'group-invites' === bp_get_groups_current_create_step() ) { + echo '</form>'; + } +} + +/** + * Output the action buttons for the displayed group + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_group_header_buttons( $args = array() ) { + $bp_nouveau = bp_nouveau(); + + $output = join( ' ', bp_nouveau_get_groups_buttons( $args ) ); + + // On the group's header we need to reset the group button's global. + if ( ! empty( $bp_nouveau->groups->group_buttons ) ) { + unset( $bp_nouveau->groups->group_buttons ); + } + + ob_start(); + /** + * Fires in the group header actions section. + * + * @since 1.2.6 + */ + do_action( 'bp_group_header_actions' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + if ( ! $args ) { + $args = array( 'classes' => array( 'item-buttons' ) ); + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + +/** + * Output the action buttons inside the groups loop. + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_groups_loop_buttons( $args = array() ) { + if ( empty( $GLOBALS['groups_template'] ) ) { + return; + } + + $args['type'] = 'loop'; + + $output = join( ' ', bp_nouveau_get_groups_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the action section of an individual group listing item. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_groups_actions' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + +/** + * Output the action buttons inside the invites loop of the displayed user. + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_groups_invite_buttons( $args = array() ) { + if ( empty( $GLOBALS['groups_template'] ) ) { + return; + } + + $args['type'] = 'invite'; + + $output = join( ' ', bp_nouveau_get_groups_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the member group item action markup. + * + * @since 1.1.0 + */ + do_action( 'bp_group_invites_item_action' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + +/** + * Output the action buttons inside the requests loop of the group's manage screen. + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_groups_request_buttons( $args = array() ) { + if ( empty( $GLOBALS['requests_template'] ) ) { + return; + } + + $args['type'] = 'request'; + + $output = join( ' ', bp_nouveau_get_groups_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the list of membership request actions. + * + * @since 1.1.0 + */ + do_action( 'bp_group_membership_requests_admin_item_action' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + +/** + * Output the action buttons inside the manage members loop of the group's manage screen. + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_groups_manage_members_buttons( $args = array() ) { + if ( empty( $GLOBALS['members_template'] ) ) { + return; + } + + $args['type'] = 'manage_members'; + + $output = join( ' ', bp_nouveau_get_groups_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the display of a member admin item in group management area. + * + * @since 1.1.0 + */ + do_action( 'bp_group_manage_members_admin_item' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + if ( ! $args ) { + $args = array( + 'wrapper' => 'span', + 'classes' => array( 'small' ), + ); + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + + /** + * Get the action buttons for the current group in the loop, + * or the current displayed group. + * + * @since 3.0.0 + * + * @param array $args Optional. See bp_nouveau_wrapper() for the description of parameters. + */ + function bp_nouveau_get_groups_buttons( $args = array() ) { + $type = ( ! empty( $args['type'] ) ) ? $args['type'] : 'group'; + + // @todo Not really sure why BP Legacy needed to do this... + if ( 'group' === $type && is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + return; + } + + $buttons = array(); + + if ( ( 'loop' === $type || 'invite' === $type ) && isset( $GLOBALS['groups_template']->group ) ) { + $group = $GLOBALS['groups_template']->group; + } else { + $group = groups_get_current_group(); + } + + if ( empty( $group->id ) ) { + return $buttons; + } + + /* + * If the 'container' is set to 'ul' set $parent_element to li, + * otherwise simply pass any value found in $args or set var false. + */ + if ( ! empty( $args['container'] ) && 'ul' === $args['container'] ) { + $parent_element = 'li'; + } elseif ( ! empty( $args['parent_element'] ) ) { + $parent_element = $args['parent_element']; + } else { + $parent_element = false; + } + + /* + * If we have a arg value for $button_element passed through + * use it to default all the $buttons['button_element'] values + * otherwise default to 'a' (anchor) o override & hardcode the + * 'element' string on $buttons array. + * + * Icons sets a class for icon display if not using the button element + */ + $icons = ''; + if ( ! empty( $args['button_element'] ) ) { + $button_element = $args['button_element'] ; + } else { + $button_element = 'a'; + $icons = ' icons'; + } + + // If we pass through parent classes add them to $button array + $parent_class = ''; + if ( ! empty( $args['parent_attr']['class'] ) ) { + $parent_class = $args['parent_attr']['class']; + } + + // Invite buttons on member's invites screen + if ( 'invite' === $type ) { + // Don't show button if not logged in or previously banned + if ( ! is_user_logged_in() || bp_group_is_user_banned( $group ) || empty( $group->status ) ) { + return $buttons; + } + + // Setup Accept button attributes + $buttons['accept_invite'] = array( + 'id' => 'accept_invite', + 'position' => 5, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'link_text' => esc_html__( 'Accept', 'buddypress' ), + 'button_element' => $button_element, + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class . ' ' . 'accept', + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button accept group-button accept-invite', + 'rel' => '', + ), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $buttons['accept_invite']['button_attr']['data-bp-nonce'] = esc_url( bp_get_group_accept_invite_link() ); + } else { + $buttons['accept_invite']['button_attr']['href'] = esc_url( bp_get_group_accept_invite_link() ); + } + + // Setup Reject button attributes + $buttons['reject_invite'] = array( + 'id' => 'reject_invite', + 'position' => 15, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'link_text' => __( 'Reject', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class . ' ' . 'reject', + ), + 'button_element' => $button_element, + 'button_attr' => array( + 'id' => '', + 'class' => 'button reject group-button reject-invite', + 'rel' => '', + ), + ); + + // If button element set add nonce link to formaction attr + if ( 'button' === $button_element ) { + $buttons['reject_invite']['button_attr']['data-bp-nonce'] = esc_url( bp_get_group_reject_invite_link() ); + } else { + $buttons['reject_invite']['button_attr']['href'] = esc_url( bp_get_group_reject_invite_link() ); + } + + // Request button for the group's manage screen + } elseif ( 'request' === $type ) { + // Setup Accept button attributes + $buttons['group_membership_accept'] = array( + 'id' => 'group_membership_accept', + 'position' => 5, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'link_text' => esc_html__( 'Accept', 'buddypress' ), + 'button_element' => $button_element, + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button accept', + 'rel' => '', + ), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $buttons['group_membership_accept']['button_attr']['data-bp-nonce'] = esc_url( bp_get_group_request_accept_link() ); + } else { + $buttons['group_membership_accept']['button_attr']['href'] = esc_url( bp_get_group_request_accept_link() ); + } + + $buttons['group_membership_reject'] = array( + 'id' => 'group_membership_reject', + 'position' => 15, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => __( 'Reject', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button reject', + 'rel' => '', + ), + ); + + // If button element set add nonce link to data-attr attr + if ( 'button' === $button_element ) { + $buttons['group_membership_reject']['button_attr']['data-bp-nonce'] = esc_url( bp_get_group_request_reject_link() ); + } else { + $buttons['group_membership_reject']['button_attr']['href'] = esc_url( bp_get_group_request_reject_link() ); + } + + /* + * Manage group members for the group's manage screen. + * The 'button_attr' keys 'href' & 'formaction' are set at the end of this array block + */ + } elseif ( 'manage_members' === $type && isset( $GLOBALS['members_template']->member->user_id ) ) { + $user_id = $GLOBALS['members_template']->member->user_id; + + $buttons = array( + 'unban_member' => array( + 'id' => 'unban_member', + 'position' => 5, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => __( 'Remove Ban', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button confirm member-unban', + 'rel' => '', + 'title' => '', + ), + ), + 'ban_member' => array( + 'id' => 'ban_member', + 'position' => 15, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => __( 'Kick & Ban', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button confirm member-ban', + 'rel' => '', + 'title' => '', + ), + ), + 'promote_mod' => array( + 'id' => 'promote_mod', + 'position' => 25, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_element' => $button_element, + 'button_attr' => array( + 'id' => '', + 'class' => 'button confirm member-promote-to-mod', + 'rel' => '', + 'title' => '', + ), + 'link_text' => __( 'Promote to Mod', 'buddypress' ), + ), + 'promote_admin' => array( + 'id' => 'promote_admin', + 'position' => 35, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => __( 'Promote to Admin', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'href' => esc_url( bp_get_group_member_promote_admin_link() ), + 'id' => '', + 'class' => 'button confirm member-promote-to-admin', + 'rel' => '', + 'title' => '', + ), + ), + 'remove_member' => array( + 'id' => 'remove_member', + 'position' => 45, + 'component' => 'groups', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => __( 'Remove from group', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => '', + 'class' => 'button confirm', + 'rel' => '', + 'title' => '', + ), + ), + ); + + // If 'button' element is set add the nonce link to data-attr attr, else add it to the href. + if ( 'button' === $button_element ) { + $buttons['unban_member']['button_attr']['data-bp-nonce'] = bp_get_group_member_unban_link( $user_id ); + $buttons['ban_member']['button_attr']['data-bp-nonce'] = bp_get_group_member_ban_link( $user_id ); + $buttons['promote_mod']['button_attr']['data-bp-nonce'] = bp_get_group_member_promote_mod_link(); + $buttons['promote_admin']['button_attr']['data-bp-nonce'] = bp_get_group_member_promote_admin_link(); + $buttons['remove_member']['button_attr']['data-bp-nonce'] = bp_get_group_member_remove_link( $user_id ); + } else { + $buttons['unban_member']['button_attr']['href'] = bp_get_group_member_unban_link( $user_id ); + $buttons['ban_member']['button_attr']['href'] = bp_get_group_member_ban_link( $user_id ); + $buttons['promote_mod']['button_attr']['href'] = bp_get_group_member_promote_mod_link(); + $buttons['promote_admin']['button_attr']['href'] = bp_get_group_member_promote_admin_link(); + $buttons['remove_member']['button_attr']['href'] = bp_get_group_member_remove_link( $user_id ); + } + + // Membership button on groups loop or single group's header + } else { + /* + * This filter workaround is waiting for a core adaptation + * so that we can directly get the groups button arguments + * instead of the button. + * + * See https://buddypress.trac.wordpress.org/ticket/7126 + */ + add_filter( 'bp_get_group_join_button', 'bp_nouveau_groups_catch_button_args', 100, 1 ); + + bp_get_group_join_button( $group ); + + remove_filter( 'bp_get_group_join_button', 'bp_nouveau_groups_catch_button_args', 100, 1 ); + + if ( ! empty( bp_nouveau()->groups->button_args ) ) { + $button_args = bp_nouveau()->groups->button_args; + + // If we pass through parent classes merge those into the existing ones + if ( $parent_class ) { + $parent_class .= ' ' . $button_args['wrapper_class']; + } + + // The join or leave group header button should default to 'button' + // Reverse the earler button var to set default as 'button' not 'a' + if ( empty( $args['button_element'] ) ) { + $button_element = 'button'; + } + + $buttons['group_membership'] = array( + 'id' => 'group_membership', + 'position' => 5, + 'component' => $button_args['component'], + 'must_be_logged_in' => $button_args['must_be_logged_in'], + 'block_self' => $button_args['block_self'], + 'parent_element' => $parent_element, + 'button_element' => $button_element, + 'link_text' => $button_args['link_text'], + 'parent_attr' => array( + 'id' => $button_args['wrapper_id'], + 'class' => $parent_class, + ), + 'button_attr' => array( + 'id' => ! empty( $button_args['link_id'] ) ? $button_args['link_id'] : '', + 'class' => $button_args['link_class'] . ' button', + 'rel' => ! empty( $button_args['link_rel'] ) ? $button_args['link_rel'] : '', + 'title' => '', + ), + ); + + // If button element set add nonce 'href' link to data-attr attr. + if ( 'button' === $button_element ) { + $buttons['group_membership']['button_attr']['data-bp-nonce'] = $button_args['link_href']; + } else { + // Else this is an anchor so use an 'href' attr. + $buttons['group_membership']['button_attr']['href'] = $button_args['link_href']; + } + + unset( bp_nouveau()->groups->button_args ); + } + } + + /** + * Filter to add your buttons, use the position argument to choose where to insert it. + * + * @since 3.0.0 + * + * @param array $buttons The list of buttons. + * @param int $group The current group object. + * @param string $type Whether we're displaying a groups loop or a groups single item. + */ + $buttons_group = apply_filters( 'bp_nouveau_get_groups_buttons', $buttons, $group, $type ); + + if ( ! $buttons_group ) { + return $buttons; + } + + // It's the first entry of the loop, so build the Group and sort it + if ( ! isset( bp_nouveau()->groups->group_buttons ) || ! is_a( bp_nouveau()->groups->group_buttons, 'BP_Buttons_Group' ) ) { + $sort = true; + bp_nouveau()->groups->group_buttons = new BP_Buttons_Group( $buttons_group ); + + // It's not the first entry, the order is set, we simply need to update the Buttons Group + } else { + $sort = false; + bp_nouveau()->groups->group_buttons->update( $buttons_group ); + } + + $return = bp_nouveau()->groups->group_buttons->get( $sort ); + + if ( ! $return ) { + return array(); + } + + // Remove buttons according to the user's membership type. + if ( 'manage_members' === $type && isset( $GLOBALS['members_template'] ) ) { + if ( bp_get_group_member_is_banned() ) { + unset( $return['ban_member'], $return['promote_mod'], $return['promote_admin'] ); + } else { + unset( $return['unban_member'] ); + } + } + + /** + * Leave a chance to adjust the $return + * + * @since 3.0.0 + * + * @param array $return The list of buttons. + * @param int $group The current group object. + * @parem string $type Whether we're displaying a groups loop or a groups single item. + */ + do_action_ref_array( 'bp_nouveau_return_groups_buttons', array( &$return, $group, $type ) ); + + return $return; + } + +/** + * Does the group has meta. + * + * @since 3.0.0 + * + * @return bool True if the group has meta. False otherwise. + */ +function bp_nouveau_group_has_meta() { + return (bool) bp_nouveau_get_group_meta(); +} + +/** + * Does the group have extra meta? + * + * @since 3.0.0 + * + * @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(); +} + +/** + * Display the group meta. + * + * @since 3.0.0 + * + * @return string HTML Output. + */ +function bp_nouveau_group_meta() { + $meta = bp_nouveau_get_group_meta(); + + if ( ! bp_is_group() ) { + echo join( ' / ', array_map( 'esc_html', (array) $meta ) ); + } else { + + /* + * 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(); + } +} + + /** + * Get the group meta. + * + * @since 3.0.0 + * + * @return array The group meta. + */ + 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(); + + if ( ! empty( $GLOBALS['groups_template']->group ) ) { + $group = $GLOBALS['groups_template']->group; + } + + if ( empty( $group->id ) ) { + return $meta; + } + + 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(), + ); + + // Make sure to include hooked meta. + $extra_meta = bp_nouveau_get_hooked_group_meta(); + + if ( $extra_meta ) { + $meta['extra'] = $extra_meta; + } + + // We're in the groups loop + } else { + $meta = array( + 'status' => bp_get_group_type(), + 'count' => bp_get_group_member_count(), + ); + } + + /** + * 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 ); + } + + return $group->template_meta; + } + +/** + * Load the appropriate content for the single group pages + * + * @since 3.0.0 + */ +function bp_nouveau_group_template_part() { + /** + * Fires before the display of the group home body. + * + * @since 1.2.0 + */ + do_action( 'bp_before_group_body' ); + + $bp_is_group_home = bp_is_group_home(); + + if ( $bp_is_group_home && ! bp_current_user_can( 'groups_access_group' ) ) { + /** + * Fires before the display of the group status message. + * + * @since 1.1.0 + */ + do_action( 'bp_before_group_status_message' ); + ?> + + <div id="message" class="info"> + <p><?php bp_group_status_message(); ?></p> + </div> + + <?php + + /** + * Fires after the display of the group status message. + * + * @since 1.1.0 + */ + do_action( 'bp_after_group_status_message' ); + + // We have a front template, Use BuddyPress function to load it. + } elseif ( $bp_is_group_home && false !== bp_groups_get_front_template() ) { + bp_groups_front_template_part(); + + // Otherwise use BP_Nouveau template hierarchy + } else { + $template = 'plugins'; + + // the home page + if ( $bp_is_group_home ) { + if ( bp_is_active( 'activity' ) ) { + $template = 'activity'; + } else { + $template = 'members'; + } + + // Not the home page + } elseif ( bp_is_group_admin_page() ) { + $template = 'admin'; + } elseif ( bp_is_group_activity() ) { + $template = 'activity'; + } elseif ( bp_is_group_members() ) { + $template = 'members'; + } elseif ( bp_is_group_invites() ) { + $template = 'send-invites'; + } elseif ( bp_is_group_membership_request() ) { + $template = 'request-membership'; + } + + bp_nouveau_group_get_template_part( $template ); + } + + /** + * Fires after the display of the group home body. + * + * @since 1.2.0 + */ + do_action( 'bp_after_group_body' ); +} + +/** + * Use the appropriate Group header and enjoy a template hierarchy + * + * @since 3.0.0 + */ +function bp_nouveau_group_header_template_part() { + $template = 'group-header'; + + if ( bp_group_use_cover_image_header() ) { + $template = 'cover-image-header'; + } + + /** + * Fires before the display of a group's header. + * + * @since 1.2.0 + */ + do_action( 'bp_before_group_header' ); + + // Get the template part for the header + bp_nouveau_group_get_template_part( $template ); + + /** + * Fires after the display of a group's header. + * + * @since 1.2.0 + */ + do_action( 'bp_after_group_header' ); + + bp_nouveau_template_notices(); +} + +/** + * Get a link to set the Group's default front page and directly + * reach the Customizer section where it's possible to do it. + * + * @since 3.0.0 + * + * @return string HTML Output + */ +function bp_nouveau_groups_get_customizer_option_link() { + return bp_nouveau_get_customizer_link( + array( + 'object' => 'group', + 'autofocus' => 'bp_nouveau_group_front_page', + 'text' => __( 'Groups default front page', 'buddypress' ), + ) + ); +} + +/** + * Get a link to set the Group's front page widgets and directly + * reach the Customizer section where it's possible to do it. + * + * @since 3.0.0 + * + * @return string HTML Output + */ +function bp_nouveau_groups_get_customizer_widgets_link() { + return bp_nouveau_get_customizer_link( + array( + 'object' => 'group', + 'autofocus' => 'sidebar-widgets-sidebar-buddypress-groups', + 'text' => __( '(BuddyPress) Widgets', 'buddypress' ), + ) + ); +} + +/** + * Output the group description excerpt + * + * @since 3.0.0 + * + * @param object $group Optional. The group being referenced. + * Defaults to the group currently being iterated on in the groups loop. + * @param int $length Optional. Length of returned string, including ellipsis. Default: 100. + * + * @return string Excerpt. + */ +function bp_nouveau_group_description_excerpt( $group = null, $length = null ) { + echo bp_nouveau_get_group_description_excerpt( $group, $length ); +} + +/** + * Filters the excerpt of a group description. + * + * Checks if the group loop is set as a 'Grid' layout and returns a reduced excerpt. + * + * @since 3.0.0 + * + * @param object $group Optional. The group being referenced. Defaults to the group currently being + * iterated on in the groups loop. + * @param int $length Optional. Length of returned string, including ellipsis. Default: 100. + * + * @return string Excerpt. + */ +function bp_nouveau_get_group_description_excerpt( $group = null, $length = null ) { + global $groups_template; + + if ( ! $group ) { + $group =& $groups_template->group; + } + + /** + * If this is a grid layout but no length is passed in set a shorter + * default value otherwise use the passed in value. + * If not a grid then the BP core default is used or passed in value. + */ + if ( bp_nouveau_loop_is_grid() && 'groups' === bp_current_component() ) { + if ( ! $length ) { + $length = 100; + } else { + $length = $length; + } + } + + /** + * Filters the excerpt of a group description. + * + * @since 3.0.0 + * + * @param string $value Excerpt of a group description. + * @param object $group Object for group whose description is made into an excerpt. + */ + return apply_filters( 'bp_nouveau_get_group_description_excerpt', bp_create_excerpt( $group->description, $length ), $group ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..6bbba38dd11cdbcb9eea5a06f8a0165a489486d5 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/functions.php @@ -0,0 +1,506 @@ +<?php +/** + * Members functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Enqueue the members scripts + * + * @since 3.0.0 + */ +function bp_nouveau_members_enqueue_scripts() { + // Neutralize Ajax when using BuddyPress Groups & member widgets on default front page + if ( ! bp_is_user_front() || ! bp_nouveau_get_appearance_settings( 'user_front_page' ) ) { + return; + } + + wp_add_inline_style( + 'bp-nouveau', ' + #member-front-widgets #groups-list-options, + #member-front-widgets #members-list-options, + #member-front-widgets #friends-list-options { + display: none; + } + ' + ); +} + +/** + * Get the nav items for the Members directory + * + * @since 3.0.0 + * + * @return array An associative array of nav items. + */ +function bp_nouveau_get_members_directory_nav_items() { + $nav_items = array(); + + $nav_items['all'] = array( + 'component' => 'members', + 'slug' => 'all', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array(), + 'link' => bp_get_members_directory_permalink(), + 'text' => __( 'All Members', 'buddypress' ), + 'count' => bp_get_total_member_count(), + 'position' => 5, + ); + + if ( is_user_logged_in() ) { + // If friends component is active and the user has friends + if ( bp_is_active( 'friends' ) && bp_get_total_friend_count( bp_loggedin_user_id() ) ) { + $nav_items['personal'] = array( + 'component' => 'members', + 'slug' => 'personal', // slug is used because BP_Core_Nav requires it, but it's the scope + 'li_class' => array(), + 'link' => bp_loggedin_user_domain() . bp_get_friends_slug() . '/my-friends/', + 'text' => __( 'My Friends', 'buddypress' ), + 'count' => bp_get_total_friend_count( bp_loggedin_user_id() ), + 'position' => 15, + ); + } + } + + // Check for the deprecated hook : + $extra_nav_items = bp_nouveau_parse_hooked_dir_nav( 'bp_members_directory_member_types', 'members', 20 ); + if ( ! empty( $extra_nav_items ) ) { + $nav_items = array_merge( $nav_items, $extra_nav_items ); + } + + /** + * Use this filter to introduce your custom nav items for the members directory. + * + * @since 3.0.0 + * + * @param array $nav_items The list of the members directory nav items. + */ + return apply_filters( 'bp_nouveau_get_members_directory_nav_items', $nav_items ); +} + +/** + * Get Dropdown filters for the members component + * + * @since 3.0.0 + * + * @param string $context Optional. + * + * @return array the filters + */ +function bp_nouveau_get_members_filters( $context = '' ) { + if ( 'group' !== $context ) { + $filters = array( + 'active' => __( 'Last Active', 'buddypress' ), + 'newest' => __( 'Newest Registered', 'buddypress' ), + ); + + if ( bp_is_active( 'xprofile' ) ) { + $filters['alphabetical'] = __( 'Alphabetical', 'buddypress' ); + } + + $action = 'bp_members_directory_order_options'; + + if ( 'friends' === $context ) { + $action = 'bp_member_friends_order_options'; + } + } else { + $filters = array( + 'last_joined' => __( 'Newest', 'buddypress' ), + 'first_joined' => __( 'Oldest', 'buddypress' ), + ); + + if ( bp_is_active( 'activity' ) ) { + $filters['group_activity'] = __( 'Group Activity', 'buddypress' ); + } + + $filters['alphabetical'] = __( 'Alphabetical', 'buddypress' ); + $action = 'bp_groups_members_order_options'; + } + + /** + * Recommended, filter here instead of adding an action to 'bp_members_directory_order_options' + * + * @since 3.0.0 + * + * @param array the members filters. + * @param string the context. + */ + $filters = apply_filters( 'bp_nouveau_get_members_filters', $filters, $context ); + + return bp_nouveau_parse_hooked_options( $action, $filters ); +} + +/** + * Catch the arguments for buttons + * + * @since 3.0.0 + * + * @param array $buttons The arguments of the button that BuddyPress is about to create. + * + * @return array An empty array to stop the button creation process. + */ +function bp_nouveau_members_catch_button_args( $button = array() ) { + /* + * Globalize the arguments so that we can use it + * in bp_nouveau_get_member_header_buttons(). + */ + bp_nouveau()->members->button_args = $button; + + // return an empty array to stop the button creation process + return array(); +} + +/** + * Catch the content hooked to the do_action hooks in single member header + * and in the members loop. + * + * @since 3.0.0 + * + * @return string|false HTML Output if hooked. False otherwise. + */ +function bp_nouveau_get_hooked_member_meta() { + ob_start(); + + if ( ! empty( $GLOBALS['members_template'] ) ) { + /** + * Fires inside the display of a directory member item. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_members_item' ); + + // It's the user's header + } else { + /** + * Fires after the group header actions section. + * + * If you'd like to show specific profile fields here use: + * bp_member_profile_data( 'field=About Me' ); -- Pass the name of the field + * + * @since 1.2.0 + */ + do_action( 'bp_profile_header_meta' ); + } + + $output = ob_get_clean(); + + if ( ! empty( $output ) ) { + return $output; + } + + return false; +} + +/** + * Add the default user front template to the front template hierarchy + * + * @since 3.0.0 + * + * @param array $templates The list of templates for the front.php template part. + * + * @return array The same list with the default front template if needed. + */ +function bp_nouveau_member_reset_front_template( $templates = array() ) { + $use_default_front = bp_nouveau_get_appearance_settings( 'user_front_page' ); + + // Setting the front template happens too early, so we need this! + if ( is_customize_preview() ) { + $use_default_front = bp_nouveau_get_temporary_setting( 'user_front_page', $use_default_front ); + } + + if ( ! empty( $use_default_front ) ) { + array_push( $templates, 'members/single/default-front.php' ); + } + + /** + * Filters the BuddyPress Nouveau template hierarchy after resetting front template for members. + * + * @since 3.0.0 + * + * @param array $templates Array of templates. + */ + return apply_filters( '_bp_nouveau_member_reset_front_template', $templates ); +} + +/** + * Only locate global user's front templates + * + * @since 3.0.0 + * + * @param array $templates The User's front template hierarchy. + * + * @return array Only the global front templates. + */ +function bp_nouveau_member_restrict_user_front_templates( $templates = array() ) { + return array_intersect( array( + 'members/single/front.php', + 'members/single/default-front.php', + ), $templates ); +} + +/** + * Locate a single member template into a specific hierarchy. + * + * @since 3.0.0 + * + * @param string $template The template part to get (eg: activity, groups...). + * + * @return string The located template. + */ +function bp_nouveau_member_locate_template_part( $template = '' ) { + $displayed_user = bp_get_displayed_user(); + $bp_nouveau = bp_nouveau(); + + if ( ! $template || empty( $displayed_user->id ) ) { + return ''; + } + + // Use a global to avoid requesting the hierarchy for each template + if ( ! isset( $bp_nouveau->members->displayed_user_hierarchy ) ) { + $bp_nouveau->members->displayed_user_hierarchy = array( + 'members/single/%s-id-' . sanitize_file_name( $displayed_user->id ) . '.php', + 'members/single/%s-nicename-' . sanitize_file_name( $displayed_user->userdata->user_nicename ) . '.php', + ); + + /* + * Check for member types and add it to the hierarchy + * + * Make sure to register your member + * type using the hook 'bp_register_member_types' + */ + if ( bp_get_member_types() ) { + $displayed_user_member_type = bp_get_member_type( $displayed_user->id ); + if ( ! $displayed_user_member_type ) { + $displayed_user_member_type = 'none'; + } + + $bp_nouveau->members->displayed_user_hierarchy[] = 'members/single/%s-member-type-' . sanitize_file_name( $displayed_user_member_type ) . '.php'; + } + + // And the regular one + $bp_nouveau->members->displayed_user_hierarchy[] = 'members/single/%s.php'; + } + + $templates = array(); + + // Loop in the hierarchy to fill it for the requested template part + foreach ( $bp_nouveau->members->displayed_user_hierarchy as $part ) { + $templates[] = sprintf( $part, $template ); + } + + /** + * Filters the found template parts for the member template part locating functionality. + * + * @since 3.0.0 + * + * @param array $templates Array of found templates. + */ + return bp_locate_template( apply_filters( 'bp_nouveau_member_locate_template_part', $templates ), false, true ); +} + +/** + * Load a single member template part + * + * @since 3.0.0 + * + * @param string $template The template part to get (eg: activity, groups...). + * + * @return string HTML output. + */ +function bp_nouveau_member_get_template_part( $template = '' ) { + $located = bp_nouveau_member_locate_template_part( $template ); + + if ( false !== $located ) { + $slug = str_replace( '.php', '', $located ); + $name = null; + + /** + * Let plugins adding an action to bp_get_template_part get it from here. + * + * @since 3.0.0 + * + * @param string $slug Template part slug requested. + * @param string $name Template part name requested. + */ + do_action( 'get_template_part_' . $slug, $slug, $name ); + + load_template( $located, true ); + } + + return $located; +} + +/** + * Display the User's WordPress bio info into the default front page? + * + * @since 3.0.0 + * + * @return bool True to display. False otherwise. + */ +function bp_nouveau_members_wp_bio_info() { + $user_settings = bp_nouveau_get_appearance_settings(); + + return ! empty( $user_settings['user_front_page'] ) && ! empty( $user_settings['user_front_bio'] ); +} + +/** + * Are we inside the Current user's default front page sidebar? + * + * @since 3.0.0 + * + * @return bool True if in the group's home sidebar. False otherwise. + */ +function bp_nouveau_member_is_home_widgets() { + return ( true === bp_nouveau()->members->is_user_home_sidebar ); +} + +/** + * Filter the Latest activities Widget to only keep the one of displayed user + * + * @since 3.0.0 + * + * @param array $args The Activities Template arguments. + * + * @return array The Activities Template arguments. + */ +function bp_nouveau_member_activity_widget_overrides( $args = array() ) { + return array_merge( $args, array( + 'user_id' => bp_displayed_user_id(), + ) ); +} + +/** + * Filter the Groups widget to only keep the groups the displayed user is a member of. + * + * @since 3.0.0 + * + * @param array $args The Groups Template arguments. + * + * @return array The Groups Template arguments. + */ +function bp_nouveau_member_groups_widget_overrides( $args = array() ) { + return array_merge( $args, array( + 'user_id' => bp_displayed_user_id(), + ) ); +} + +/** + * Filter the Members widgets to only keep members of the displayed group. + * + * @since 3.0.0 + * + * @param array $args The Members Template arguments. + * + * @return array The Members Template arguments. + */ +function bp_nouveau_member_members_widget_overrides( $args = array() ) { + // Do nothing for the friends widget + if ( ! empty( $args['user_id'] ) && (int) $args['user_id'] === (int) bp_displayed_user_id() ) { + return $args; + } + + return array_merge( $args, array( + 'include' => bp_displayed_user_id(), + ) ); +} + +/** + * Init the Member's default front page filters as we're in the sidebar + * + * @since 3.0.0 + */ +function bp_nouveau_members_add_home_widget_filters() { + add_filter( 'bp_nouveau_activity_widget_query', 'bp_nouveau_member_activity_widget_overrides', 10, 1 ); + add_filter( 'bp_before_has_groups_parse_args', 'bp_nouveau_member_groups_widget_overrides', 10, 1 ); + add_filter( 'bp_before_has_members_parse_args', 'bp_nouveau_member_members_widget_overrides', 10, 1 ); + + /** + * Fires after Nouveau adds its members home widget filters. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_members_add_home_widget_filters' ); +} + +/** + * Remove the Member's default front page filters as we're no more in the sidebar + * + * @since 3.0.0 + */ +function bp_nouveau_members_remove_home_widget_filters() { + remove_filter( 'bp_nouveau_activity_widget_query', 'bp_nouveau_member_activity_widget_overrides', 10, 1 ); + remove_filter( 'bp_before_has_groups_parse_args', 'bp_nouveau_member_groups_widget_overrides', 10, 1 ); + remove_filter( 'bp_before_has_members_parse_args', 'bp_nouveau_member_members_widget_overrides', 10, 1 ); + + /** + * Fires after Nouveau removes its members home widget filters. + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_members_remove_home_widget_filters' ); +} + +/** + * Get the WP Profile fields for all or a specific user + * + * @since 3.0.0 + * + * @param WP_User $user The user object. Optional. + * + * @return array The list of WP Profile fields + */ +function bp_nouveau_get_wp_profile_fields( $user = null ) { + /** + * Filters the contact methods to be included in the WP Profile fields for a specific user. + * + * Provide a chance for plugins to avoid showing the contact methods they're adding on front end. + * + * @since 3.0.0 + * + * @param array $value Array of user contact methods. + * @param WP_User $user WordPress user to get contact methods for. + */ + $contact_methods = (array) apply_filters( 'bp_nouveau_get_wp_profile_field', wp_get_user_contact_methods( $user ), $user ); + + $wp_fields = array( + 'display_name' => __( 'Name', 'buddypress' ), + 'user_description' => __( 'About Me', 'buddypress' ), + 'user_url' => __( 'Website', 'buddypress' ), + ); + + return array_merge( $wp_fields, $contact_methods ); +} + +/** + * Build the Member's nav for the our customizer control. + * + * @since 3.0.0 + * + * @return array The Members single item primary nav ordered. + */ +function bp_nouveau_member_customizer_nav() { + add_filter( '_bp_nouveau_member_reset_front_template', 'bp_nouveau_member_restrict_user_front_templates', 10, 1 ); + + if ( bp_displayed_user_get_front_template( buddypress()->loggedin_user ) ) { + buddypress()->members->nav->add_nav( + array( + 'name' => _x( 'Home', 'Member Home page', 'buddypress' ), + 'slug' => 'front', + 'position' => 5, + ) + ); + } + + remove_filter( '_bp_nouveau_member_reset_front_template', 'bp_nouveau_member_restrict_user_front_templates', 10, 1 ); + + $nav = buddypress()->members->nav; + + // Eventually reset the order. + bp_nouveau_set_nav_item_order( $nav, bp_nouveau_get_appearance_settings( 'user_nav_order' ) ); + + return $nav->get_primary(); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/loader.php new file mode 100644 index 0000000000000000000000000000000000000000..5789e9ebdbdff5e2461b0356388bb106104f8d73 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/loader.php @@ -0,0 +1,143 @@ +<?php +/** + * BP Nouveau Members + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Members Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Members { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = dirname( __FILE__ ); + $this->is_user_home_sidebar = false; + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require( trailingslashit( $this->dir ) . 'functions.php' ); + require( trailingslashit( $this->dir ) . 'template-tags.php' ); + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + $ajax_actions = array( + array( + 'members_filter' => array( + 'function' => 'bp_nouveau_ajax_object_template_loader', + 'nopriv' => true, + ), + ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } + + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_members_enqueue_scripts' ); + + // Actions to check whether we are in the member's default front page sidebar + add_action( 'dynamic_sidebar_before', array( $this, 'user_home_sidebar_set' ), 10, 1 ); + add_action( 'dynamic_sidebar_after', array( $this, 'user_home_sidebar_unset' ), 10, 1 ); + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + // Add the default-front to User's front hierarchy if user enabled it (Enabled by default). + add_filter( 'bp_displayed_user_get_front_template', 'bp_nouveau_member_reset_front_template', 10, 1 ); + } + + /** + * Add filters to be sure the (BuddyPress) widgets display will be consistent + * with the displayed user's default front page. + * + * @since 3.0.0 + * + * @param string $sidebar_index The Sidebar identifier. + */ + public function user_home_sidebar_set( $sidebar_index = '' ) { + if ( 'sidebar-buddypress-members' !== $sidebar_index ) { + return; + } + + $this->is_user_home_sidebar = true; + + // Add needed filters. + bp_nouveau_members_add_home_widget_filters(); + } + + /** + * Remove filters to be sure the (BuddyPress) widgets display will no more take + * the displayed user in account. + * + * @since 3.0.0 + * + * @param string $sidebar_index The Sidebar identifier. + */ + public function user_home_sidebar_unset( $sidebar_index = '' ) { + if ( 'sidebar-buddypress-members' !== $sidebar_index ) { + return; + } + + $this->is_user_home_sidebar = false; + + // Remove no more needed filters. + bp_nouveau_members_remove_home_widget_filters(); + } +} + +/** + * Launch the Members loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_members( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->members = new BP_Nouveau_Members(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_members', 5, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..bb80e31a8558a80373d5e5e2efda4ad871cea8d0 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/members/template-tags.php @@ -0,0 +1,1007 @@ +<?php +/** + * Members template tags + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Template tag to wrap all Legacy actions that was used + * before the members directory content + * + * @since 3.0.0 + */ +function bp_nouveau_before_members_directory_content() { + /** + * Fires at the begining of the templates BP injected content. + * + * @since 2.3.0 + */ + do_action( 'bp_before_directory_members_page' ); + + /** + * Fires before the display of the members. + * + * @since 1.1.0 + */ + do_action( 'bp_before_directory_members' ); + + /** + * Fires before the display of the members content. + * + * @since 1.1.0 + */ + do_action( 'bp_before_directory_members_content' ); + + /** + * Fires before the display of the members list tabs. + * + * @since 1.8.0 + */ + do_action( 'bp_before_directory_members_tabs' ); +} + +/** + * Template tag to wrap all Legacy actions that was used + * after the members directory content + * + * @since 3.0.0 + */ +function bp_nouveau_after_members_directory_content() { + /** + * Fires and displays the members content. + * + * @since 1.1.0 + */ + do_action( 'bp_directory_members_content' ); + + /** + * Fires after the display of the members content. + * + * @since 1.1.0 + */ + do_action( 'bp_after_directory_members_content' ); + + /** + * Fires after the display of the members. + * + * @since 1.1.0 + */ + do_action( 'bp_after_directory_members' ); + + /** + * Fires at the bottom of the members directory template file. + * + * @since 1.5.0 + */ + do_action( 'bp_after_directory_members_page' ); +} + +/** + * Fire specific hooks into the single members templates + * + * @since 3.0.0 + * + * @param string $when 'before' or 'after' + * @param string $suffix Use it to add terms at the end of the hook name + */ +function bp_nouveau_member_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a member hook + $hook[] = 'member'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Template tag to wrap the notification settings hook + * + * @since 3.0.0 + */ +function bp_nouveau_member_email_notice_settings() { + /** + * Fires at the top of the member template notification settings form. + * + * @since 1.0.0 + */ + do_action( 'bp_notification_settings' ); +} + +/** + * Output the action buttons for the displayed user profile + * + * @since 3.0.0 + * + * @param array $args See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_member_header_buttons( $args = array() ) { + $bp_nouveau = bp_nouveau(); + + if ( bp_is_user() ) { + $args['type'] = 'profile'; + } else { + $args['type'] = 'header';// we have no real need for this 'type' on header actions + } + + $output = join( ' ', bp_nouveau_get_members_buttons( $args ) ); + + /** + * On the member's header we need to reset the group button's global + * once displayed as the friends component will use the member's loop + */ + if ( ! empty( $bp_nouveau->members->member_buttons ) ) { + unset( $bp_nouveau->members->member_buttons ); + } + + ob_start(); + /** + * Fires in the member header actions section. + * + * @since 1.2.6 + */ + do_action( 'bp_member_header_actions' ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + if ( ! $args ) { + $args = array( + 'id' => 'item-buttons', + 'classes' => false, + ); + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + +/** + * Output the action buttons in member loops + * + * @since 3.0.0 + * + * @param array $args See bp_nouveau_wrapper() for the description of parameters. + */ +function bp_nouveau_members_loop_buttons( $args = array() ) { + if ( empty( $GLOBALS['members_template'] ) ) { + return; + } + + $args['type'] = 'loop'; + $action = 'bp_directory_members_actions'; + + // Specific case for group members. + if ( bp_is_active( 'groups' ) && bp_is_group_members() ) { + $args['type'] = 'group_member'; + $action = 'bp_group_members_list_item_action'; + + } elseif ( bp_is_active( 'friends' ) && bp_is_user_friend_requests() ) { + $args['type'] = 'friendship_request'; + $action = 'bp_friend_requests_item_action'; + } + + $output = join( ' ', bp_nouveau_get_members_buttons( $args ) ); + + ob_start(); + /** + * Fires inside the members action HTML markup to display actions. + * + * @since 1.1.0 + */ + do_action( $action ); + $output .= ob_get_clean(); + + if ( ! $output ) { + return; + } + + bp_nouveau_wrapper( array_merge( $args, array( 'output' => $output ) ) ); +} + + /** + * Get the action buttons for the displayed user profile + * + * @since 3.0.0 + * + * @return array + */ + function bp_nouveau_get_members_buttons( $args ) { + $buttons = array(); + $type = ( ! empty( $args['type'] ) ) ? $args['type'] : ''; + + // @todo Not really sure why BP Legacy needed to do this... + if ( 'profile' === $type && is_admin() && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { + return $buttons; + } + + $user_id = bp_displayed_user_id(); + + if ( 'loop' === $type || 'friendship_request' === $type ) { + $user_id = bp_get_member_user_id(); + } elseif ( 'group_member' === $type ) { + $user_id = bp_get_group_member_id(); + } + + if ( ! $user_id ) { + return $buttons; + } + + /* + * If the 'container' is set to 'ul' + * set a var $parent_element to li + * otherwise simply pass any value found in args + * or set var false. + */ + $parent_element = false; + + if ( ! empty( $args['container'] ) && 'ul' === $args['container'] ) { + $parent_element = 'li'; + } elseif ( ! empty( $args['parent_element'] ) ) { + $parent_element = $args['parent_element']; + } + + /* + * If we have a arg value for $button_element passed through + * use it to default all the $buttons['button_element'] values + * otherwise default to 'a' (anchor) + * Or override & hardcode the 'element' string on $buttons array. + * + * Icons sets a class for icon display if not using the button element + */ + $icons = ''; + if ( ! empty( $args['button_element'] ) ) { + $button_element = $args['button_element'] ; + } else { + $button_element = 'button'; + $icons = ' icons'; + } + + // If we pass through parent classes add them to $button array + $parent_class = ''; + if ( ! empty( $args['parent_attr']['class'] ) ) { + $parent_class = $args['parent_attr']['class']; + } + + if ( bp_is_active( 'friends' ) ) { + // It's the member's friendship requests screen + if ( 'friendship_request' === $type ) { + $buttons = array( + 'accept_friendship' => array( + 'id' => 'accept_friendship', + 'position' => 5, + 'component' => 'friends', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'link_text' => _x( 'Accept', 'button', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class , + ), + 'button_element' => $button_element, + 'button_attr' => array( + 'class' => 'button accept', + 'rel' => '', + ), + ), 'reject_friendship' => array( + 'id' => 'reject_friendship', + 'position' => 15, + 'component' => 'friends', + 'must_be_logged_in' => true, + 'parent_element' => $parent_element, + 'link_text' => _x( 'Reject', 'button', 'buddypress' ), + 'parent_attr' => array( + 'id' => '', + 'class' => $parent_class, + ), + 'button_element' => $button_element, + 'button_attr' => array ( + 'class' => 'button reject', + 'rel' => '', + ), + ), + ); + + // If button element set add nonce link to data attr + if ( 'button' === $button_element ) { + $buttons['accept_friendship']['button_attr']['data-bp-nonce'] = bp_get_friend_accept_request_link(); + $buttons['reject_friendship']['button_attr']['data-bp-nonce'] = bp_get_friend_reject_request_link(); + } else { + $buttons['accept_friendship']['button_attr']['href'] = bp_get_friend_accept_request_link(); + $buttons['reject_friendship']['button_attr']['href'] = bp_get_friend_reject_request_link(); + } + + // It's any other members screen + } else { + /* + * This filter workaround is waiting for a core adaptation + * so that we can directly get the friends button arguments + * instead of the button. + * + * See https://buddypress.trac.wordpress.org/ticket/7126 + */ + add_filter( 'bp_get_add_friend_button', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + bp_get_add_friend_button( $user_id ); + + remove_filter( 'bp_get_add_friend_button', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + if ( ! empty( bp_nouveau()->members->button_args ) ) { + $button_args = bp_nouveau()->members->button_args; + + $buttons['member_friendship'] = array( + 'id' => 'member_friendship', + 'position' => 5, + 'component' => $button_args['component'], + 'must_be_logged_in' => $button_args['must_be_logged_in'], + 'block_self' => $button_args['block_self'], + 'parent_element' => $parent_element, + 'link_text' => $button_args['link_text'], + 'parent_attr' => array( + 'id' => $button_args['wrapper_id'], + 'class' => $parent_class . ' ' . $button_args['wrapper_class'], + ), + 'button_element' => $button_element, + 'button_attr' => array( + 'id' => $button_args['link_id'], + 'class' => $button_args['link_class'], + 'rel' => $button_args['link_rel'], + 'title' => '', + ), + ); + + // If button element set add nonce link to data attr + if ( 'button' === $button_element && 'awaiting_response' !== $button_args['id'] ) { + $buttons['member_friendship']['button_attr']['data-bp-nonce'] = $button_args['link_href']; + } else { + $buttons['member_friendship']['button_element'] = 'a'; + $buttons['member_friendship']['button_attr']['href'] = $button_args['link_href']; + } + + unset( bp_nouveau()->members->button_args ); + } + } + } + + // Only add The public and private messages when not in a loop + if ( 'profile' === $type ) { + if ( bp_is_active( 'activity' ) && bp_activity_do_mentions() ) { + /* + * This filter workaround is waiting for a core adaptation + * so that we can directly get the public message button arguments + * instead of the button. + * + * See https://buddypress.trac.wordpress.org/ticket/7126 + */ + add_filter( 'bp_get_send_public_message_button', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + bp_get_send_public_message_button(); + + remove_filter( 'bp_get_send_public_message_button', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + if ( ! empty( bp_nouveau()->members->button_args ) ) { + $button_args = bp_nouveau()->members->button_args; + + /* + * This button should remain as an anchor link. + * Hardcode the use of anchor elements if button arg passed in for other elements. + */ + $buttons['public_message'] = array( + 'id' => $button_args['id'], + 'position' => 15, + 'component' => $button_args['component'], + 'must_be_logged_in' => $button_args['must_be_logged_in'], + 'block_self' => $button_args['block_self'], + 'parent_element' => $parent_element, + 'button_element' => 'a', + 'link_text' => $button_args['link_text'], + 'parent_attr' => array( + 'id' => $button_args['wrapper_id'], + 'class' => $parent_class, + ), + 'button_attr' => array( + 'href' => $button_args['link_href'], + 'id' => '', + 'class' => $button_args['link_class'], + ), + ); + unset( bp_nouveau()->members->button_args ); + } + } + + if ( bp_is_active( 'messages' ) ) { + /** + * This filter workaround is waiting for a core adaptation + * so that we can directly get the private messages button arguments + * instead of the button. + * @see https://buddypress.trac.wordpress.org/ticket/7126 + */ + add_filter( 'bp_get_send_message_button_args', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + bp_get_send_message_button(); + + remove_filter( 'bp_get_send_message_button_args', 'bp_nouveau_members_catch_button_args', 100, 1 ); + + if ( ! empty( bp_nouveau()->members->button_args ) ) { + $button_args = bp_nouveau()->members->button_args; + + /* + * This button should remain as an anchor link. + * Hardcode the use of anchor elements if button arg passed in for other elements. + */ + $buttons['private_message'] = array( + 'id' => $button_args['id'], + 'position' => 25, + 'component' => $button_args['component'], + 'must_be_logged_in' => $button_args['must_be_logged_in'], + 'block_self' => $button_args['block_self'], + 'parent_element' => $parent_element, + 'button_element' => 'a', + 'link_text' => $button_args['link_text'], + 'parent_attr' => array( + 'id' => $button_args['wrapper_id'], + 'class' => $parent_class, + ), + 'button_attr' => array( + 'href' => trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ) . '#compose?r=' . bp_core_get_username( $user_id ), + 'id' => false, + 'class' => $button_args['link_class'], + 'rel' => '', + 'title' => '', + ), + ); + + unset( bp_nouveau()->members->button_args ); + } + } + } + + /** + * Filter to add your buttons, use the position argument to choose where to insert it. + * + * @since 3.0.0 + * + * @param array $buttons The list of buttons. + * @param int $user_id The displayed user ID. + * @param string $type Whether we're displaying a members loop or a user's page + */ + $buttons_group = apply_filters( 'bp_nouveau_get_members_buttons', $buttons, $user_id, $type ); + if ( ! $buttons_group ) { + return $buttons; + } + + // It's the first entry of the loop, so build the Group and sort it + if ( ! isset( bp_nouveau()->members->member_buttons ) || ! is_a( bp_nouveau()->members->member_buttons, 'BP_Buttons_Group' ) ) { + $sort = true; + bp_nouveau()->members->member_buttons = new BP_Buttons_Group( $buttons_group ); + + // It's not the first entry, the order is set, we simply need to update the Buttons Group + } else { + $sort = false; + bp_nouveau()->members->member_buttons->update( $buttons_group ); + } + + $return = bp_nouveau()->members->member_buttons->get( $sort ); + + if ( ! $return ) { + return array(); + } + + /** + * Leave a chance to adjust the $return + * + * @since 3.0.0 + * + * @param array $return The list of buttons ordered. + * @param int $user_id The displayed user ID. + * @param string $type Whether we're displaying a members loop or a user's page + */ + do_action_ref_array( 'bp_nouveau_return_members_buttons', array( &$return, $user_id, $type ) ); + + return $return; + } + +/** + * Does the member has meta. + * + * @since 3.0.0 + * + * @return bool True if the member has meta. False otherwise. + */ +function bp_nouveau_member_has_meta() { + return (bool) bp_nouveau_get_member_meta(); +} + +/** + * Display the member meta. + * + * @since 3.0.0 + * + * @return string HTML Output. + */ +function bp_nouveau_member_meta() { + echo join( "\n", bp_nouveau_get_member_meta() ); +} + + /** + * Get the member meta. + * + * @since 3.0.0 + * + * @return array The member meta. + */ + function bp_nouveau_get_member_meta() { + $meta = array(); + $is_loop = false; + + if ( ! empty( $GLOBALS['members_template']->member ) ) { + $member = $GLOBALS['members_template']->member; + $is_loop = true; + } else { + $member = bp_get_displayed_user(); + } + + if ( empty( $member->id ) ) { + return $meta; + } + + if ( empty( $member->template_meta ) ) { + // It's a single user's header + if ( ! $is_loop ) { + $meta['last_activity'] = sprintf( + '<span class="activity">%s</span>', + esc_html( bp_get_last_activity( bp_displayed_user_id() ) ) + ); + + // We're in the members loop + } else { + $meta = array( + 'last_activity' => sprintf( '%s', bp_get_member_last_active() ), + ); + } + + // Make sure to include hooked meta. + $extra_meta = bp_nouveau_get_hooked_member_meta(); + + if ( $extra_meta ) { + $meta['extra'] = $extra_meta; + } + + /** + * Filter to add/remove Member meta. + * + * @since 3.0.0 + * + * @param array $meta The list of meta to output. + * @param object $member The member object + * @param bool $is_loop True if in the members loop. False otherwise. + */ + $member->template_meta = apply_filters( 'bp_nouveau_get_member_meta', $meta, $member, $is_loop ); + } + + return $member->template_meta; + } + +/** + * Load the appropriate content for the single member pages + * + * @since 3.0.0 + */ +function bp_nouveau_member_template_part() { + /** + * Fires before the display of member body content. + * + * @since 1.2.0 + */ + do_action( 'bp_before_member_body' ); + + if ( bp_is_user_front() ) { + bp_displayed_user_front_template_part(); + + } else { + $template = 'plugins'; + + if ( bp_is_user_activity() ) { + $template = 'activity'; + } elseif ( bp_is_user_blogs() ) { + $template = 'blogs'; + } elseif ( bp_is_user_friends() ) { + $template = 'friends'; + } elseif ( bp_is_user_groups() ) { + $template = 'groups'; + } elseif ( bp_is_user_messages() ) { + $template = 'messages'; + } elseif ( bp_is_user_profile() ) { + $template = 'profile'; + } elseif ( bp_is_user_notifications() ) { + $template = 'notifications'; + } elseif ( bp_is_user_settings() ) { + $template = 'settings'; + } + + bp_nouveau_member_get_template_part( $template ); + } + + /** + * Fires after the display of member body content. + * + * @since 1.2.0 + */ + do_action( 'bp_after_member_body' ); +} + +/** + * Use the appropriate Member header and enjoy a template hierarchy + * + * @since 3.0.0 + * + * @return string HTML Output + */ +function bp_nouveau_member_header_template_part() { + $template = 'member-header'; + + if ( bp_displayed_user_use_cover_image_header() ) { + $template = 'cover-image-header'; + } + + /** + * Fires before the display of a member's header. + * + * @since 1.2.0 + */ + do_action( 'bp_before_member_header' ); + + // Get the template part for the header + bp_nouveau_member_get_template_part( $template ); + + /** + * Fires after the display of a member's header. + * + * @since 1.2.0 + */ + do_action( 'bp_after_member_header' ); + + bp_nouveau_template_notices(); +} + +/** + * Get a link to set the Member's default front page and directly + * reach the Customizer section where it's possible to do it. + * + * @since 3.0.0 + * + * @return string HTML Output + */ +function bp_nouveau_members_get_customizer_option_link() { + return bp_nouveau_get_customizer_link( + array( + 'object' => 'user', + 'autofocus' => 'bp_nouveau_user_front_page', + 'text' => __( 'Members default front page', 'buddypress' ), + ) + ); +} + +/** + * Get a link to set the Member's front page widgets and directly + * reach the Customizer section where it's possible to do it. + * + * @since 3.0.0 + * + * @return string HTML Output + */ +function bp_nouveau_members_get_customizer_widgets_link() { + return bp_nouveau_get_customizer_link( + array( + 'object' => 'user', + 'autofocus' => 'sidebar-widgets-sidebar-buddypress-members', + 'text' => __( '(BuddyPress) Widgets', 'buddypress' ), + ) + ); +} + +/** + * Display the Member description making sure linefeeds are taking in account + * + * @since 3.0.0 + * + * @param int $user_id Optional. + * + * @return string HTML output. + */ +function bp_nouveau_member_description( $user_id = 0 ) { + if ( ! $user_id ) { + $user_id = bp_loggedin_user_id(); + + if ( bp_displayed_user_id() ) { + $user_id = bp_displayed_user_id(); + } + } + + // @todo This hack is too brittle. + add_filter( 'the_author_description', 'make_clickable', 9 ); + add_filter( 'the_author_description', 'wpautop' ); + add_filter( 'the_author_description', 'wptexturize' ); + add_filter( 'the_author_description', 'convert_smilies' ); + add_filter( 'the_author_description', 'convert_chars' ); + add_filter( 'the_author_description', 'stripslashes' ); + + the_author_meta( 'description', $user_id ); + + remove_filter( 'the_author_description', 'make_clickable', 9 ); + remove_filter( 'the_author_description', 'wpautop' ); + remove_filter( 'the_author_description', 'wptexturize' ); + remove_filter( 'the_author_description', 'convert_smilies' ); + remove_filter( 'the_author_description', 'convert_chars' ); + remove_filter( 'the_author_description', 'stripslashes' ); +} + +/** + * Display the Edit profile link (temporary). + * + * @since 3.0.0 + * + * @todo replace with Ajax feature + * + * @return string HTML Output + */ +function bp_nouveau_member_description_edit_link() { + echo bp_nouveau_member_get_description_edit_link(); +} + + /** + * Get the Edit profile link (temporary) + * @todo replace with Ajax featur + * + * @since 3.0.0 + * + * @return string HTML Output + */ + function bp_nouveau_member_get_description_edit_link() { + remove_filter( 'edit_profile_url', 'bp_members_edit_profile_url', 10, 3 ); + + if ( is_multisite() && ! current_user_can( 'read' ) ) { + $link = get_dashboard_url( bp_displayed_user_id(), 'profile.php' ); + } else { + $link = get_edit_profile_url( bp_displayed_user_id() ); + } + + add_filter( 'edit_profile_url', 'bp_members_edit_profile_url', 10, 3 ); + $link .= '#description'; + + return sprintf( '<a href="%1$s">%2$s</a>', esc_url( $link ), esc_html__( 'Edit your bio', 'buddypress' ) ); + } + + +/** WP Profile tags **********************************************************/ + +/** + * Template tag to wrap all Legacy actions that was used + * before and after the WP User's Profile. + * + * @since 3.0.0 + */ +function bp_nouveau_wp_profile_hooks( $type = 'before' ) { + if ( 'before' === $type ) { + /** + * Fires before the display of member profile loop content. + * + * @since 1.2.0 + */ + do_action( 'bp_before_profile_loop_content' ); + + /** + * Fires before the display of member profile field content. + * + * @since 1.1.0 + */ + do_action( 'bp_before_profile_field_content' ); + } else { + /** + * Fires after the display of member profile field content. + * + * @since 1.1.0 + */ + do_action( 'bp_after_profile_field_content' ); + + /** + * Fires and displays the profile field buttons. + * + * @since 1.1.0 + */ + do_action( 'bp_profile_field_buttons' ); + + /** + * Fires after the display of member profile loop content. + * + * @since 1.2.0 + */ + do_action( 'bp_after_profile_loop_content' ); + } +} + +/** + * Does the displayed user has WP profile fields? + * + * @since 3.0.0 + * + * @return bool True if user has profile fields. False otherwise. + */ +function bp_nouveau_has_wp_profile_fields() { + $user_id = bp_displayed_user_id(); + if ( ! $user_id ) { + return false; + } + + $user = get_userdata( $user_id ); + if ( ! $user ) { + return false; + } + + $fields = bp_nouveau_get_wp_profile_fields( $user ); + $user_profile_fields = array(); + + foreach ( $fields as $key => $field ) { + if ( empty( $user->{$key} ) ) { + continue; + } + + $user_profile_fields[] = (object) array( + 'id' => 'wp_' . $key, + 'label' => $field, + 'data' => $user->{$key}, + ); + } + + if ( ! $user_profile_fields ) { + return false; + } + + // Keep it for a later use. + $bp_nouveau = bp_nouveau(); + $bp_nouveau->members->wp_profile = $user_profile_fields; + $bp_nouveau->members->wp_profile_index = 0; + + return true; +} + +/** + * Check if there are still profile fields to output. + * + * @since 3.0.0 + * + * @return bool True if the profile field exists. False otherwise. + */ +function bp_nouveau_wp_profile_fields() { + $bp_nouveau = bp_nouveau(); + + if ( isset( $bp_nouveau->members->wp_profile[ $bp_nouveau->members->wp_profile_index ] ) ) { + return true; + } + + $bp_nouveau->members->wp_profile_index = 0; + unset( $bp_nouveau->members->wp_profile_current ); + + return false; +} + +/** + * Set the current profile field and iterate into the loop. + * + * @since 3.0.0 + */ +function bp_nouveau_wp_profile_field() { + $bp_nouveau = bp_nouveau(); + + $bp_nouveau->members->wp_profile_current = $bp_nouveau->members->wp_profile[ $bp_nouveau->members->wp_profile_index ]; + $bp_nouveau->members->wp_profile_index += 1; +} + +/** + * Output the WP profile field ID. + * + * @since 3.0.0 + */ +function bp_nouveau_wp_profile_field_id() { + echo esc_attr( bp_nouveau_get_wp_profile_field_id() ); +} + /** + * Get the WP profile field ID. + * + * @since 3.0.0 + * + * @return int the profile field ID. + */ + function bp_nouveau_get_wp_profile_field_id() { + $field = bp_nouveau()->members->wp_profile_current; + + /** + * Filters the WP profile field ID used for BuddyPress Nouveau. + * + * @since 3.0.0 + * + * @param string $id Field ID. + */ + return apply_filters( 'bp_nouveau_get_wp_profile_field_id', $field->id ); + } + +/** + * Output the WP profile field label. + * + * @since 3.0.0 + */ +function bp_nouveau_wp_profile_field_label() { + echo esc_html( bp_nouveau_get_wp_profile_field_label() ); +} + + /** + * Get the WP profile label. + * + * @since 3.0.0 + * + * @return string the profile field label. + */ + function bp_nouveau_get_wp_profile_field_label() { + $field = bp_nouveau()->members->wp_profile_current; + + /** + * Filters the WP profile field label used for BuddyPress Nouveau. + * + * @since 3.0.0 + * + * @param string $label Field label. + */ + return apply_filters( 'bp_nouveau_get_wp_profile_field_label', $field->label ); + } + +/** + * Output the WP profile field data. + * + * @since 3.0.0 + */ +function bp_nouveau_wp_profile_field_data() { + $data = bp_nouveau_get_wp_profile_field_data(); + $data = make_clickable( $data ); + + echo wp_kses( + /** + * Filters a WP profile field value. + * + * @since 3.0.0 + * + * @param string $data The profile field data value. + */ + apply_filters( 'bp_nouveau_get_wp_profile_field_data', $data ), + array( + 'a' => array( + 'href' => true, + 'rel' => true, + ), + ) + ); +} + + /** + * Get the WP profile field data. + * + * @since 3.0.0 + * + * @return string the profile field data. + */ + function bp_nouveau_get_wp_profile_field_data() { + $field = bp_nouveau()->members->wp_profile_current; + return $field->data; + } diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/ajax.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/ajax.php new file mode 100644 index 0000000000000000000000000000000000000000..8cc7663a7f956772a13db62229154509ccba3146 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/ajax.php @@ -0,0 +1,750 @@ +<?php +/** + * Messages Ajax functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +add_action( 'admin_init', function() { + $ajax_actions = array( + array( 'messages_send_message' => array( 'function' => 'bp_nouveau_ajax_messages_send_message', 'nopriv' => false ) ), + array( 'messages_send_reply' => array( 'function' => 'bp_nouveau_ajax_messages_send_reply', 'nopriv' => false ) ), + array( 'messages_get_user_message_threads' => array( 'function' => 'bp_nouveau_ajax_get_user_message_threads', 'nopriv' => false ) ), + array( 'messages_thread_read' => array( 'function' => 'bp_nouveau_ajax_messages_thread_read', 'nopriv' => false ) ), + array( 'messages_get_thread_messages' => array( 'function' => 'bp_nouveau_ajax_get_thread_messages', 'nopriv' => false ) ), + array( 'messages_delete' => array( 'function' => 'bp_nouveau_ajax_delete_thread_messages', 'nopriv' => false ) ), + array( 'messages_unstar' => array( 'function' => 'bp_nouveau_ajax_star_thread_messages', 'nopriv' => false ) ), + array( 'messages_star' => array( 'function' => 'bp_nouveau_ajax_star_thread_messages', 'nopriv' => false ) ), + array( 'messages_unread' => array( 'function' => 'bp_nouveau_ajax_readunread_thread_messages', 'nopriv' => false ) ), + array( 'messages_read' => array( 'function' => 'bp_nouveau_ajax_readunread_thread_messages', 'nopriv' => false ) ), + array( 'messages_dismiss_sitewide_notice' => array( 'function' => 'bp_nouveau_ajax_dismiss_sitewide_notice', 'nopriv' => false ) ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } +}, 12 ); + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_messages_send_message() { + $response = array( + 'feedback' => __( 'Your message could not be sent. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + // Verify nonce + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'messages_send_message' ) ) { + wp_send_json_error( $response ); + } + + // Validate subject and message content + if ( empty( $_POST['subject'] ) || empty( $_POST['message_content'] ) ) { + if ( empty( $_POST['subject'] ) ) { + $response['feedback'] = __( 'Your message was not sent. Please enter a subject line.', 'buddypress' ); + } else { + $response['feedback'] = __( 'Your message was not sent. Please enter some content.', 'buddypress' ); + } + + wp_send_json_error( $response ); + } + + // Validate recipients + if ( empty( $_POST['send_to'] ) || ! is_array( $_POST['send_to'] ) ) { + $response['feedback'] = __( 'Your message was not sent. Please enter at least one username.', 'buddypress' ); + + wp_send_json_error( $response ); + } + + // Trim @ from usernames + /** + * Filters the results of trimming of `@` characters from usernames for who is set to receive a message. + * + * @since 3.0.0 + * + * @param array $value Array of trimmed usernames. + * @param array $value Array of un-trimmed usernames submitted. + */ + $recipients = apply_filters( 'bp_messages_recipients', array_map( function( $username ) { + return trim( $username, '@' ); + }, $_POST['send_to'] ) ); + + // Attempt to send the message. + $send = messages_new_message( array( + 'recipients' => $recipients, + 'subject' => $_POST['subject'], + 'content' => $_POST['message_content'], + 'error_type' => 'wp_error', + ) ); + + // Send the message. + if ( true === is_int( $send ) ) { + wp_send_json_success( array( + 'feedback' => __( 'Message successfully sent.', 'buddypress' ), + 'type' => 'success', + ) ); + + // Message could not be sent. + } else { + $response['feedback'] = $send->get_error_message(); + + wp_send_json_error( $response ); + } +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_messages_send_reply() { + $response = array( + 'feedback' => __( 'There was a problem sending your reply. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + // Verify nonce + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'messages_send_message' ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['content'] ) || empty( $_POST['thread_id'] ) ) { + $response['feedback'] = __( 'Your reply was not sent. Please enter some content.', 'buddypress' ); + + wp_send_json_error( $response ); + } + + $new_reply = messages_new_message( array( + 'thread_id' => (int) $_POST['thread_id'], + 'subject' => ! empty( $_POST['subject'] ) ? $_POST['subject'] : false, + 'content' => $_POST['content'] + ) ); + + // Send the reply. + if ( empty( $new_reply ) ) { + wp_send_json_error( $response ); + } + + // Get the message by pretending we're in the message loop. + global $thread_template; + + $bp = buddypress(); + $reset_action = $bp->current_action; + + // Override bp_current_action(). + $bp->current_action = 'view'; + + bp_thread_has_messages( array( 'thread_id' => (int) $_POST['thread_id'] ) ); + + // Set the current message to the 2nd last. + $thread_template->message = end( $thread_template->thread->messages ); + $thread_template->message = prev( $thread_template->thread->messages ); + + // Set current message to current key. + $thread_template->current_message = key( $thread_template->thread->messages ); + + // Now manually iterate message like we're in the loop. + bp_thread_the_message(); + + // Manually call oEmbed + // this is needed because we're not at the beginning of the loop. + bp_messages_embed(); + + // Output single message template part. + $reply = array( + 'id' => bp_get_the_thread_message_id(), + 'content' => html_entity_decode( do_shortcode( bp_get_the_thread_message_content() ) ), + 'sender_id' => bp_get_the_thread_message_sender_id(), + 'sender_name' => esc_html( bp_get_the_thread_message_sender_name() ), + 'sender_link' => bp_get_the_thread_message_sender_link(), + 'sender_avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => bp_get_the_thread_message_sender_id(), + 'object' => 'user', + 'type' => 'thumb', + 'width' => 32, + 'height' => 32, + 'html' => false, + ) ) ), + 'date' => bp_get_the_thread_message_date_sent() * 1000, + 'display_date' => bp_get_the_thread_message_time_since(), + ); + + if ( bp_is_active( 'messages', 'star' ) ) { + $star_link = bp_get_the_message_star_action_link( array( + 'message_id' => bp_get_the_thread_message_id(), + 'url_only' => true, + ) ); + + $reply['star_link'] = $star_link; + $reply['is_starred'] = array_search( 'unstar', explode( '/', $star_link ) ); + } + + $extra_content = bp_nouveau_messages_catch_hook_content( array( + 'beforeMeta' => 'bp_before_message_meta', + 'afterMeta' => 'bp_after_message_meta', + 'beforeContent' => 'bp_before_message_content', + 'afterContent' => 'bp_after_message_content', + ) ); + + if ( array_filter( $extra_content ) ) { + $reply = array_merge( $reply, $extra_content ); + } + + // Clean up the loop. + bp_thread_messages(); + + // Remove the bp_current_action() override. + $bp->current_action = $reset_action; + + wp_send_json_success( array( + 'messages' => array( $reply ), + 'feedback' => __( 'Your reply was sent successfully', 'buddypress' ), + 'type' => 'success', + ) ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_get_user_message_threads() { + global $messages_template; + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( array( + 'feedback' => __( 'Unauthorized request.', 'buddypress' ), + 'type' => 'error' + ) ); + } + + $bp = buddypress(); + $reset_action = $bp->current_action; + + // Override bp_current_action(). + if ( isset( $_POST['box'] ) ) { + $bp->current_action = $_POST['box']; + } + + // Add the message thread filter. + if ( 'starred' === $bp->current_action ) { + add_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); + } + + // Simulate the loop. + if ( ! bp_has_message_threads( bp_ajax_querystring( 'messages' ) ) ) { + // Remove the bp_current_action() override. + $bp->current_action = $reset_action; + + wp_send_json_error( array( + 'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ), + 'type' => 'info' + ) ); + } + + // remove the message thread filter. + if ( 'starred' === $bp->current_action ) { + remove_filter( 'bp_after_has_message_threads_parse_args', 'bp_messages_filter_starred_message_threads' ); + } + + $threads = new stdClass; + $threads->meta = array( + 'total_page' => ceil( (int) $messages_template->total_thread_count / (int) $messages_template->pag_num ), + 'page' => $messages_template->pag_page, + ); + + $threads->threads = array(); + $i = 0; + + while ( bp_message_threads() ) : bp_message_thread(); + $last_message_id = (int) $messages_template->thread->last_message_id; + + $threads->threads[ $i ] = array( + 'id' => bp_get_message_thread_id(), + 'message_id' => (int) $last_message_id, + 'subject' => html_entity_decode( bp_get_message_thread_subject() ), + 'excerpt' => html_entity_decode( bp_get_message_thread_excerpt() ), + 'content' => html_entity_decode( do_shortcode( bp_get_message_thread_content() ) ), + 'unread' => bp_message_thread_has_unread(), + 'sender_name' => bp_core_get_user_displayname( $messages_template->thread->last_sender_id ), + 'sender_link' => bp_core_get_userlink( $messages_template->thread->last_sender_id, false, true ), + 'sender_avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => $messages_template->thread->last_sender_id, + 'object' => 'user', + 'type' => 'thumb', + 'width' => 32, + 'height' => 32, + 'html' => false, + ) ) ), + 'count' => bp_get_message_thread_total_count(), + 'date' => strtotime( bp_get_message_thread_last_post_date_raw() ) * 1000, + 'display_date' => bp_nouveau_get_message_date( bp_get_message_thread_last_post_date_raw() ), + ); + + if ( is_array( $messages_template->thread->recipients ) ) { + foreach ( $messages_template->thread->recipients as $recipient ) { + $threads->threads[ $i ]['recipients'][] = array( + 'avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => $recipient->user_id, + 'object' => 'user', + 'type' => 'thumb', + 'width' => 28, + 'height' => 28, + 'html' => false, + ) ) ), + 'user_link' => bp_core_get_userlink( $recipient->user_id, false, true ), + 'user_name' => bp_core_get_username( $recipient->user_id ), + ); + } + } + + if ( bp_is_active( 'messages', 'star' ) ) { + $star_link = bp_get_the_message_star_action_link( array( + 'thread_id' => bp_get_message_thread_id(), + 'url_only' => true, + ) ); + + $threads->threads[ $i ]['star_link'] = $star_link; + + $star_link_data = explode( '/', $star_link ); + $threads->threads[ $i ]['is_starred'] = array_search( 'unstar', $star_link_data ); + + // Defaults to last + $sm_id = $last_message_id; + + if ( $threads->threads[ $i ]['is_starred'] ) { + $sm_id = (int) $star_link_data[ $threads->threads[ $i ]['is_starred'] + 1 ]; + } + + $threads->threads[ $i ]['star_nonce'] = wp_create_nonce( 'bp-messages-star-' . $sm_id ); + $threads->threads[ $i ]['starred_id'] = $sm_id; + } + + $thread_extra_content = bp_nouveau_messages_catch_hook_content( array( + 'inboxListItem' => 'bp_messages_inbox_list_item', + 'threadOptions' => 'bp_messages_thread_options', + ) ); + + if ( array_filter( $thread_extra_content ) ) { + $threads->threads[ $i ] = array_merge( $threads->threads[ $i ], $thread_extra_content ); + } + + $i += 1; + endwhile; + + $threads->threads = array_filter( $threads->threads ); + + $extra_content = bp_nouveau_messages_catch_hook_content( array( + 'beforeLoop' => 'bp_before_member_messages_loop', + 'afterLoop' => 'bp_after_member_messages_loop', + ) ); + + if ( array_filter( $extra_content ) ) { + $threads->extraContent = $extra_content; + } + + // Remove the bp_current_action() override. + $bp->current_action = $reset_action; + + // Return the successfull reply. + wp_send_json_success( $threads ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_messages_thread_read() { + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error(); + } + + if ( empty( $_POST['id'] ) || empty( $_POST['message_id'] ) ) { + wp_send_json_error(); + } + + $thread_id = (int) $_POST['id']; + $message_id = (int) $_POST['message_id']; + + if ( ! messages_is_valid_thread( $thread_id ) || ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) ) { + wp_send_json_error(); + } + + // Mark thread as read + messages_mark_thread_read( $thread_id ); + + // Mark latest message as read + if ( bp_is_active( 'notifications' ) ) { + bp_notifications_mark_notifications_by_item_id( bp_loggedin_user_id(), (int) $message_id, buddypress()->messages->id, 'new_message' ); + } + + wp_send_json_success(); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_get_thread_messages() { + global $thread_template; + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( array( + 'feedback' => __( 'Unauthorized request.', 'buddypress' ), + 'type' => 'error' + ) ); + } + + $response = array( + 'feedback' => __( 'Sorry, no messages were found.', 'buddypress' ), + 'type' => 'info' + ); + + if ( empty( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + $thread_id = (int) $_POST['id']; + $bp = buddypress(); + $reset_action = $bp->current_action; + + // Override bp_current_action(). + $bp->current_action = 'view'; + + // Simulate the loop. + if ( ! bp_thread_has_messages( array( 'thread_id' => $thread_id ) ) ) { + // Remove the bp_current_action() override. + $bp->current_action = $reset_action; + + wp_send_json_error( $response ); + } + + $thread = new stdClass; + + if ( empty( $_POST['js_thread'] ) ) { + $thread->thread = array( + 'id' => bp_get_the_thread_id(), + 'subject' => html_entity_decode( bp_get_the_thread_subject() ), + ); + + if ( is_array( $thread_template->thread->recipients ) ) { + foreach ( $thread_template->thread->recipients as $recipient ) { + $thread->thread['recipients'][] = array( + 'avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => $recipient->user_id, + 'object' => 'user', + 'type' => 'thumb', + 'width' => 28, + 'height' => 28, + 'html' => false, + ) ) ), + 'user_link' => bp_core_get_userlink( $recipient->user_id, false, true ), + 'user_name' => bp_core_get_username( $recipient->user_id ), + ); + } + } + } + + $thread->messages = array(); + $i = 0; + + while ( bp_thread_messages() ) : bp_thread_the_message(); + $thread->messages[ $i ] = array( + 'id' => bp_get_the_thread_message_id(), + 'content' => html_entity_decode( do_shortcode( bp_get_the_thread_message_content() ) ), + 'sender_id' => bp_get_the_thread_message_sender_id(), + 'sender_name' => esc_html( bp_get_the_thread_message_sender_name() ), + 'sender_link' => bp_get_the_thread_message_sender_link(), + 'sender_avatar' => htmlspecialchars_decode( bp_core_fetch_avatar( array( + 'item_id' => bp_get_the_thread_message_sender_id(), + 'object' => 'user', + 'type' => 'thumb', + 'width' => 32, + 'height' => 32, + 'html' => false, + ) ) ), + 'date' => bp_get_the_thread_message_date_sent() * 1000, + 'display_date' => bp_get_the_thread_message_time_since(), + ); + + if ( bp_is_active( 'messages', 'star' ) ) { + $star_link = bp_get_the_message_star_action_link( array( + 'message_id' => bp_get_the_thread_message_id(), + 'url_only' => true, + ) ); + + $thread->messages[ $i ]['star_link'] = $star_link; + $thread->messages[ $i ]['is_starred'] = array_search( 'unstar', explode( '/', $star_link ) ); + $thread->messages[ $i ]['star_nonce'] = wp_create_nonce( 'bp-messages-star-' . bp_get_the_thread_message_id() ); + } + + $extra_content = bp_nouveau_messages_catch_hook_content( array( + 'beforeMeta' => 'bp_before_message_meta', + 'afterMeta' => 'bp_after_message_meta', + 'beforeContent' => 'bp_before_message_content', + 'afterContent' => 'bp_after_message_content', + ) ); + + if ( array_filter( $extra_content ) ) { + $thread->messages[ $i ] = array_merge( $thread->messages[ $i ], $extra_content ); + } + + $i += 1; + endwhile; + + $thread->messages = array_filter( $thread->messages ); + + // Remove the bp_current_action() override. + $bp->current_action = $reset_action; + + wp_send_json_success( $thread ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_delete_thread_messages() { + $response = array( + 'feedback' => __( 'There was a problem deleting your messages. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + $thread_ids = wp_parse_id_list( $_POST['id'] ); + + foreach ( $thread_ids as $thread_id ) { + if ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) { + wp_send_json_error( $response ); + } + + messages_delete_thread( $thread_id ); + } + + wp_send_json_success( array( + 'feedback' => __( 'Messages deleted', 'buddypress' ), + 'type' => 'success', + ) ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_star_thread_messages() { + if ( empty( $_POST['action'] ) ) { + wp_send_json_error(); + } + + $action = str_replace( 'messages_', '', $_POST['action'] ); + + if ( 'star' === $action ) { + $error_message = __( 'There was a problem starring your messages. Please try again.', 'buddypress' ); + } else { + $error_message = __( 'There was a problem unstarring your messages. Please try agian.', 'buddypress' ); + } + + $response = array( + 'feedback' => esc_html( $error_message ), + 'type' => 'error', + ); + + if ( false === bp_is_active( 'messages', 'star' ) || empty( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + // Check capability. + if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { + wp_send_json_error( $response ); + } + + $ids = wp_parse_id_list( $_POST['id'] ); + $messages = array(); + + // Use global nonce for bulk actions involving more than one id + if ( 1 !== count( $ids ) ) { + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( $response ); + } + + foreach ( $ids as $mid ) { + if ( 'star' === $action ) { + bp_messages_star_set_action( array( + 'action' => 'star', + 'message_id' => $mid, + ) ); + } else { + $thread_id = messages_get_message_thread_id( $mid ); + + bp_messages_star_set_action( array( + 'action' => 'unstar', + 'thread_id' => $thread_id, + 'bulk' => true + ) ); + } + + $messages[ $mid ] = array( + 'star_link' => bp_get_the_message_star_action_link( array( + 'message_id' => $mid, + 'url_only' => true, + ) ), + 'is_starred' => 'star' === $action, + ); + } + + // Use global star nonce for bulk actions involving one id or regular action + } else { + $id = reset( $ids ); + + if ( empty( $_POST['star_nonce'] ) || ! wp_verify_nonce( $_POST['star_nonce'], 'bp-messages-star-' . $id ) ) { + wp_send_json_error( $response ); + } + + bp_messages_star_set_action( array( + 'action' => $action, + 'message_id' => $id, + ) ); + + $messages[ $id ] = array( + 'star_link' => bp_get_the_message_star_action_link( array( + 'message_id' => $id, + 'url_only' => true, + ) ), + 'is_starred' => 'star' === $action, + ); + } + + if ( 'star' === $action ) { + $success_message = __( 'Messages successfully starred.', 'buddypress' ); + } else { + $success_message = __( 'Messages successfully unstarred.', 'buddypress' ); + } + + wp_send_json_success( array( + 'feedback' => esc_html( $success_message ), + 'type' => 'success', + 'messages' => $messages, + ) ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_readunread_thread_messages() { + if ( empty( $_POST['action'] ) ) { + wp_send_json_error(); + } + + $action = str_replace( 'messages_', '', $_POST['action'] ); + + $response = array( + 'feedback' => __( 'There was a problem marking your messages as read. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + + if ( 'unread' === $action ) { + $response = array( + 'feedback' => __( 'There was a problem marking your messages as unread. Please try again.', 'buddypress' ), + 'type' => 'error', + ); + } + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['id'] ) ) { + wp_send_json_error( $response ); + } + + $thread_ids = wp_parse_id_list( $_POST['id'] ); + + $response['messages'] = array(); + + if ( 'unread' === $action ) { + $response['feedback'] = __( 'Messages marked as unread.', 'buddypress' ); + } else { + $response['feedback'] = __( 'Messages marked as read.', 'buddypress' ); + } + + foreach ( $thread_ids as $thread_id ) { + if ( ! messages_check_thread_access( $thread_id ) && ! bp_current_user_can( 'bp_moderate' ) ) { + wp_send_json_error( $response ); + } + + if ( 'unread' === $action ) { + // Mark unread + messages_mark_thread_unread( $thread_id ); + } else { + // Mark read + messages_mark_thread_read( $thread_id ); + } + + $response['messages'][ $thread_id ] = array( + 'unread' => 'unread' === $action, + ); + } + + $response['type'] = 'success'; + + wp_send_json_success( $response ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_ajax_dismiss_sitewide_notice() { + if ( empty( $_POST['action'] ) ) { + wp_send_json_error(); + } + + $response = array( + 'feedback' => '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>' . __( 'There was a problem dismissing the notice. Please try again.', 'buddypress' ) . '</p></div>', + 'type' => 'error', + ); + + if ( false === bp_is_active( 'messages' ) ) { + wp_send_json_error( $response ); + } + + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( $_POST['nonce'], 'bp_nouveau_messages' ) ) { + wp_send_json_error( $response ); + } + + // Check capability. + if ( ! is_user_logged_in() || ! bp_core_can_edit_settings() ) { + wp_send_json_error( $response ); + } + + // Mark the active notice as closed. + $notice = BP_Messages_Notice::get_active(); + + if ( ! empty( $notice->id ) ) { + $user_id = bp_loggedin_user_id(); + + $closed_notices = bp_get_user_meta( $user_id, 'closed_notices', true ); + + if ( empty( $closed_notices ) ) { + $closed_notices = array(); + } + + // Add the notice to the array of the user's closed notices. + $closed_notices[] = (int) $notice->id; + bp_update_user_meta( $user_id, 'closed_notices', array_map( 'absint', array_unique( $closed_notices ) ) ); + + wp_send_json_success( array( + 'feedback' => '<div class="bp-feedback info"><span class="bp-icon" aria-hidden="true"></span><p>' . __( 'Sitewide notice dismissed', 'buddypress' ) . '</p></div>', + 'type' => 'success', + ) ); + } +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..e396345822e20d751415eb1783c67e2cc5d5b6d4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/functions.php @@ -0,0 +1,472 @@ +<?php +/** + * Messages functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Enqueue styles for the Messages UI (mentions). + * + * @since 3.0.0 + * + * @param array $styles Optional. The array of styles to enqueue. + * + * @return array The same array with the specific messages styles. + */ +function bp_nouveau_messages_enqueue_styles( $styles = array() ) { + if ( ! bp_is_user_messages() ) { + return $styles; + } + + return array_merge( $styles, array( + 'bp-nouveau-messages-at' => array( + 'file' => buddypress()->plugin_url . 'bp-activity/css/mentions%1$s%2$s.css', + 'dependencies' => array( 'bp-nouveau' ), + 'version' => bp_get_version(), + ), + ) ); +} + +/** + * Register Scripts for the Messages component + * + * @since 3.0.0 + * + * @param array $scripts The array of scripts to register + * + * @return array The same array with the specific messages scripts. + */ +function bp_nouveau_messages_register_scripts( $scripts = array() ) { + if ( ! isset( $scripts['bp-nouveau'] ) ) { + return $scripts; + } + + return array_merge( $scripts, array( + 'bp-nouveau-messages-at' => array( + 'file' => buddypress()->plugin_url . 'bp-activity/js/mentions%s.js', + 'dependencies' => array( 'bp-nouveau', 'jquery', 'jquery-atwho' ), + 'version' => bp_get_version(), + 'footer' => true, + ), + 'bp-nouveau-messages' => array( + 'file' => 'js/buddypress-messages%s.js', + 'dependencies' => array( 'bp-nouveau', 'json2', 'wp-backbone', 'bp-nouveau-messages-at' ), + 'footer' => true, + ), + ) ); +} + +/** + * Enqueue the messages scripts + * + * @since 3.0.0 + */ +function bp_nouveau_messages_enqueue_scripts() { + if ( ! bp_is_user_messages() ) { + return; + } + + wp_enqueue_script( 'bp-nouveau-messages' ); + + // Add The tiny MCE init specific function. + add_filter( 'tiny_mce_before_init', 'bp_nouveau_messages_at_on_tinymce_init', 10, 2 ); +} + +/** + * Localize the strings needed for the messages UI + * + * @since 3.0.0 + * + * @param array $params Associative array containing the JS Strings needed by scripts + * @return array The same array with specific strings for the messages UI if needed. + */ +function bp_nouveau_messages_localize_scripts( $params = array() ) { + if ( ! bp_is_user_messages() ) { + return $params; + } + + $params['messages'] = array( + 'errors' => array( + 'send_to' => __( 'Please add at least one recipient.', 'buddypress' ), + 'subject' => __( 'Please add a subject to your message.', 'buddypress' ), + 'message_content' => __( 'Please add some content to your message.', 'buddypress' ), + ), + 'nonces' => array( + 'send' => wp_create_nonce( 'messages_send_message' ), + ), + 'loading' => __( 'Loading messages. Please wait.', 'buddypress' ), + 'doingAction' => array( + 'read' => __( 'Marking messages as read. Please wait.', 'buddypress' ), + 'unread' => __( 'Marking messages as unread. Please wait.', 'buddypress' ), + 'delete' => __( 'Deleting messages. Please wait.', 'buddypress' ), + 'star' => __( 'Starring messages. Please wait.', 'buddypress' ), + 'unstar' => __( 'Unstarring messages. Please wait.', 'buddypress' ), + ), + 'bulk_actions' => bp_nouveau_messages_get_bulk_actions(), + 'howto' => __( 'Click on the message title to preview it in the Active conversation box below.', 'buddypress' ), + 'howtoBulk' => __( 'Use the select box to define your bulk action and click on the ✓ button to apply.', 'buddypress' ), + 'toOthers' => array( + 'one' => __( '(and 1 other)', 'buddypress' ), + 'more' => __( '(and %d others)', 'buddypress' ), + ), + 'rootUrl' => parse_url( trailingslashit( bp_displayed_user_domain() . bp_get_messages_slug() ), PHP_URL_PATH ), + ); + + // Star private messages. + if ( bp_is_active( 'messages', 'star' ) ) { + $params['messages'] = array_merge( $params['messages'], array( + 'strings' => array( + 'text_unstar' => __( 'Unstar', 'buddypress' ), + 'text_star' => __( 'Star', 'buddypress' ), + 'title_unstar' => __( 'Starred', 'buddypress' ), + 'title_star' => __( 'Not starred', 'buddypress' ), + 'title_unstar_thread' => __( 'Remove all starred messages in this thread', 'buddypress' ), + 'title_star_thread' => __( 'Star the first message in this thread', 'buddypress' ), + ), + 'is_single_thread' => (int) bp_is_messages_conversation(), + 'star_counter' => 0, + 'unstar_counter' => 0 + ) ); + } + + return $params; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_message_search_form() { + $query_arg = bp_core_get_component_search_query_arg( 'messages' ); + $placeholder = bp_get_search_default_text( 'messages' ); + + $search_form_html = '<form action="" method="get" id="search-messages-form"> + <label for="messages_search"><input type="text" name="' . esc_attr( $query_arg ) . '" id="messages_search" placeholder="' . esc_attr( $placeholder ) . '" /></label> + <input type="submit" id="messages_search_submit" name="messages_search_submit" value="' . esc_attr_x( 'Search', 'button', 'buddypress' ) . '" /> + </form>'; + + /** + * Filters the private message component search form. + * + * @since 3.0.0 + * + * @param string $search_form_html HTML markup for the message search form. + */ + echo apply_filters( 'bp_nouveau_message_search_form', $search_form_html ); +} +add_filter( 'bp_message_search_form', 'bp_nouveau_message_search_form', 10, 1 ); + +/** + * @since 3.0.0 + */ +function bp_nouveau_messages_adjust_nav() { + $bp = buddypress(); + + $secondary_nav_items = $bp->members->nav->get_secondary( array( 'parent_slug' => bp_get_messages_slug() ), false ); + + if ( empty( $secondary_nav_items ) ) { + return; + } + + foreach ( $secondary_nav_items as $secondary_nav_item ) { + if ( empty( $secondary_nav_item->slug ) ) { + continue; + } + + if ( 'notices' === $secondary_nav_item->slug ) { + bp_core_remove_subnav_item( bp_get_messages_slug(), $secondary_nav_item->slug, 'members' ); + } elseif ( 'compose' === $secondary_nav_item->slug ) { + $bp->members->nav->edit_nav( array( + 'user_has_access' => bp_is_my_profile() + ), $secondary_nav_item->slug, bp_get_messages_slug() ); + } + } +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_messages_adjust_admin_nav( $admin_nav ) { + if ( empty( $admin_nav ) ) { + return $admin_nav; + } + + $user_messages_link = trailingslashit( bp_loggedin_user_domain() . bp_get_messages_slug() ); + + foreach ( $admin_nav as $nav_iterator => $nav ) { + $nav_id = str_replace( 'my-account-messages-', '', $nav['id'] ); + + if ( 'notices' === $nav_id ) { + $admin_nav[ $nav_iterator ]['href'] = esc_url( add_query_arg( array( + 'page' => 'bp-notices' + ), bp_get_admin_url( 'users.php' ) ) ); + } + } + + return $admin_nav; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_add_notice_notification_for_user( $notifications, $user_id ) { + if ( ! bp_is_active( 'messages' ) || ! doing_action( 'admin_bar_menu' ) ) { + return $notifications; + } + + $notice = BP_Messages_Notice::get_active(); + if ( empty( $notice->id ) ) { + return $notifications; + } + + $closed_notices = bp_get_user_meta( $user_id, 'closed_notices', true ); + if ( empty( $closed_notices ) ) { + $closed_notices = array(); + } + + if ( in_array( $notice->id, $closed_notices, true ) ) { + return $notifications; + } + + $notice_notification = new stdClass; + $notice_notification->id = 0; + $notice_notification->user_id = $user_id; + $notice_notification->item_id = $notice->id; + $notice_notification->secondary_item_id = ''; + $notice_notification->component_name = 'messages'; + $notice_notification->component_action = 'new_notice'; + $notice_notification->date_notified = $notice->date_sent; + $notice_notification->is_new = '1'; + + return array_merge( $notifications, array( $notice_notification ) ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_format_notice_notification_for_user( $array ) { + if ( ! empty( $array['text'] ) || ! doing_action( 'admin_bar_menu' ) ) { + return $array; + } + + return array( + 'text' => __( 'New sitewide notice', 'buddypress' ), + 'link' => bp_loggedin_user_domain(), + ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_unregister_notices_widget() { + unregister_widget( 'BP_Messages_Sitewide_Notices_Widget' ); +} + +/** + * Add active sitewide notices to the BP template_message global. + * + * @since 3.0.0 + */ +function bp_nouveau_push_sitewide_notices() { + // Do not show notices if user is not logged in. + if ( ! is_user_logged_in() || ! bp_is_my_profile() ) { + return; + } + + $notice = BP_Messages_Notice::get_active(); + if ( empty( $notice ) ) { + return; + } + + $user_id = bp_loggedin_user_id(); + + $closed_notices = bp_get_user_meta( $user_id, 'closed_notices', true ); + if ( empty( $closed_notices ) ) { + $closed_notices = array(); + } + + if ( $notice->id && is_array( $closed_notices ) && ! in_array( $notice->id, $closed_notices ) ) { + // Inject the notice into the template_message if no other message has priority. + $bp = buddypress(); + + if ( empty( $bp->template_message ) ) { + $message = sprintf( + '<strong class="subject">%s</strong> + %s', + stripslashes( $notice->subject ), + stripslashes( $notice->message ) + ); + $bp->template_message = $message; + $bp->template_message_type = 'bp-sitewide-notice'; + } + } +} + +/** + * Disable the WP Editor buttons not allowed in messages content. + * + * @since 3.0.0 + * + * @param array $buttons The WP Editor buttons list. + * @param array The filtered WP Editor buttons list. + */ +function bp_nouveau_messages_mce_buttons( $buttons = array() ) { + $remove_buttons = array( + 'wp_more', + 'spellchecker', + 'wp_adv', + 'fullscreen', + 'alignleft', + 'alignright', + 'aligncenter', + 'formatselect', + ); + + // Remove unused buttons + $buttons = array_diff( $buttons, $remove_buttons ); + + // Add the image button + array_push( $buttons, 'image' ); + + return $buttons; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_messages_at_on_tinymce_init( $settings, $editor_id ) { + // We only apply the mentions init to the visual post editor in the WP dashboard. + if ( 'message_content' === $editor_id ) { + $settings['init_instance_callback'] = 'window.bp.Nouveau.Messages.tinyMCEinit'; + } + + return $settings; +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_get_message_date( $date ) { + $now = bp_core_current_time( true, 'timestamp' ); + $date = strtotime( $date ); + + $now_date = getdate( $now ); + $date_date = getdate( $date ); + $compare = array_diff( $date_date, $now_date ); + $date_format = 'Y/m/d'; + + // Use Timezone string if set. + $timezone_string = bp_get_option( 'timezone_string' ); + if ( ! empty( $timezone_string ) ) { + $timezone_object = timezone_open( $timezone_string ); + $datetime_object = date_create( "@{$date}" ); + $timezone_offset = timezone_offset_get( $timezone_object, $datetime_object ) / HOUR_IN_SECONDS; + + // Fall back on less reliable gmt_offset + } else { + $timezone_offset = bp_get_option( 'gmt_offset' ); + } + + // Calculate time based on the offset + $calculated_time = $date + ( $timezone_offset * HOUR_IN_SECONDS ); + + if ( empty( $compare['mday'] ) && empty( $compare['mon'] ) && empty( $compare['year'] ) ) { + $date_format = 'H:i'; + + } elseif ( empty( $compare['mon'] ) || empty( $compare['year'] ) ) { + $date_format = 'M j'; + } + + /** + * Filters the message date for BuddyPress Nouveau display. + * + * @since 3.0.0 + * + * @param string $value Internationalization-ready formatted date value. + * @param mixed $calculated_time Calculated time. + * @param string $date Date value. + * @param string $date_format Format to convert the calcuated date to. + */ + return apply_filters( 'bp_nouveau_get_message_date', date_i18n( $date_format, $calculated_time, true ), $calculated_time, $date, $date_format ); +} + +/** + * @since 3.0.0 + */ +function bp_nouveau_messages_get_bulk_actions() { + ob_start(); + bp_messages_bulk_management_dropdown(); + + $bulk_actions = array(); + $bulk_options = ob_get_clean(); + + $matched = preg_match_all( '/<option value="(.*?)"\s*>(.*?)<\/option>/', $bulk_options, $matches, PREG_SET_ORDER ); + + if ( $matched && is_array( $matches ) ) { + foreach ( $matches as $i => $match ) { + if ( 0 === $i ) { + continue; + } + + if ( isset( $match[1] ) && isset( $match[2] ) ) { + $bulk_actions[] = array( + 'value' => trim( $match[1] ), + 'label' => trim( $match[2] ), + ); + } + } + } + + return $bulk_actions; +} + +/** + * Register notifications filters for the messages component. + * + * @since 3.0.0 + */ +function bp_nouveau_messages_notification_filters() { + bp_nouveau_notifications_register_filter( + array( + 'id' => 'new_message', + 'label' => __( 'New private messages', 'buddypress' ), + 'position' => 115, + ) + ); +} + +/** + * Fires Messages Legacy hooks to catch the content and add them + * as extra keys to the JSON Messages UI reply. + * + * @since 3.0.1 + * + * @param array $hooks The list of hooks to fire. + * @return array An associative containing the caught content. + */ +function bp_nouveau_messages_catch_hook_content( $hooks = array() ) { + $content = array(); + + ob_start(); + foreach ( $hooks as $js_key => $hook ) { + if ( ! has_action( $hook ) ) { + continue; + } + + // Fire the hook. + do_action( $hook ); + + // Catch the sanitized content. + $content[ $js_key ] = bp_strip_script_and_style_tags( ob_get_contents() ); + + // Clean the buffer. + ob_clean(); + } + ob_end_clean(); + + return $content; +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/loader.php new file mode 100644 index 0000000000000000000000000000000000000000..a041f2f6be1fe9e9c5fca58492c29ba7392949e4 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/loader.php @@ -0,0 +1,121 @@ +<?php +/** + * BP Nouveau Messages + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Messages Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Messages { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = trailingslashit( dirname( __FILE__ ) ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require $this->dir . 'functions.php'; + require $this->dir . 'template-tags.php'; + + // Test suite requires the AJAX functions early. + if ( function_exists( 'tests_add_filter' ) ) { + require $this->dir . 'ajax.php'; + + // Load AJAX code only on AJAX requests. + } else { + add_action( 'admin_init', function() { + if ( defined( 'DOING_AJAX' ) && true === DOING_AJAX && 0 === strpos( $_REQUEST['action'], 'messages_' ) ) { + require $this->dir . 'ajax.php'; + } + } ); + } + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + // Notices + add_action( 'widgets_init', 'bp_nouveau_unregister_notices_widget' ); + add_action( 'bp_init', 'bp_nouveau_push_sitewide_notices', 99 ); + + // Messages + add_action( 'bp_messages_setup_nav', 'bp_nouveau_messages_adjust_nav' ); + + // Remove deprecated scripts + remove_action( 'bp_enqueue_scripts', 'messages_add_autocomplete_js' ); + + // Enqueue the scripts for the new UI + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_messages_enqueue_scripts' ); + + // Register the Messages Notifications filters + add_action( 'bp_nouveau_notifications_init_filters', 'bp_nouveau_messages_notification_filters' ); + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + // Enqueue specific styles + add_filter( 'bp_nouveau_enqueue_styles', 'bp_nouveau_messages_enqueue_styles', 10, 1 ); + + // Register messages scripts + add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_messages_register_scripts', 10, 1 ); + + // Localize Scripts + add_filter( 'bp_core_get_js_strings', 'bp_nouveau_messages_localize_scripts', 10, 1 ); + + // Notices + add_filter( 'bp_messages_single_new_message_notification', 'bp_nouveau_format_notice_notification_for_user', 10, 1 ); + add_filter( 'bp_notifications_get_all_notifications_for_user', 'bp_nouveau_add_notice_notification_for_user', 10, 2 ); + + // Messages + add_filter( 'bp_messages_admin_nav', 'bp_nouveau_messages_adjust_admin_nav', 10, 1 ); + } +} + +/** + * Launch the Messages loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_messages( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->messages = new BP_Nouveau_Messages(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_messages', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..2176661f12102fe690fdf452ecaa035353e4a68b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/messages/template-tags.php @@ -0,0 +1,63 @@ +<?php +/** + * Messages template tags + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Fire specific hooks into the private messages template. + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_messages_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a message hook + $hook[] = 'message'; + + if ( $suffix ) { + if ( 'compose_content' === $suffix ) { + $hook[2] = 'messages'; + } + + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Load the new Messages User Interface + * + * @since 3.0.0 + */ +function bp_nouveau_messages_member_interface() { + /** + * Fires before the member messages content. + * + * @since 1.2.0 + */ + do_action( 'bp_before_member_messages_content' ); + + // Load the Private messages UI + bp_get_template_part( 'common/js-templates/messages/index' ); + + /** + * Fires after the member messages content. + * + * @since 1.2.0 + */ + do_action( 'bp_after_member_messages_content' ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..69426cd09e79dae4559eb3436cc0ee4c393a1dab --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/functions.php @@ -0,0 +1,247 @@ +<?php +/** + * Notifications functions + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Register Scripts for the Notifications component + * + * @since 3.0.0 + * + * @param array $scripts The array of scripts to register + * @return array The same array with the specific notifications scripts. + */ +function bp_nouveau_notifications_register_scripts( $scripts = array() ) { + + if ( ! isset( $scripts['bp-nouveau'] ) ) { + return $scripts; + } + + return array_merge( $scripts, array( + 'bp-nouveau-notifications' => array( + 'file' => 'js/buddypress-notifications%s.js', + 'dependencies' => array( 'bp-nouveau' ), + 'footer' => true, + ), + ) ); +} + +/** + * Enqueue the notifications scripts + * + * @since 3.0.0 + */ +function bp_nouveau_notifications_enqueue_scripts() { + + if ( ! bp_is_user_notifications() ) { + return; + } + + wp_enqueue_script( 'bp-nouveau-notifications' ); +} + +/** + * Init Notifications filters and fire a hook to let + * plugins/components register their filters. + * + * @since 3.0.0 + */ +function bp_nouveau_notifications_init_filters() { + if ( ! bp_is_user_notifications() ) { + return; + } + + bp_nouveau()->notifications->filters = array(); + + /** + * Hook here to register your custom notification filters + * + * @since 3.0.0 + */ + do_action( 'bp_nouveau_notifications_init_filters' ); +} + +/** + * Register new filters for the notifications screens. + * + * @since 3.0.0 + * + * @param array $args { + * Array of arguments. + * + * @type string $id The unique string to identify your "component action". Required. + * @type string $label The human readable notification type. Required. + * @type int $position The position to output your filter. Optional. + * } + * @return bool True if the filter has been successfully registered. False otherwise. + */ +function bp_nouveau_notifications_register_filter( $args = array() ) { + $bp_nouveau = bp_nouveau(); + + $r = wp_parse_args( $args, array( + 'id' => '', + 'label' => '', + 'position' => 99, + ) ); + + if ( empty( $r['id'] ) || empty( $r['label'] ) ) { + return false; + } + + if ( isset( $bp_nouveau->notifications->filters[ $r['id'] ] ) ) { + return false; + } + + $bp_nouveau->notifications->filters[ $r['id'] ] = $r; + return true; +} + +/** + * Get one or all notifications filters. + * + * @since 3.0.0 + * + * @param string $id The notificication component action to get the filter of. + * Leave empty to get all notifications filters. + * @return array|false All or a specific notifications parameters. False if no match are found. + */ +function bp_nouveau_notifications_get_filters( $id = '' ) { + $bp_nouveau = bp_nouveau(); + + // Get all filters + if ( empty( $id ) ) { + return $bp_nouveau->notifications->filters; + + // Get a specific filter + } elseif ( ! empty( $id ) && isset( $bp_nouveau->notifications->filters[ $id ] ) ) { + return $bp_nouveau->notifications->filters[ $id ]; + + } else { + return false; + } +} + +/** + * Sort Notifications according to their position arguments. + * + * @since 3.0.0 + * + * @param array $filters The notifications filters to order. + * @return array The sorted filters. + */ +function bp_nouveau_notifications_sort( $filters = array() ) { + $sorted = array(); + + if ( empty( $filters ) || ! is_array( $filters ) ) { + return $sorted; + } + + foreach ( $filters as $filter ) { + $position = 99; + + if ( isset( $filter['position'] ) ) { + $position = (int) $filter['position']; + } + + // If position is already taken, move to the first next available + if ( isset( $sorted[ $position ] ) ) { + $sorted_keys = array_keys( $sorted ); + + do { + $position += 1; + } while ( in_array( $position, $sorted_keys, true ) ); + } + + $sorted[ $position ] = $filter; + } + + ksort( $sorted ); + return $sorted; +} + +/** + * Add a dashicon to Notifications action links + * + * @since 3.0.0 + * + * @param string $link The action link. + * @param string $bp_tooltip The data-bp-attribute of the link. + * @param string $aria_label The aria-label attribute of the link. + * @param string $dashicon The dashicon class. + * @return string Link Output. + */ +function bp_nouveau_notifications_dashiconified_link( $link = '', $bp_tooltip = '', $dashicon = '' ) { + preg_match( '/<a\s[^>]*>(.*)<\/a>/siU', $link, $match ); + + if ( ! empty( $match[0] ) && ! empty( $match[1] ) && ! empty( $dashicon ) && ! empty( $bp_tooltip ) ) { + $link = str_replace( + '>' . $match[1] . '<', + sprintf( + ' class="bp-tooltip" data-bp-tooltip="%1$s"><span class="dashicons %2$s" aria-hidden="true"></span><span class="bp-screen-reader-text">%3$s</span><', + esc_attr( $bp_tooltip ), + sanitize_html_class( $dashicon ), + $match[1] + ), + $match[0] + ); + } + + return $link; +} + +/** + * Edit the Mark Unread action link to include a dashicon + * + * @since 3.0.0 + * + * @param string $link Optional. The Mark Unread action link. + * + * @return string Link Output. + */ +function bp_nouveau_notifications_mark_unread_link( $link = '' ) { + return bp_nouveau_notifications_dashiconified_link( + $link, + _x( 'Mark Unread', 'link', 'buddypress' ), + 'dashicons-hidden' + ); +} + +/** + * Edit the Mark Read action link to include a dashicon + * + * @since 3.0.0 + * + * @param string $link Optional. The Mark Read action link. + * + * @return string Link Output. + */ +function bp_nouveau_notifications_mark_read_link( $link = '' ) { + return bp_nouveau_notifications_dashiconified_link( + $link, + _x( 'Mark Read', 'link', 'buddypress' ), + 'dashicons-visibility' + ); +} + +/** + * Edit the Delete action link to include a dashicon + * + * @since 3.0.0 + * + * @param string $link Optional. The Delete action link. + * + * @return string Link Output. + */ +function bp_nouveau_notifications_delete_link( $link = '' ) { + return bp_nouveau_notifications_dashiconified_link( + $link, + _x( 'Delete', 'link', 'buddypress' ), + 'dashicons-dismiss' + ); +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..90e8215c77470695bef393f2b7eca9c39d9f2b69 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/loader.php @@ -0,0 +1,105 @@ +<?php +/** + * BP Nouveau Notifications + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Notifications Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_Notifications { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = dirname( __FILE__ ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + $dir = trailingslashit( $this->dir ); + + require "{$dir}functions.php"; + require "{$dir}template-tags.php"; + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + add_action( 'bp_init', 'bp_nouveau_notifications_init_filters', 20 ); + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_notifications_enqueue_scripts' ); + + $ajax_actions = array( + array( + 'notifications_filter' => array( + 'function' => 'bp_nouveau_ajax_object_template_loader', + 'nopriv' => false, + ), + ), + ); + + foreach ( $ajax_actions as $ajax_action ) { + $action = key( $ajax_action ); + + add_action( 'wp_ajax_' . $action, $ajax_action[ $action ]['function'] ); + + if ( ! empty( $ajax_action[ $action ]['nopriv'] ) ) { + add_action( 'wp_ajax_nopriv_' . $action, $ajax_action[ $action ]['function'] ); + } + } + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_notifications_register_scripts', 10, 1 ); + 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 ); + } +} + +/** + * Launch the Notifications loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_notifications( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->notifications = new BP_Nouveau_Notifications(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_notifications', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..e5029fcf65a39abcc03cdb4e1bbedb2c82f116f3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/notifications/template-tags.php @@ -0,0 +1,123 @@ +<?php +/** + * Notifications template tags + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Display the notifications filter options. + * + * @since 3.0.0 + */ +function bp_nouveau_notifications_filters() { + echo bp_nouveau_get_notifications_filters(); +} + + /** + * Get the notifications filter options. + * + * @since 3.0.0 + * + * @return string HTML output. + */ + function bp_nouveau_get_notifications_filters() { + $output = ''; + $filters = bp_nouveau_notifications_sort( bp_nouveau_notifications_get_filters() ); + $selected = 0; + + if ( ! empty( $_REQUEST['type'] ) ) { + $selected = sanitize_key( $_REQUEST['type'] ); + } + + foreach ( $filters as $filter ) { + if ( empty( $filter['id'] ) || empty( $filter['label'] ) ) { + continue; + } + + $output .= sprintf( '<option value="%1$s" %2$s>%3$s</option>', + esc_attr( sanitize_key( $filter['id'] ) ), + selected( $selected, $filter['id'], false ), + esc_html( $filter['label'] ) + ) . "\n"; + } + + if ( $output ) { + $output = sprintf( '<option value="%1$s" %2$s>%3$s</option>', + 0, + selected( $selected, 0, false ), + esc_html__( '— Everything —', 'buddypress' ) + ) . "\n" . $output; + } + + /** + * Filter to edit the options output. + * + * @since 3.0.0 + * + * @param string $output The options output. + * @param array $filters The sorted notifications filters. + */ + return apply_filters( 'bp_nouveau_get_notifications_filters', $output, $filters ); + } + +/** + * Outputs the order action links. + * + * @since 3.0.0 + */ +function bp_nouveau_notifications_sort_order_links() { + if ( 'unread' === bp_current_action() ) { + $link = bp_get_notifications_unread_permalink( bp_displayed_user_id() ); + } else { + $link = bp_get_notifications_read_permalink( bp_displayed_user_id() ); + } + + $desc = add_query_arg( 'sort_order', 'DESC', $link ); + $asc = add_query_arg( 'sort_order', 'ASC', $link ); + ?> + + <span class="notifications-order-actions"> + <a href="<?php echo esc_url( $desc ); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'Newest First', 'buddypress' ); ?>" aria-label="<?php esc_attr_e( 'Newest First', 'buddypress' ); ?>" data-bp-notifications-order="DESC"><span class="dashicons dashicons-arrow-down" aria-hidden="true"></span></a> + <a href="<?php echo esc_url( $asc ); ?>" class="bp-tooltip" data-bp-tooltip="<?php esc_attr_e( 'Oldest First', 'buddypress' ); ?>" aria-label="<?php esc_attr_e( 'Oldest First', 'buddypress' ); ?>" data-bp-notifications-order="ASC"><span class="dashicons dashicons-arrow-up" aria-hidden="true"></span></a> + </span> + + <?php +} + +/** + * Output the dropdown for bulk management of notifications. + * + * @since 3.0.0 + */ +function bp_nouveau_notifications_bulk_management_dropdown() { +?> + + <div class="select-wrap"> + + <label class="bp-screen-reader-text" for="notification-select"><?php + esc_html_e( 'Select Bulk Action', 'buddypress' ); + ?></label> + + <select name="notification_bulk_action" id="notification-select"> + <option value="" selected="selected"><?php echo esc_html( 'Bulk Actions', 'buddypress' ); ?></option> + + <?php if ( bp_is_current_action( 'unread' ) ) : ?> + <option value="read"><?php echo esc_html_x( 'Mark read', 'button', 'buddypress' ); ?></option> + <?php elseif ( bp_is_current_action( 'read' ) ) : ?> + <option value="unread"><?php echo esc_html_x( 'Mark unread', 'button', 'buddypress' ); ?></option> + <?php endif; ?> + <option value="delete"><?php echo esc_html_x( 'Delete', 'button', 'buddypress' ); ?></option> + </select> + + <span class="select-arrow"></span> + + </div><!-- // .select-wrap --> + + <input type="submit" id="notification-bulk-manage" class="button action" value="<?php echo esc_attr_x( 'Apply', 'button', 'buddypress' ); ?>"> + <?php +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..992a08887dc011d9a75e835cb56cc24d69d5bdee --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/template-tags.php @@ -0,0 +1,2479 @@ +<?php +/** + * Common template tags + * + * @since 3.0.0 + * @version 3.1.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Fire specific hooks at various places of templates + * + * @since 3.0.0 + * + * @param array $pieces The list of terms of the hook to join. + */ +function bp_nouveau_hook( $pieces = array() ) { + if ( ! $pieces ) { + return; + } + + $bp_prefix = reset( $pieces ); + if ( 'bp' !== $bp_prefix ) { + array_unshift( $pieces, 'bp' ); + } + + $hook = join( '_', $pieces ); + + /** + * Fires inside the `bp_nouveau_hook()` function. + * + * @since 3.0.0 + */ + do_action( $hook ); +} + +/** + * Fire plugin hooks in the plugins.php template (Groups and Members single items) + * + * @since 3.0.0 + * + * @param string The suffix of the hook. + */ +function bp_nouveau_plugin_hook( $suffix = '' ) { + if ( ! $suffix ) { + return; + } + + bp_nouveau_hook( + array( + 'bp', + 'template', + $suffix, + ) + ); +} + +/** + * Fire friend hooks + * + * @todo Move this into bp-nouveau/includes/friends/template-tags.php + * once we'll need other friends template tags. + * + * @since 3.0.0 + * + * @param string The suffix of the hook. + */ +function bp_nouveau_friend_hook( $suffix = '' ) { + if ( ! $suffix ) { + return; + } + + bp_nouveau_hook( + array( + 'bp', + 'friend', + $suffix, + ) + ); +} + +/** + * Add classes to style the template notice/feedback message + * + * @since 3.0.0 + */ +function bp_nouveau_template_message_classes() { + $classes = array( 'bp-feedback', 'bp-messages' ); + + if ( ! empty( bp_nouveau()->template_message['message'] ) ) { + $classes[] = 'bp-template-notice'; + } + + $classes[] = bp_nouveau_get_template_message_type(); + echo join( ' ', array_map( 'sanitize_html_class', $classes ) ); +} + + /** + * Get the template notice/feedback message type + * + * @since 3.0.0 + * + * @return string The type of the notice. Defaults to error. + */ + function bp_nouveau_get_template_message_type() { + $bp_nouveau = bp_nouveau(); + $type = 'error'; + + if ( ! empty( $bp_nouveau->template_message['type'] ) ) { + $type = $bp_nouveau->template_message['type']; + } elseif ( ! empty( $bp_nouveau->user_feedback['type'] ) ) { + $type = $bp_nouveau->user_feedback['type']; + } + + return $type; + } + +/** + * Checks if a template notice/feedback message is set + * + * @since 3.0.0 + * + * @return bool True if a template notice is set. False otherwise. + */ +function bp_nouveau_has_template_message() { + $bp_nouveau = bp_nouveau(); + + if ( empty( $bp_nouveau->template_message['message'] ) && empty( $bp_nouveau->user_feedback ) ) { + return false; + } + + return true; +} + +/** + * Checks if the template notice/feedback message needs a dismiss button + * + * @todo Dismiss button re-worked to try and prevent buttons on general + * BP template notices - Nouveau user_feedback key needs review. + * + * @since 3.0.0 + * + * @return bool True if a template notice needs a dismiss button. False otherwise. + */ +function bp_nouveau_has_dismiss_button() { + $bp_nouveau = bp_nouveau(); + + // BP template notices - set 'dismiss' true for a type in `bp_nouveau_template_notices()` + if ( ! empty( $bp_nouveau->template_message['message'] ) && true === $bp_nouveau->template_message['dismiss'] ) { + return true; + } + + // Test for isset as value can be falsey. + if ( isset( $bp_nouveau->user_feedback['dismiss'] ) ) { + return true; + } + + return false; +} + +/** + * Ouptut the dismiss type. + * + * $type is used to set the data-attr for the button. + * 'clear' is tested for & used to remove cookies, if set, in buddypress-nouveau.js. + * Currently template_notices(BP) will take $type = 'clear' if button set to true. + * + * @since 3.0.0 + */ +function bp_nouveau_dismiss_button_type() { + $bp_nouveau = bp_nouveau(); + $type = 'clear'; + + if ( ! empty( $bp_nouveau->user_feedback['dismiss'] ) ) { + $type = $bp_nouveau->user_feedback['dismiss']; + } + + echo esc_attr( $type ); +} + +/** + * Displays a template notice/feedback message. + * + * @since 3.0.0 + */ +function bp_nouveau_template_message() { + echo bp_nouveau_get_template_message(); +} + + /** + * Get the template notice/feedback message and make sure core filter is applied. + * + * @since 3.0.0 + * + * @return string HTML Output. + */ + function bp_nouveau_get_template_message() { + $bp_nouveau = bp_nouveau(); + + if ( ! empty( $bp_nouveau->user_feedback['message'] ) ) { + $user_feedback = $bp_nouveau->user_feedback['message']; + + // @TODO: why is this treated differently? + foreach ( array( 'wp_kses_data', 'wp_unslash', 'wptexturize', 'convert_smilies', 'convert_chars' ) as $filter ) { + $user_feedback = call_user_func( $filter, $user_feedback ); + } + + return '<p>' . $user_feedback . '</p>'; + + } elseif ( ! empty( $bp_nouveau->template_message['message'] ) ) { + /** + * Filters the 'template_notices' feedback message content. + * + * @since 1.5.5 + * + * @param string $template_message Feedback message content. + * @param string $type The type of message being displayed. + * Either 'updated' or 'error'. + */ + return apply_filters( 'bp_core_render_message_content', $bp_nouveau->template_message['message'], bp_nouveau_get_template_message_type() ); + } + } + +/** + * Template tag to display feedback notices to users, if there are to display + * + * @since 3.0.0 + */ +function bp_nouveau_template_notices() { + $bp = buddypress(); + $bp_nouveau = bp_nouveau(); + + if ( ! empty( $bp->template_message ) ) { + // Clone BuddyPress template message to avoid altering it. + $template_message = array( 'message' => $bp->template_message ); + + if ( ! empty( $bp->template_message_type ) ) { + $template_message['type'] = $bp->template_message_type; + } + + // Adds a 'dimiss' (button) key to array - set true/false. + $template_message['dismiss'] = false; + + // Set dismiss button true for sitewide notices + if ( 'bp-sitewide-notice' == $template_message['type'] ) { + $template_message['dismiss'] = true; + } + + $bp_nouveau->template_message = $template_message; + bp_get_template_part( 'common/notices/template-notices' ); + + // Reset just after rendering it. + $bp_nouveau->template_message = array(); + + /** + * Fires after the display of any template_notices feedback messages. + * + * @since 3.0.0 + */ + do_action( 'bp_core_render_message' ); + } + + /** + * Fires towards the top of template pages for notice display. + * + * @since 3.0.0 + */ + do_action( 'template_notices' ); +} + +/** + * Displays a feedback message to the user. + * + * @since 3.0.0 + * + * @param string $feedback_id The ID of the message to display + */ +function bp_nouveau_user_feedback( $feedback_id = '' ) { + if ( ! isset( $feedback_id ) ) { + return; + } + + $bp_nouveau = bp_nouveau(); + $feedback = bp_nouveau_get_user_feedback( $feedback_id ); + + if ( ! $feedback ) { + return; + } + + if ( ! empty( $feedback['before'] ) ) { + + /** + * Fires before display of a feedback message to the user. + * + * This is a dynamic filter that is dependent on the "before" value provided by bp_nouveau_get_user_feedback(). + * + * @since 3.0.0 + */ + do_action( $feedback['before'] ); + } + + $bp_nouveau->user_feedback = $feedback; + + bp_get_template_part( + + /** + * Filter here if you wish to use a different templates than the notice one. + * + * @since 3.0.0 + * + * @param string path to your template part. + */ + apply_filters( 'bp_nouveau_user_feedback_template', 'common/notices/template-notices' ) + ); + + if ( ! empty( $feedback['after'] ) ) { + + /** + * Fires before display of a feedback message to the user. + * + * This is a dynamic filter that is dependent on the "after" value provided by bp_nouveau_get_user_feedback(). + * + * @since 3.0.0 + */ + do_action( $feedback['after'] ); + } + + // Reset the feedback message. + $bp_nouveau->user_feedback = array(); +} + +/** + * Template tag to wrap the before component loop + * + * @since 3.0.0 + */ +function bp_nouveau_before_loop() { + $component = bp_current_component(); + + if ( bp_is_group() ) { + $component = bp_current_action(); + } + + /** + * Fires before the start of the component loop. + * + * This is a variable hook that is dependent on the current component. + * + * @since 1.2.0 + */ + do_action( "bp_before_{$component}_loop" ); +} + +/** + * Template tag to wrap the after component loop + * + * @since 3.0.0 + */ +function bp_nouveau_after_loop() { + $component = bp_current_component(); + + if ( bp_is_group() ) { + $component = bp_current_action(); + } + + /** + * Fires after the finish of the component loop. + * + * This is a variable hook that is dependent on the current component. + * + * @since 1.2.0 + */ + do_action( "bp_after_{$component}_loop" ); +} + +/** + * Pagination for loops + * + * @param string $position + * + * @since 3.0.0 + */ +function bp_nouveau_pagination( $position ) { + $screen = 'dir'; + $pagination_type = bp_current_component(); + + if ( bp_is_user() ) { + $screen = 'user'; + + } elseif ( bp_is_group() ) { + $screen = 'group'; + $pagination_type = bp_current_action(); + + if ( bp_is_group_admin_page() ) { + $pagination_type = bp_action_variable( 0 ); + } + } + + switch ( $pagination_type ) { + case 'blogs': + $pag_count = bp_get_blogs_pagination_count(); + $pag_links = bp_get_blogs_pagination_links(); + $top_hook = 'bp_before_directory_blogs_list'; + $bottom_hook = 'bp_after_directory_blogs_list'; + $page_arg = $GLOBALS['blogs_template']->pag_arg; + break; + + case 'members': + case 'friends': + case 'manage-members': + $pag_count = bp_get_members_pagination_count(); + $pag_links = bp_get_members_pagination_links(); + + // Groups single items are not using these hooks + if ( ! bp_is_group() ) { + $top_hook = 'bp_before_directory_members_list'; + $bottom_hook = 'bp_after_directory_members_list'; + } + + $page_arg = $GLOBALS['members_template']->pag_arg; + break; + + case 'groups': + $pag_count = bp_get_groups_pagination_count(); + $pag_links = bp_get_groups_pagination_links(); + $top_hook = 'bp_before_directory_groups_list'; + $bottom_hook = 'bp_after_directory_groups_list'; + $page_arg = $GLOBALS['groups_template']->pag_arg; + break; + + case 'notifications': + $pag_count = bp_get_notifications_pagination_count(); + $pag_links = bp_get_notifications_pagination_links(); + $top_hook = ''; + $bottom_hook = ''; + $page_arg = buddypress()->notifications->query_loop->pag_arg; + break; + + case 'membership-requests': + $pag_count = bp_get_group_requests_pagination_count(); + $pag_links = bp_get_group_requests_pagination_links(); + $top_hook = ''; + $bottom_hook = ''; + $page_arg = $GLOBALS['requests_template']->pag_arg; + break; + } + + $count_class = sprintf( '%1$s-%2$s-count-%3$s', $pagination_type, $screen, $position ); + $links_class = sprintf( '%1$s-%2$s-links-%3$s', $pagination_type, $screen, $position ); + ?> + + <?php + if ( 'bottom' === $position && isset( $bottom_hook ) ) { + /** + * Fires after the component directory list. + * + * @since 3.0.0 + */ + do_action( $bottom_hook ); + }; + ?> + + <div class="<?php echo esc_attr( 'bp-pagination ' . sanitize_html_class( $position ) ); ?>" data-bp-pagination="<?php echo esc_attr( $page_arg ); ?>"> + + <?php if ( $pag_count ) : ?> + <div class="<?php echo esc_attr( 'pag-count ' . sanitize_html_class( $position ) ); ?>"> + + <p class="pag-data"> + <?php echo esc_html( $pag_count ); ?> + </p> + + </div> + <?php endif; ?> + + <?php if ( $pag_links ) : ?> + <div class="<?php echo esc_attr( 'bp-pagination-links ' . sanitize_html_class( $position ) ); ?>"> + + <p class="pag-data"> + <?php echo wp_kses_post( $pag_links ); ?> + </p> + + </div> + <?php endif; ?> + + </div> + + <?php + if ( 'top' === $position && isset( $top_hook ) ) { + /** + * Fires before the component directory list. + * + * @since 3.0.0 + */ + do_action( $top_hook ); + }; +} + +/** + * Display the component's loop classes + * + * @since 3.0.0 + * + * @return string CSS class attributes (escaped). + */ +function bp_nouveau_loop_classes() { + echo esc_attr( bp_nouveau_get_loop_classes() ); +} + + /** + * Get the component's loop classes + * + * @since 3.0.0 + * + * @return string space separated value of classes. + */ + function bp_nouveau_get_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 + + // The $component is faked if it's the single group member loop + if ( ! bp_is_directory() && ( bp_is_group() && 'members' === bp_current_action() ) ) { + $component = 'members_group'; + } elseif ( ! bp_is_directory() && ( bp_is_user() && 'my-friends' === bp_current_action() ) ) { + $component = 'members_friends'; + } else { + $component = sanitize_key( bp_current_component() ); + } + + $classes = array( + 'item-list', + sprintf( '%s-list', str_replace( '_', '-', $component ) ), + 'bp-list', + ); + + if ( bp_is_user() && 'my-friends' === bp_current_action() ) { + $classes[] = 'members-list'; + } + + if ( bp_is_user() && 'requests' === bp_current_action() ) { + $classes[] = 'friends-request-list'; + } + + $available_components = array( + 'members' => true, + 'groups' => true, + 'blogs' => true, + + /* + * Technically not a component but allows us to check the single group members loop as a seperate loop. + */ + 'members_group' => true, + 'members_friends' => true, + ); + + // Only the available components supports custom layouts. + if ( ! empty( $available_components[ $component ] ) && ( bp_is_directory() || bp_is_group() || bp_is_user() ) ) { + $customizer_option = sprintf( '%s_layout', $component ); + $layout_prefs = bp_nouveau_get_temporary_setting( + $customizer_option, + bp_nouveau_get_appearance_settings( $customizer_option ) + ); + + if ( $layout_prefs && (int) $layout_prefs > 1 ) { + $grid_classes = bp_nouveau_customizer_grid_choices( 'classes' ); + + if ( isset( $grid_classes[ $layout_prefs ] ) ) { + $classes = array_merge( $classes, array( + 'grid', + $grid_classes[ $layout_prefs ], + ) ); + } + + // Set the global for a later use. + $bp_nouveau->{$component}->loop_layout = $layout_prefs; + } + } + + /** + * Filter to edit/add classes. + * + * NB: you can also directly add classes into the template parts. + * + * @since 3.0.0 + * + * @param array $classes The list of classes. + * @param string $component The current component's loop. + */ + $class_list = (array) apply_filters( 'bp_nouveau_get_loop_classes', $classes, $component ); + + return join( ' ', array_map( 'sanitize_html_class', $class_list ) ); + } + + +/** + * Checks if the layout preferences is set to grid (2 or more columns). + * + * @since 3.0.0 + * + * @return bool True if loop is displayed in grid mod. False otherwise. + */ +function bp_nouveau_loop_is_grid() { + $bp_nouveau = bp_nouveau(); + $component = sanitize_key( bp_current_component() ); + + return ! empty( $bp_nouveau->{$component}->loop_layout ) && $bp_nouveau->{$component}->loop_layout > 1; +} + +/** + * Returns the number of columns of the layout preferences. + * + * @since 3.0.0 + * + * @return int The number of columns. + */ +function bp_nouveau_loop_get_grid_columns() { + $bp_nouveau = bp_nouveau(); + $component = sanitize_key( bp_current_component() ); + + $columns = 1; + + if ( ! empty( $bp_nouveau->{$component}->loop_layout ) ) { + $columns = (int) $bp_nouveau->{$component}->loop_layout; + } + + /** + * Filter number of columns for this grid. + * + * @since 3.0.0 + * + * @param int $columns The number of columns. + */ + return (int) apply_filters( 'bp_nouveau_loop_get_grid_columns', $columns ); +} + +/** + * Return a bool check for component directory layout. + * + * Checks if activity, members, groups, blogs has the vert nav layout selected. + * + * @since 3.0.0 + * + * @return bool + */ +function bp_dir_is_vert_layout() { + $bp_nouveau = bp_nouveau(); + $component = sanitize_key( bp_current_component() ); + + return (bool) $bp_nouveau->{$component}->directory_vertical_layout; +} + +/** + * Get the full size avatar args. + * + * @since 3.0.0 + * + * @return array The avatar arguments. + */ +function bp_nouveau_avatar_args() { + /** + * Filter arguments for full-size avatars. + * + * @since 3.0.0 + * + * @param array $args { + * @param string $type Avatar type. + * @param int $width Avatar width value. + * @param int $height Avatar height value. + * } + */ + return apply_filters( 'bp_nouveau_avatar_args', array( + 'type' => 'full', + 'width' => bp_core_avatar_full_width(), + 'height' => bp_core_avatar_full_height(), + ) ); +} + + +/** Template Tags for BuddyPress navigations **********************************/ + +/* + * This is the BP Nouveau Navigation Loop. + * + * It can be used by any object using the + * BP_Core_Nav API introduced in BuddyPress 2.6.0. + */ + +/** + * Init the Navigation Loop and check it has items. + * + * @since 3.0.0 + * + * @param array $args { + * Array of arguments. + * + * @type string $type The type of Nav to get (primary or secondary) + * Default 'primary'. Required. + * @type string $object The object to get the nav for (eg: 'directory', 'group_manage', + * or any custom object). Default ''. Optional + * @type bool $user_has_access Used by the secondary member's & group's nav. Default true. Optional. + * @type bool $show_for_displayed_user Used by the primary member's nav. Default true. Optional. + * } + * + * @return bool True if the Nav contains items. False otherwise. + */ +function bp_nouveau_has_nav( $args = array() ) { + $bp_nouveau = bp_nouveau(); + + $n = wp_parse_args( $args, array( + 'type' => 'primary', + 'object' => '', + 'user_has_access' => true, + 'show_for_displayed_user' => true, + ) ); + + if ( empty( $n['type'] ) ) { + return false; + } + + $nav = array(); + $bp_nouveau->displayed_nav = ''; + $bp_nouveau->object_nav = $n['object']; + + if ( bp_is_directory() || 'directory' === $bp_nouveau->object_nav ) { + $bp_nouveau->displayed_nav = 'directory'; + $nav = $bp_nouveau->directory_nav->get_primary(); + + // So far it's only possible to build a Group nav when displaying it. + } elseif ( bp_is_group() ) { + $bp_nouveau->displayed_nav = 'groups'; + $parent_slug = bp_get_current_group_slug(); + $group_nav = buddypress()->groups->nav; + + if ( 'group_manage' === $bp_nouveau->object_nav && bp_is_group_admin_page() ) { + $parent_slug .= '_manage'; + + /** + * If it's not the Admin tabs, reorder the Group's nav according to the + * customizer setting. + */ + } else { + bp_nouveau_set_nav_item_order( $group_nav, bp_nouveau_get_appearance_settings( 'group_nav_order' ), $parent_slug ); + } + + $nav = $group_nav->get_secondary( + array( + 'parent_slug' => $parent_slug, + 'user_has_access' => (bool) $n['user_has_access'], + ) + ); + + // Build the nav for the displayed user + } elseif ( bp_is_user() ) { + $bp_nouveau->displayed_nav = 'personal'; + $user_nav = buddypress()->members->nav; + + if ( 'secondary' === $n['type'] ) { + $nav = $user_nav->get_secondary( + array( + 'parent_slug' => bp_current_component(), + 'user_has_access' => (bool) $n['user_has_access'], + ) + ); + + } else { + $args = array(); + + if ( true === (bool) $n['show_for_displayed_user'] && ! bp_is_my_profile() ) { + $args = array( 'show_for_displayed_user' => true ); + } + + // Reorder the user's primary nav according to the customizer setting. + bp_nouveau_set_nav_item_order( $user_nav, bp_nouveau_get_appearance_settings( 'user_nav_order' ) ); + + $nav = $user_nav->get_primary( $args ); + } + + } elseif ( ! empty( $bp_nouveau->object_nav ) ) { + $bp_nouveau->displayed_nav = $bp_nouveau->object_nav; + + /** + * Use the filter to use your specific Navigation. + * Use the $n param to check for your custom object. + * + * @since 3.0.0 + * + * @param array $nav The list of item navigations generated by the BP_Core_Nav API. + * @param array $n The arguments of the Navigation loop. + */ + $nav = apply_filters( 'bp_nouveau_get_nav', $nav, $n ); + + } + + // The navigation can be empty. + if ( $nav === false ) { + $nav = array(); + } + + $bp_nouveau->sorted_nav = array_values( $nav ); + + if ( 0 === count( $bp_nouveau->sorted_nav ) || ! $bp_nouveau->displayed_nav ) { + unset( $bp_nouveau->sorted_nav, $bp_nouveau->displayed_nav, $bp_nouveau->object_nav ); + + return false; + } + + $bp_nouveau->current_nav_index = 0; + return true; +} + +/** + * Checks there are still nav items to display. + * + * @since 3.0.0 + * + * @return bool True if there are still items to display. False otherwise. + */ +function bp_nouveau_nav_items() { + $bp_nouveau = bp_nouveau(); + + if ( isset( $bp_nouveau->sorted_nav[ $bp_nouveau->current_nav_index ] ) ) { + return true; + } + + $bp_nouveau->current_nav_index = 0; + unset( $bp_nouveau->current_nav_item ); + + return false; +} + +/** + * Sets the current nav item and prepare the navigation loop to iterate to next one. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_item() { + $bp_nouveau = bp_nouveau(); + + $bp_nouveau->current_nav_item = $bp_nouveau->sorted_nav[ $bp_nouveau->current_nav_index ]; + $bp_nouveau->current_nav_index += 1; +} + +/** + * Displays the nav item ID. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_id() { + echo esc_attr( bp_nouveau_get_nav_id() ); +} + + /** + * Retrieve the ID attribute of the current nav item. + * + * @since 3.0.0 + * + * @return string the ID attribute. + */ + function bp_nouveau_get_nav_id() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + + if ( 'directory' === $bp_nouveau->displayed_nav ) { + $id = sprintf( '%1$s-%2$s', $nav_item->component, $nav_item->slug ); + } elseif ( 'groups' === $bp_nouveau->displayed_nav || 'personal' === $bp_nouveau->displayed_nav ) { + $id = sprintf( '%1$s-%2$s-li', $nav_item->css_id, $bp_nouveau->displayed_nav ); + } else { + $id = $nav_item->slug; + } + + /** + * Filter to edit the ID attribute of the nav. + * + * @since 3.0.0 + * + * @param string $id The ID attribute of the nav. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return apply_filters( 'bp_nouveau_get_nav_id', $id, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** + * Displays the nav item classes. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_classes() { + echo esc_attr( bp_nouveau_get_nav_classes() ); +} + + /** + * Retrieve a space separated list of classes for the current nav item. + * + * @since 3.0.0 + * + * @return string List of classes. + */ + function bp_nouveau_get_nav_classes() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $classes = array(); + + if ( 'directory' === $bp_nouveau->displayed_nav && ! empty( $nav_item->li_class ) ) { + $classes = (array) $nav_item->li_class; + } elseif ( 'groups' === $bp_nouveau->displayed_nav || 'personal' === $bp_nouveau->displayed_nav ) { + $classes = array( 'bp-' . $bp_nouveau->displayed_nav . '-tab' ); + $selected = bp_current_action(); + + // User's primary nav + if ( ! empty( $nav_item->primary ) ) { + $selected = bp_current_component(); + + // Group Admin Tabs. + } elseif ( 'group_manage' === $bp_nouveau->object_nav ) { + $selected = bp_action_variable( 0 ); + $classes = array( 'bp-' . $bp_nouveau->displayed_nav . '-admin-tab' ); + + // If we are here, it's the member's subnav + } elseif ( 'personal' === $bp_nouveau->displayed_nav ) { + $classes = array( 'bp-' . $bp_nouveau->displayed_nav . '-sub-tab' ); + } + + if ( $nav_item->slug === $selected ) { + $classes = array_merge( $classes, array( 'current', 'selected' ) ); + } + } + + if ( ! empty( $classes ) ) { + $classes = array_map( 'sanitize_html_class', $classes ); + } + + /** + * Filter to edit/add classes. + * + * NB: you can also directly add classes into the template parts. + * + * @since 3.0.0 + * + * @param string $value A space separated list of classes. + * @param array $classes The list of classes. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + $classes_list = apply_filters( 'bp_nouveau_get_classes', join( ' ', $classes ), $classes, $nav_item, $bp_nouveau->displayed_nav ); + if ( ! $classes_list ) { + $classes_list = ''; + } + + return $classes_list; + } + +/** + * Displays the nav item scope. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_scope() { + echo bp_nouveau_get_nav_scope(); // Escaped by bp_get_form_field_attributes(). +} + + /** + * Retrieve the specific scope for the current nav item. + * + * @since 3.0.0 + * + * @return string the specific scope of the nav. + */ + function bp_nouveau_get_nav_scope() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $scope = array(); + + if ( 'directory' === $bp_nouveau->displayed_nav ) { + $scope = array( 'data-bp-scope' => $nav_item->slug ); + + } elseif ( 'personal' === $bp_nouveau->displayed_nav && ! empty( $nav_item->secondary ) ) { + $scope = array( 'data-bp-user-scope' => $nav_item->slug ); + + } else { + /** + * Filter to add your own scope. + * + * @since 3.0.0 + * + * @param array $scope Contains the key and the value for your scope. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + $scope = apply_filters( 'bp_nouveau_set_nav_scope', $scope, $nav_item, $bp_nouveau->displayed_nav ); + } + + if ( ! $scope ) { + return ''; + } + + return bp_get_form_field_attributes( 'scope', $scope ); + } + +/** + * Displays the nav item URL. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_link() { + echo esc_url( bp_nouveau_get_nav_link() ); +} + + /** + * Retrieve the URL for the current nav item. + * + * @since 3.0.0 + * + * @return string The URL for the nav item. + */ + function bp_nouveau_get_nav_link() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + + $link = '#'; + if ( ! empty( $nav_item->link ) ) { + $link = $nav_item->link; + } + + if ( 'personal' === $bp_nouveau->displayed_nav && ! empty( $nav_item->primary ) ) { + if ( bp_loggedin_user_domain() ) { + $link = str_replace( bp_loggedin_user_domain(), bp_displayed_user_domain(), $link ); + } else { + $link = trailingslashit( bp_displayed_user_domain() . $link ); + } + } + + /** + * Filter to edit the URL of the nav item. + * + * @since 3.0.0 + * + * @param string $link The URL for the nav item. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return apply_filters( 'bp_nouveau_get_nav_link', $link, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** + * Displays the nav item link ID. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_link_id() { + echo esc_attr( bp_nouveau_get_nav_link_id() ); +} + + /** + * Retrieve the id attribute of the link for the current nav item. + * + * @since 3.0.0 + * + * @return string The link id for the nav item. + */ + function bp_nouveau_get_nav_link_id() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $link_id = ''; + + if ( ( 'groups' === $bp_nouveau->displayed_nav || 'personal' === $bp_nouveau->displayed_nav ) && ! empty( $nav_item->css_id ) ) { + $link_id = $nav_item->css_id; + + if ( ! empty( $nav_item->primary ) && 'personal' === $bp_nouveau->displayed_nav ) { + $link_id = 'user-' . $link_id; + } + } else { + $link_id = $nav_item->slug; + } + + /** + * Filter to edit the link id attribute of the nav. + * + * @since 3.0.0 + * + * @param string $link_id The link id attribute for the nav item. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return apply_filters( 'bp_nouveau_get_nav_link_id', $link_id, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** + * Displays the nav item link title. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_link_title() { + echo esc_attr( bp_nouveau_get_nav_link_title() ); +} + + /** + * Retrieve the title attribute of the link for the current nav item. + * + * @since 3.0.0 + * + * @return string The link title for the nav item. + */ + function bp_nouveau_get_nav_link_title() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $title = ''; + + if ( 'directory' === $bp_nouveau->displayed_nav && ! empty( $nav_item->title ) ) { + $title = $nav_item->title; + + } elseif ( + ( 'groups' === $bp_nouveau->displayed_nav || 'personal' === $bp_nouveau->displayed_nav ) + && + ! empty( $nav_item->name ) + ) { + $title = $nav_item->name; + } + + /** + * Filter to edit the link title attribute of the nav. + * + * @since 3.0.0 + * + * @param string $title The link title attribute for the nav item. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return apply_filters( 'bp_nouveau_get_nav_link_title', $title, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** + * Displays the nav item link html text. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_link_text() { + echo esc_html( bp_nouveau_get_nav_link_text() ); +} + + /** + * Retrieve the html text of the link for the current nav item. + * + * @since 3.0.0 + * + * @return string The html text for the nav item. + */ + function bp_nouveau_get_nav_link_text() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $link_text = ''; + + if ( 'directory' === $bp_nouveau->displayed_nav && ! empty( $nav_item->text ) ) { + $link_text = _bp_strip_spans_from_title( $nav_item->text ); + + } elseif ( + ( 'groups' === $bp_nouveau->displayed_nav || 'personal' === $bp_nouveau->displayed_nav ) + && + ! empty( $nav_item->name ) + ) { + $link_text = _bp_strip_spans_from_title( $nav_item->name ); + } + + /** + * Filter to edit the html text of the nav. + * + * @since 3.0.0 + * + * @param string $link_text The html text of the nav item. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return apply_filters( 'bp_nouveau_get_nav_link_text', $link_text, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** + * Checks if the nav item has a count attribute. + * + * @since 3.0.0 + * + * @return bool + */ +function bp_nouveau_nav_has_count() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $count = false; + + if ( 'directory' === $bp_nouveau->displayed_nav ) { + $count = $nav_item->count; + } elseif ( 'groups' === $bp_nouveau->displayed_nav && 'members' === $nav_item->slug ) { + $count = 0 !== (int) groups_get_current_group()->total_member_count; + } elseif ( 'personal' === $bp_nouveau->displayed_nav && ! empty( $nav_item->primary ) ) { + $count = (bool) strpos( $nav_item->name, '="count"' ); + } + + /** + * Filter to edit whether the nav has a count attribute. + * + * @since 3.0.0 + * + * @param bool $value True if the nav has a count attribute. False otherwise + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return (bool) apply_filters( 'bp_nouveau_nav_has_count', false !== $count, $nav_item, $bp_nouveau->displayed_nav ); +} + +/** + * Displays the nav item count attribute. + * + * @since 3.0.0 + */ +function bp_nouveau_nav_count() { + echo esc_html( number_format_i18n( bp_nouveau_get_nav_count() ) ); +} + + /** + * Retrieve the count attribute for the current nav item. + * + * @since 3.0.0 + * + * @return int The count attribute for the nav item. + */ + function bp_nouveau_get_nav_count() { + $bp_nouveau = bp_nouveau(); + $nav_item = $bp_nouveau->current_nav_item; + $count = 0; + + if ( 'directory' === $bp_nouveau->displayed_nav ) { + $count = (int) $nav_item->count; + + } elseif ( 'groups' === $bp_nouveau->displayed_nav && 'members' === $nav_item->slug ) { + $count = groups_get_current_group()->total_member_count; + + // @todo imho BuddyPress shouldn't add html tags inside Nav attributes... + } elseif ( 'personal' === $bp_nouveau->displayed_nav && ! empty( $nav_item->primary ) ) { + $span = strpos( $nav_item->name, '<span' ); + + // Grab count out of the <span> element. + if ( false !== $span ) { + $count_start = strpos( $nav_item->name, '>', $span ) + 1; + $count_end = strpos( $nav_item->name, '<', $count_start ); + $count = (int) substr( $nav_item->name, $count_start, $count_end - $count_start ); + } + } + + /** + * Filter to edit the count attribute for the nav item. + * + * @since 3.0.0 + * + * @param int $count The count attribute for the nav item. + * @param object $nav_item The current nav item object. + * @param string $value The current nav in use (eg: 'directory', 'groups', 'personal', etc..). + */ + return (int) apply_filters( 'bp_nouveau_get_nav_count', $count, $nav_item, $bp_nouveau->displayed_nav ); + } + +/** Template tags specific to the Directory navs ******************************/ + +/** + * Displays the directory nav class. + * + * @since 3.0.0 + */ +function bp_nouveau_directory_type_navs_class() { + echo esc_attr( bp_nouveau_get_directory_type_navs_class() ); +} + + /** + * Provides default nav wrapper classes. + * + * Gets the directory component nav class. + * Gets user selection Customizer options. + * + * @since 3.0.0 + * + * @return string + */ + function bp_nouveau_get_directory_type_navs_class() { + $component = sanitize_key( bp_current_component() ); + + // If component is 'blogs' we need to access options as 'Sites'. + if ('blogs' === $component) { + $component = 'sites'; + }; + + $customizer_option = sprintf( '%s_dir_tabs', $component ); + $nav_style = bp_nouveau_get_temporary_setting( $customizer_option, bp_nouveau_get_appearance_settings( $customizer_option ) ); + $tab_style = ''; + + if ( 1 === $nav_style ) { + $tab_style = $component . '-nav-tabs'; + } + + $nav_wrapper_classes = array( + sprintf( '%s-type-navs', $component ), + 'main-navs', + 'bp-navs', + 'dir-navs', + $tab_style + ); + + /** + * Filter to edit/add classes. + * + * NB: you can also directly add classes to the class attr. + * + * @since 3.0.0 + * + * @param array $nav_wrapper_classes The list of classes. + */ + $nav_wrapper_classes = (array) apply_filters( 'bp_nouveau_get_directory_type_navs_class', $nav_wrapper_classes ); + + return join( ' ', array_map( 'sanitize_html_class', $nav_wrapper_classes ) ); + } + +/** + * Displays the directory nav item list class. + * + * @since 3.0.0 + */ +function bp_nouveau_directory_list_class() { + echo esc_attr( bp_nouveau_get_directory_list_class() ); +} + + /** + * Gets the directory nav item list class. + * + * @since 3.0.0 + * + * @return string + */ + function bp_nouveau_get_directory_list_class() { + return sanitize_html_class( sprintf( '%s-nav', bp_current_component() ) ); + } + +/** + * Displays the directory nav item object (data-bp attribute). + * + * @since 3.0.0 + */ +function bp_nouveau_directory_nav_object() { + $obj = bp_nouveau_get_directory_nav_object(); + + if ( ! is_null( $obj ) ) { + echo esc_attr( $obj ); + } +} + + /** + * Gets the directory nav item object. + * + * @see BP_Component::setup_nav(). + * + * @since 3.0.0 + * + * @return array + */ + function bp_nouveau_get_directory_nav_object() { + $nav_item = bp_nouveau()->current_nav_item; + + if ( ! $nav_item->component ) { + return null; + } + + return $nav_item->component; + } + + +// Template tags for the single item navs. + +/** + * Output main BuddyPress container classes. + * + * @since 3.0.0 + * + * @return string CSS classes + */ +function bp_nouveau_container_classes() { + echo esc_attr( bp_nouveau_get_container_classes() ); +} + + /** + * Returns the main BuddyPress container classes. + * + * @since 3.0.0 + * + * @return string CSS classes + */ + function bp_nouveau_get_container_classes() { + $classes = array( 'buddypress-wrap' ); + $component = bp_current_component(); + $bp_nouveau = bp_nouveau(); + $member_type_class = ''; + + if ( bp_is_user() ) { + $customizer_option = 'user_nav_display'; + $component = 'members'; + $user_type = bp_get_member_type( bp_displayed_user_id() ); + $member_type_class = ( $user_type )? $user_type : ''; + + } elseif ( bp_is_group() ) { + $customizer_option = 'group_nav_display'; + + } elseif ( bp_is_directory() ) { + switch ( $component ) { + case 'activity': + $customizer_option = 'activity_dir_layout'; + break; + + case 'members': + $customizer_option = 'members_dir_layout'; + break; + + case 'groups': + $customizer_option = 'groups_dir_layout'; + break; + + case 'blogs': + $customizer_option = 'sites_dir_layout'; + break; + + default: + $customizer_option = ''; + break; + } + + } else { + /** + * Filters the BuddyPress Nouveau single item setting ID. + * + * @since 3.0.0 + * + * @param string $value Setting ID. + */ + $customizer_option = apply_filters( 'bp_nouveau_single_item_display_settings_id', '' ); + } + + if ( $member_type_class ) { + $classes[] = $member_type_class; + } + + // Provide a class token to acknowledge additional extended profile fields added to default account reg screen + if ( 'register' === bp_current_component() && bp_is_active( 'xprofile' ) && bp_nouveau_base_account_has_xprofile()) { + $classes[] = 'extended-default-reg'; + } + + // Add classes according to site owners preferences. These are options set via Customizer. + + // These are general site wide Cust options falling outside component checks + $general_settings = bp_nouveau_get_temporary_setting( 'avatar_style', bp_nouveau_get_appearance_settings( 'avatar_style' ) ); + if ( $general_settings ) { + $classes[] = 'round-avatars'; + } + + // Set via earlier switch for component check to provide correct option key. + if ( $customizer_option ) { + $layout_prefs = bp_nouveau_get_temporary_setting( $customizer_option, bp_nouveau_get_appearance_settings( $customizer_option ) ); + + if ( $layout_prefs && (int) $layout_prefs === 1 && ( bp_is_user() || bp_is_group() ) ) { + $classes[] = 'bp-single-vert-nav'; + $classes[] = 'bp-vertical-navs'; + } + + if ( $layout_prefs && bp_is_directory() ) { + $classes[] = 'bp-dir-vert-nav'; + $classes[] = 'bp-vertical-navs'; + $bp_nouveau->{$component}->directory_vertical_layout = $layout_prefs; + } else { + $classes[] = 'bp-dir-hori-nav'; + } + } + + $class = array_map( 'sanitize_html_class', $classes ); + + /** + * Filters the final results for BuddyPress Nouveau container classes. + * + * This filter will return a single string of concatenated classes to be used. + * + * @since 3.0.0 + * + * @param string $value Concatenated classes. + * @param array $classes Array of classes that were concatenated. + */ + return apply_filters( 'bp_nouveau_get_container_classes', join( ' ', $class ), $classes ); + } + +/** + * Output single item nav container classes + * + * @since 3.0.0 + * + * @return string CSS classes + */ +function bp_nouveau_single_item_nav_classes() { + echo esc_attr( bp_nouveau_get_single_item_nav_classes() ); +} + + /** + * Returns the single item nav container classes + * + * @since 3.0.0 + * + * @return string CSS classes + */ + function bp_nouveau_get_single_item_nav_classes() { + $classes = array( 'main-navs', 'no-ajax', 'bp-navs', 'single-screen-navs' ); + $component = bp_current_component(); + $bp_nouveau = bp_nouveau(); + + // @todo wasn't able to get $customizer_option to pass a string to get_settings + // this is a temp workaround but differs from earlier dir approach- bad! + if ( bp_is_group() ) { + $nav_tabs = (int) bp_nouveau_get_temporary_setting( 'group_nav_tabs', bp_nouveau_get_appearance_settings( 'group_nav_tabs' ) ); + + } elseif ( bp_is_user() ) { + $nav_tabs = (int) bp_nouveau_get_temporary_setting( 'user_nav_tabs', bp_nouveau_get_appearance_settings( 'user_nav_tabs' ) ); + } + + if ( bp_is_group() && 1 === $nav_tabs) { + $classes[] = 'group-nav-tabs'; + $classes[] = 'tabbed-links'; + } elseif ( bp_is_user() && 1 === $nav_tabs ) { + $classes[] = 'user-nav-tabs'; + $classes[] = 'tabbed-links'; + } + + if ( bp_is_user() ) { + $component = 'members'; + $menu_type = 'users-nav'; + } else { + $menu_type = 'groups-nav'; + } + + $customizer_option = ( bp_is_user() )? 'user_nav_display' : 'group_nav_display'; + + $layout_prefs = (int) bp_nouveau_get_temporary_setting( $customizer_option, bp_nouveau_get_appearance_settings( $customizer_option ) ); + + // Set the global for a later use - this is moved from the `bp_nouveau_get_container_classes() + // But was set as a check for this array class addition. + $bp_nouveau->{$component}->single_primary_nav_layout = $layout_prefs; + + if ( 1 === $layout_prefs ) { + $classes[] = 'vertical'; + } else { + $classes[] = 'horizontal'; + } + + $classes[] = $menu_type; + $class = array_map( 'sanitize_html_class', $classes ); + + /** + * Filters the final results for BuddyPress Nouveau single item nav classes. + * + * This filter will return a single string of concatenated classes to be used. + * + * @since 3.0.0 + * + * @param string $value Concatenated classes. + * @param array $classes Array of classes that were concatenated. + */ + return apply_filters( 'bp_nouveau_get_single_item_nav_classes', join( ' ', $class ), $classes ); + } + +/** + * Output single item subnav container classes. + * + * @since 3.0.0 + * + * @return string CSS classes + */ +function bp_nouveau_single_item_subnav_classes() { + echo esc_attr( bp_nouveau_get_single_item_subnav_classes() ); +} + + /** + * Returns the single item subnav container classes. + * + * @since 3.0.0 + * + * @return string CSS classes + */ + function bp_nouveau_get_single_item_subnav_classes() { + $classes = array( 'bp-navs', 'bp-subnavs', 'no-ajax' ); + + // Set user or group class string + if ( bp_is_user() ) { + $classes[] = 'user-subnav'; + } + + if ( bp_is_group() ) { + $classes[] = 'group-subnav'; + } + + if ( ( bp_is_group() && 'send-invites' === bp_current_action() ) || ( bp_is_group_create() && 'group-invites' === bp_get_groups_current_create_step() ) ) { + $classes[] = 'bp-invites-nav'; + } + + $customizer_option = ( bp_is_user() )? 'user_subnav_tabs' : 'group_subnav_tabs'; + $nav_tabs = (int) bp_nouveau_get_temporary_setting( $customizer_option, bp_nouveau_get_appearance_settings( $customizer_option ) ); + + if ( bp_is_user() && 1 === $nav_tabs ) { + $classes[] = 'tabbed-links'; + } + + if ( bp_is_group() && 1 === $nav_tabs ) { + $classes[] = 'tabbed-links'; + } + + $class = array_map( 'sanitize_html_class', $classes ); + + /** + * Filters the final results for BuddyPress Nouveau single item subnav classes. + * + * This filter will return a single string of concatenated classes to be used. + * + * @since 3.0.0 + * + * @param string $value Concatenated classes. + * @param array $classes Array of classes that were concatenated. + */ + return apply_filters( 'bp_nouveau_get_single_item_subnav_classes', join( ' ', $class ), $classes ); + } + +/** + * Output the groups create steps classes. + * + * @since 3.0.0 + * + * @return string CSS classes + */ +function bp_nouveau_groups_create_steps_classes() { + echo esc_attr( bp_nouveau_get_group_create_steps_classes() ); +} + + /** + * Returns the groups create steps customizer option choice class. + * + * @since 3.0.0 + * + * @return string CSS classes + */ + function bp_nouveau_get_group_create_steps_classes() { + $classes = array( 'bp-navs', 'group-create-links', 'no-ajax' ); + $nav_tabs = (int) bp_nouveau_get_temporary_setting( 'groups_create_tabs', bp_nouveau_get_appearance_settings( 'groups_create_tabs' ) ); + + if ( 1 === $nav_tabs ) { + $classes[] = 'tabbed-links'; + } + + $class = array_map( 'sanitize_html_class', $classes ); + + /** + * Filters the final results for BuddyPress Nouveau group creation step classes. + * + * This filter will return a single string of concatenated classes to be used. + * + * @since 3.0.0 + * + * @param string $value Concatenated classes. + * @param array $classes Array of classes that were concatenated. + */ + return apply_filters( 'bp_nouveau_get_group_create_steps_classes', join( ' ', $class ), $classes ); + } + + +/** Template tags for the object search **************************************/ + +/** + * Get the search primary object + * + * @since 3.0.0 + * + * @param string $object Optional. The primary object. + * + * @return string The primary object. + */ +function bp_nouveau_get_search_primary_object( $object = '' ) { + if ( bp_is_user() ) { + $object = 'member'; + } elseif ( bp_is_group() ) { + $object = 'group'; + } elseif ( bp_is_directory() ) { + $object = 'dir'; + } else { + + /** + * Filters the search primary object if no other was found. + * + * @since 3.0.0 + * + * @param string $object Search object. + */ + $object = apply_filters( 'bp_nouveau_get_search_primary_object', $object ); + } + + return $object; +} + +/** + * Get The list of search objects (primary + secondary). + * + * @since 3.0.0 + * + * @param array $objects Optional. The list of objects. + * + * @return array The list of objects. + */ +function bp_nouveau_get_search_objects( $objects = array() ) { + $primary = bp_nouveau_get_search_primary_object(); + if ( ! $primary ) { + return $objects; + } + + $objects = array( + 'primary' => $primary, + ); + + if ( 'member' === $primary || 'dir' === $primary ) { + $objects['secondary'] = bp_current_component(); + } elseif ( 'group' === $primary ) { + $objects['secondary'] = bp_current_action(); + } else { + + /** + * Filters the search objects if no others were found. + * + * @since 3.0.0 + * + * @param array $objects Search objects. + */ + $objects = apply_filters( 'bp_nouveau_get_search_objects', $objects ); + } + + return $objects; +} + +/** + * Output the search form container classes. + * + * @since 3.0.0 + */ +function bp_nouveau_search_container_class() { + $objects = bp_nouveau_get_search_objects(); + $class = join( '-search ', array_map( 'sanitize_html_class', $objects ) ) . '-search'; + + echo esc_attr( $class ); +} + +/** + * Output the search form data-bp attribute. + * + * @since 3.0.0 + * + * @param string $attr The data-bp attribute. + * @return string The data-bp attribute. + */ +function bp_nouveau_search_object_data_attr( $attr = '' ) { + $objects = bp_nouveau_get_search_objects(); + + if ( ! isset( $objects['secondary'] ) ) { + return $attr; + } + + if ( bp_is_active( 'groups' ) && bp_is_group_members() ) { + $attr = join( '_', $objects ); + } else { + $attr = $objects['secondary']; + } + + echo esc_attr( $attr ); +} + +/** + * Output a selector ID. + * + * @since 3.0.0 + * + * @param string $suffix Optional. A string to append at the end of the ID. + * @param string $sep Optional. The separator to use between each token. + * + * @return string The selector ID. + */ +function bp_nouveau_search_selector_id( $suffix = '', $sep = '-' ) { + $id = join( $sep, array_merge( bp_nouveau_get_search_objects(), (array) $suffix ) ); + echo esc_attr( $id ); +} + +/** + * Output the name attribute of a selector. + * + * @since 3.0.0 + * + * @param string $suffix Optional. A string to append at the end of the name. + * @param string $sep Optional. The separator to use between each token. + * + * @return string The name attribute of a selector. + */ +function bp_nouveau_search_selector_name( $suffix = '', $sep = '_' ) { + $objects = bp_nouveau_get_search_objects(); + + if ( isset( $objects['secondary'] ) && ! $suffix ) { + $name = bp_core_get_component_search_query_arg( $objects['secondary'] ); + } else { + $name = join( $sep, array_merge( $objects, (array) $suffix ) ); + } + + echo esc_attr( $name ); +} + +/** + * Output the default search text for the search object + * + * @since 3.0.0 + * + * @param string $text Optional. The default search text for the search object. + * @param string $is_attr Optional. True if it's to be output inside an attribute. False Otherwise. + * + * @return string The default search text. + * + * @todo 28/09/17 added 'empty( $text )' check to $object query as it wasn't returning output as expected & not returning user set params + * This may require further examination - hnla + */ +function bp_nouveau_search_default_text( $text = '', $is_attr = true ) { + $objects = bp_nouveau_get_search_objects(); + + if ( ! empty( $objects['secondary'] ) && empty( $text ) ) { + $text = bp_get_search_default_text( $objects['secondary'] ); + } + + if ( $is_attr ) { + echo esc_attr( $text ); + } else { + echo esc_html( $text ); + } +} + +/** + * Get the search form template part and fire some do_actions if needed. + * + * @since 3.0.0 + */ +function bp_nouveau_search_form() { + bp_get_template_part( 'common/search/search-form' ); + + $objects = bp_nouveau_get_search_objects(); + if ( empty( $objects['primary'] ) || empty( $objects['secondary'] ) ) { + return; + } + + if ( 'dir' === $objects['primary'] ) { + if ( 'activity' === $objects['secondary'] ) { + /** + * Fires before the display of the activity syndication options. + * + * @since 1.2.0 + */ + do_action( 'bp_activity_syndication_options' ); + + } elseif ( 'blogs' === $objects['secondary'] ) { + /** + * Fires inside the unordered list displaying blog sub-types. + * + * @since 1.5.0 + */ + do_action( 'bp_blogs_directory_blog_sub_types' ); + + } elseif ( 'groups' === $objects['secondary'] ) { + /** + * Fires inside the groups directory group types. + * + * @since 1.2.0 + */ + do_action( 'bp_groups_directory_group_types' ); + + } elseif ( 'members' === $objects['secondary'] ) { + /** + * Fires inside the members directory member sub-types. + * + * @since 1.5.0 + */ + do_action( 'bp_members_directory_member_sub_types' ); + } + } elseif ( 'group' === $objects['primary'] && 'activity' === $objects['secondary'] ) { + /** + * Fires inside the syndication options list, after the RSS option. + * + * @since 1.2.0 + */ + do_action( 'bp_group_activity_syndication_options' ); + } +} + + +// Template tags for the directory & user/group screen filters. + +/** + * Get the current component or action. + * + * If on single group screens we need to switch from component to bp_current_action() to add the correct + * IDs/labels for group/activity & similar screens. + * + * @since 3.0.0 + */ +function bp_nouveau_current_object() { + /* + * If we're looking at groups single screens we need to factor in current action + * to avoid the component check adding the wrong id for the main dir e.g 'groups' instead of 'activity'. + * We also need to check for group screens to adjust the id's for prefixes. + */ + $component = array(); + + if ( bp_is_group() ) { + $component['members_select'] = 'groups_members-order-select'; + $component['members_order_by'] = 'groups_members-order-by'; + $component['object'] = bp_current_action(); + $component['data_filter'] = bp_current_action(); + + if ( 'activity' !== bp_current_action() ) { + $component['data_filter'] = 'group_' . bp_current_action(); + } + + } else { + $component['members_select'] = 'members-order-select'; + $component['members_order_by'] = 'members-order-by'; + $component['object'] = bp_current_component(); + $component['data_filter'] = bp_current_component(); + } + + return $component; +} + +/** + * Output data filter container's ID attribute value. + * + * @since 3.0.0 + */ +function bp_nouveau_filter_container_id() { + echo esc_attr( bp_nouveau_get_filter_container_id() ); +} + + /** + * Get data filter container's ID attribute value. + * + * @since 3.0.0 + * + * @param string + */ + function bp_nouveau_get_filter_container_id() { + $component = bp_nouveau_current_object(); + + $ids = array( + 'members' => $component['members_select'], + 'friends' => 'members-friends-select', + 'notifications' => 'notifications-filter-select', + 'activity' => 'activity-filter-select', + 'groups' => 'groups-order-select', + 'blogs' => 'blogs-order-select', + ); + + if ( isset( $ids[ $component['object'] ] ) ) { + + /** + * Filters the container ID for BuddyPress Nouveau filters. + * + * @since 3.0.0 + * + * @param string $value ID based on current component object. + */ + return apply_filters( 'bp_nouveau_get_filter_container_id', $ids[ $component['object'] ] ); + } + + return ''; + } + +/** + * Output data filter's ID attribute value. + * + * @since 3.0.0 + */ +function bp_nouveau_filter_id() { + echo esc_attr( bp_nouveau_get_filter_id() ); +} + + /** + * Get data filter's ID attribute value. + * + * @since 3.0.0 + * + * @param string + */ + function bp_nouveau_get_filter_id() { + $component = bp_nouveau_current_object(); + + $ids = array( + 'members' => $component['members_order_by'], + 'friends' => 'members-friends', + 'notifications' => 'notifications-filter-by', + 'activity' => 'activity-filter-by', + 'groups' => 'groups-order-by', + 'blogs' => 'blogs-order-by', + ); + + if ( isset( $ids[ $component['object'] ] ) ) { + + /** + * Filters the filter ID for BuddyPress Nouveau filters. + * + * @since 3.0.0 + * + * @param string $value ID based on current component object. + */ + return apply_filters( 'bp_nouveau_get_filter_id', $ids[ $component['object'] ] ); + } + + return ''; + } + +/** + * Output data filter's label. + * + * @since 3.0.0 + */ +function bp_nouveau_filter_label() { + echo esc_html( bp_nouveau_get_filter_label() ); +} + + /** + * Get data filter's label. + * + * @since 3.0.0 + * + * @param string + */ + function bp_nouveau_get_filter_label() { + $component = bp_nouveau_current_object(); + $label = __( 'Order By:', 'buddypress' ); + + if ( 'activity' === $component['object'] || 'friends' === $component['object'] ) { + $label = __( 'Show:', 'buddypress' ); + } + + /** + * Filters the label for BuddyPress Nouveau filters. + * + * @since 3.0.0 + * + * @param string $label Label for BuddyPress Nouveau filter. + * @param array $component The data filter's data-bp-filter attribute value. + */ + return apply_filters( 'bp_nouveau_get_filter_label', $label, $component ); + } + +/** + * Output data filter's data-bp-filter attribute value. + * + * @since 3.0.0 + */ +function bp_nouveau_filter_component() { + $component = bp_nouveau_current_object(); + echo esc_attr( $component['data_filter'] ); +} + +/** + * Output the <option> of the data filter's <select> element. + * + * @since 3.0.0 + */ +function bp_nouveau_filter_options() { + echo bp_nouveau_get_filter_options(); // Escaped in inner functions. +} + + /** + * Get the <option> of the data filter's <select> element. + * + * @since 3.0.0 + * + * @return string + */ + function bp_nouveau_get_filter_options() { + $output = ''; + + if ( 'notifications' === bp_current_component() ) { + $output = bp_nouveau_get_notifications_filters(); + + } else { + $filters = bp_nouveau_get_component_filters(); + + foreach ( $filters as $key => $value ) { + $output .= sprintf( '<option value="%1$s">%2$s</option>%3$s', + esc_attr( $key ), + esc_html( $value ), + PHP_EOL + ); + } + } + + return $output; + } + + +/** Template tags for the Customizer ******************************************/ + +/** + * Get a link to reach a specific section into the customizer + * + * @since 3.0.0 + * + * @param array $args Optional. The argument to customize the Customizer link. + * + * @return string HTML. + */ +function bp_nouveau_get_customizer_link( $args = array() ) { + $r = bp_parse_args( $args, array( + 'capability' => 'bp_moderate', + 'object' => 'user', + 'item_id' => 0, + 'autofocus' => '', + 'text' => '', + ), 'nouveau_get_customizer_link' ); + + if ( empty( $r['capability'] ) || empty( $r['autofocus'] ) || empty( $r['text'] ) ) { + return ''; + } + + if ( ! bp_current_user_can( $r['capability'] ) ) { + return ''; + } + + $url = ''; + + if ( bp_is_user() ) { + $url = rawurlencode( bp_displayed_user_domain() ); + + } elseif ( bp_is_group() ) { + $url = rawurlencode( bp_get_group_permalink( groups_get_current_group() ) ); + + } elseif ( ! empty( $r['object'] ) && ! empty( $r['item_id'] ) ) { + if ( 'user' === $r['object'] ) { + $url = rawurlencode( bp_core_get_user_domain( $r['item_id'] ) ); + + } elseif ( 'group' === $r['object'] ) { + $group = groups_get_group( array( 'group_id' => $r['item_id'] ) ); + + if ( ! empty( $group->id ) ) { + $url = rawurlencode( bp_get_group_permalink( $group ) ); + } + } + } + + if ( ! $url ) { + return ''; + } + + $customizer_link = add_query_arg( array( + 'autofocus[section]' => $r['autofocus'], + 'url' => $url, + ), admin_url( 'customize.php' ) ); + + return sprintf( '<a href="%1$s">%2$s</a>', esc_url( $customizer_link ), esc_html( $r['text'] ) ); +} + +/** Template tags for signup forms *******************************************/ + +/** + * Fire specific hooks into the register template + * + * @since 3.0.0 + * + * @param string $when 'before' or 'after' + * @param string $prefix Use it to add terms before the hook name + */ +function bp_nouveau_signup_hook( $when = '', $prefix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + if ( $prefix ) { + if ( 'page' === $prefix ) { + $hook[] = 'register'; + } elseif ( 'steps' === $prefix ) { + $hook[] = 'signup'; + } + + $hook[] = $prefix; + } + + if ( 'page' !== $prefix && 'steps' !== $prefix ) { + $hook[] = 'fields'; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Fire specific hooks into the activate template + * + * @since 3.0.0 + * + * @param string $when 'before' or 'after' + * @param string $prefix Use it to add terms before the hook name + */ +function bp_nouveau_activation_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + $hook[] = 'activate'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + if ( 'page' === $suffix ) { + $hook[2] = 'activation'; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Output the signup form for the requested section + * + * @since 3.0.0 + * + * @param string $section Optional. The section of fields to get 'account_details' or 'blog_details'. + * Default: 'account_details'. + */ +function bp_nouveau_signup_form( $section = 'account_details' ) { + $fields = bp_nouveau_get_signup_fields( $section ); + if ( ! $fields ) { + return; + } + + foreach ( $fields as $name => $attributes ) { + list( $label, $required, $value, $attribute_type, $type, $class ) = array_values( $attributes ); + + // Text fields are using strings, radios are using their inputs + $label_output = '<label for="%1$s">%2$s</label>'; + $id = $name; + $classes = ''; + + if ( $required ) { + /* translators: Do not translate placeholders. 2 = form field name, 3 = "(required)". */ + $label_output = __( '<label for="%1$s">%2$s %3$s</label>', 'buddypress' ); + } + + // Output the label for regular fields + if ( 'radio' !== $type ) { + if ( $required ) { + printf( $label_output, esc_attr( $name ), esc_html( $label ), __( '(required)', 'buddypress' ) ); + } else { + printf( $label_output, esc_attr( $name ), esc_html( $label ) ); + } + + if ( ! empty( $value ) && is_callable( $value ) ) { + $value = call_user_func( $value ); + } + + // Handle the specific case of Site's privacy differently + } elseif ( 'signup_blog_privacy_private' !== $name ) { + ?> + <span class="label"> + <?php esc_html_e( 'I would like my site to appear in search engines, and in public listings around this network.', 'buddypress' ); ?> + </span> + <?php + } + + // Set the additional attributes + if ( $attribute_type ) { + $existing_attributes = array(); + + if ( ! empty( $required ) ) { + $existing_attributes = array( 'aria-required' => 'true' ); + + /** + * The blog section is hidden, so let's avoid a browser warning + * and deal with the Blog section in Javascript. + */ + if ( $section !== 'blog_details' ) { + $existing_attributes['required'] = 'required'; + } + } + + $attribute_type = ' ' . bp_get_form_field_attributes( $attribute_type, $existing_attributes ); + } + + // Specific case for Site's privacy + if ( 'signup_blog_privacy_public' === $name || 'signup_blog_privacy_private' === $name ) { + $name = 'signup_blog_privacy'; + $submitted = bp_get_signup_blog_privacy_value(); + + if ( ! $submitted ) { + $submitted = 'public'; + } + + $attribute_type = ' ' . checked( $value, $submitted, false ); + } + + // Do not run function to display errors for the private radio. + if ( 'private' !== $value ) { + + /** + * Fetch & display any BP member registration field errors. + * + * Passes BP signup errors to Nouveau's template function to + * render suitable markup for error string. + */ + if ( isset( buddypress()->signup->errors[ $name ] ) ) { + nouveau_error_template( buddypress()->signup->errors[ $name ] ); + $invalid = 'invalid'; + } + } + + if ( isset( $invalid ) && isset( buddypress()->signup->errors[ $name ] ) ) { + if ( ! empty( $class ) ) { + $class = $class . ' ' . $invalid; + } else { + $class = $invalid; + } + } + + if ( $class ) { + $class = sprintf( + ' class="%s"', + esc_attr( join( ' ', array_map( 'sanitize_html_class', explode( ' ', $class ) ) ) ) + ); + } + + // Set the input. + $field_output = sprintf( + '<input type="%1$s" name="%2$s" id="%3$s" %4$s value="%5$s" %6$s />', + esc_attr( $type ), + esc_attr( $name ), + esc_attr( $id ), + $class, // Constructed safely above. + esc_attr( $value ), + $attribute_type // Constructed safely above. + ); + + // Not a radio, let's output the field + if ( 'radio' !== $type ) { + if ( 'signup_blog_url' !== $name ) { + print( $field_output ); // Constructed safely above. + + // If it's the signup blog url, it's specific to Multisite config. + } elseif ( is_subdomain_install() ) { + // Constructed safely above. + printf( + '%1$s %2$s . %3$s', + is_ssl() ? 'https://' : 'http://', + $field_output, + bp_signup_get_subdomain_base() + ); + + // Subfolders! + } else { + printf( + '%1$s %2$s', + home_url( '/' ), + $field_output // Constructed safely above. + ); + } + + // It's a radio, let's output the field inside the label + } else { + // $label_output and $field_output are constructed safely above. + printf( $label_output, esc_attr( $name ), $field_output . ' ' . esc_html( $label ) ); + } + + // Password strength is restricted to the signup_password field + if ( 'signup_password' === $name ) : + ?> + <div id="pass-strength-result"></div> + <?php + endif; + } + + /** + * Fires and displays any extra member registration details fields. + * + * This is a variable hook that depends on the current section. + * + * @since 1.9.0 + */ + do_action( "bp_{$section}_fields" ); +} + +/** + * Output a submit button and the nonce for the requested action. + * + * @since 3.0.0 + * + * @param string $action The action to get the submit button for. Required. + */ +function bp_nouveau_submit_button( $action ) { + $submit_data = bp_nouveau_get_submit_button( $action ); + if ( empty( $submit_data['attributes'] ) || empty( $submit_data['nonce'] ) ) { + return; + } + + if ( ! empty( $submit_data['before'] ) ) { + + /** + * Fires before display of the submit button. + * + * This is a dynamic filter that is dependent on the "before" value provided by bp_nouveau_get_submit_button(). + * + * @since 3.0.0 + */ + do_action( $submit_data['before'] ); + } + + $submit_input = sprintf( '<input type="submit" %s/>', + bp_get_form_field_attributes( 'submit', $submit_data['attributes'] ) // Safe. + ); + + // Output the submit button. + if ( isset( $submit_data['wrapper'] ) && false === $submit_data['wrapper'] ) { + echo $submit_input; + + // Output the submit button into a wrapper. + } else { + printf( '<div class="submit">%s</div>', $submit_input ); + } + + if ( empty( $submit_data['nonce_key'] ) ) { + wp_nonce_field( $submit_data['nonce'] ); + } else { + wp_nonce_field( $submit_data['nonce'], $submit_data['nonce_key'] ); + } + + if ( ! empty( $submit_data['after'] ) ) { + + /** + * Fires before display of the submit button. + * + * This is a dynamic filter that is dependent on the "after" value provided by bp_nouveau_get_submit_button(). + * + * @since 3.0.0 + */ + do_action( $submit_data['after'] ); + } +} + +/** + * Display supplemental error or feedback messages. + * + * This template handles in page error or feedback messages e.g signup fields + * 'Username exists' type registration field error notices. + * + * @param string $message required: the message to display. + * @param string $type optional: the type of error message e.g 'error'. + * + * @since 3.0.0 + */ +function nouveau_error_template( $message = '', $type = '' ) { + if ( ! $message ) { + return; + } + + $type = ( $type ) ? $type : 'error'; + ?> + + <div class="<?php echo esc_attr( 'bp-messages bp-feedback ' . $type ); ?>"> + <span class="bp-icon" aria-hidden="true"></span> + <p><?php echo esc_html( $message ); ?></p> + </div> + + <?php +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/functions.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/functions.php new file mode 100644 index 0000000000000000000000000000000000000000..d0ca4e5b3eab9667997a3607326e96ae769e0ddf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/functions.php @@ -0,0 +1,46 @@ +<?php +/** + * xProfile functions + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Register Scripts for the xProfile component + * + * @since 3.0.0 + * + * @param array $scripts The array of scripts to register + * + * @return array The same array with the specific groups scripts. + */ +function bp_nouveau_xprofile_register_scripts( $scripts = array() ) { + if ( ! isset( $scripts['bp-nouveau'] ) ) { + return $scripts; + } + + return array_merge( $scripts, array( + 'bp-nouveau-xprofile' => array( + 'file' => 'js/buddypress-xprofile%s.js', + 'dependencies' => array( 'bp-nouveau' ), + 'footer' => true, + ), + ) ); +} + +/** + * Enqueue the xprofile scripts + * + * @since 3.0.0 + */ +function bp_nouveau_xprofile_enqueue_scripts() { + if ( ! bp_is_user_profile_edit() && ! bp_is_register_page() ) { + return; + } + + wp_enqueue_script( 'bp-nouveau-xprofile' ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/loader.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/loader.php new file mode 100644 index 0000000000000000000000000000000000000000..3ebb46312ae5b94c6c46682a2e8aab15aa6e28a3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/loader.php @@ -0,0 +1,80 @@ +<?php +/** + * BP Nouveau xProfile + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * xProfile Loader class + * + * @since 3.0.0 + */ +class BP_Nouveau_xProfile { + /** + * Constructor + * + * @since 3.0.0 + */ + public function __construct() { + $this->setup_globals(); + $this->includes(); + $this->setup_actions(); + $this->setup_filters(); + } + + /** + * Globals + * + * @since 3.0.0 + */ + protected function setup_globals() { + $this->dir = dirname( __FILE__ ); + } + + /** + * Include needed files + * + * @since 3.0.0 + */ + protected function includes() { + require( trailingslashit( $this->dir ) . 'functions.php' ); + require( trailingslashit( $this->dir ) . 'template-tags.php' ); + } + + /** + * Register do_action() hooks + * + * @since 3.0.0 + */ + protected function setup_actions() { + add_action( 'bp_nouveau_enqueue_scripts', 'bp_nouveau_xprofile_enqueue_scripts' ); + } + + /** + * Register add_filter() hooks + * + * @since 3.0.0 + */ + protected function setup_filters() { + add_filter( 'bp_nouveau_register_scripts', 'bp_nouveau_xprofile_register_scripts', 10, 1 ); + } +} + +/** + * Launch the xProfile loader class. + * + * @since 3.0.0 + */ +function bp_nouveau_xprofile( $bp_nouveau = null ) { + if ( is_null( $bp_nouveau ) ) { + return; + } + + $bp_nouveau->xprofile = new BP_Nouveau_xProfile(); +} +add_action( 'bp_nouveau_includes', 'bp_nouveau_xprofile', 10, 1 ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/template-tags.php b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/template-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..26ef5199fe0c99b962c917e41d5b4f14840068dd --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/includes/xprofile/template-tags.php @@ -0,0 +1,73 @@ +<?php +/** + * xProfile Template tags + * + * @since 3.0.0 + * @version 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Fire specific hooks into the single members xprofile templates. + * + * @since 3.0.0 + * + * @param string $when Optional. Either 'before' or 'after'. + * @param string $suffix Optional. Use it to add terms at the end of the hook name. + */ +function bp_nouveau_xprofile_hook( $when = '', $suffix = '' ) { + $hook = array( 'bp' ); + + if ( $when ) { + $hook[] = $when; + } + + // It's a xprofile hook + $hook[] = 'profile'; + + if ( $suffix ) { + $hook[] = $suffix; + } + + bp_nouveau_hook( $hook ); +} + +/** + * Template tag to output the field visibility markup in edit and signup screens. + * + * @since 3.0.0 + */ +function bp_nouveau_xprofile_edit_visibilty() { + /** + * Fires before the display of visibility options for the field. + * + * @since 1.7.0 + */ + do_action( 'bp_custom_profile_edit_fields_pre_visibility' ); + + bp_get_template_part( 'members/single/parts/profile-visibility' ); + + /** + * Fires after the visibility options for a field. + * + * @since 3.0.0 + */ + do_action( 'bp_custom_profile_edit_fields' ); +} + +/** + * Return a bool check to see whether the base re group has had extended + * profile fields added to it for the registration screen. + * + * @since 3.0.0 + */ +function bp_nouveau_base_account_has_xprofile() { + return (bool) bp_has_profile( + array( + 'profile_group_id' => 1, + 'fetch_field_data' => false, + ) + ); +} diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.js new file mode 100644 index 0000000000000000000000000000000000000000..1e17af71df474dae2e197e48c8f7d3caf9ab9599 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.js @@ -0,0 +1,766 @@ +/* global bp, BP_Nouveau, _, Backbone */ +/* @version 3.1.0 */ +window.wp = window.wp || {}; +window.bp = window.bp || {}; + +( function( exports, $ ) { + bp.Nouveau = bp.Nouveau || {}; + + // Bail if not set + if ( typeof bp.Nouveau.Activity === 'undefined' || typeof BP_Nouveau === 'undefined' ) { + return; + } + + _.extend( bp, _.pick( wp, 'Backbone', 'ajax', 'template' ) ); + + bp.Models = bp.Models || {}; + bp.Collections = bp.Collections || {}; + bp.Views = bp.Views || {}; + + /** + * [Activity description] + * @type {Object} + */ + bp.Nouveau.Activity.postForm = { + start: function() { + this.views = new Backbone.Collection(); + this.ActivityObjects = new bp.Collections.ActivityObjects(); + this.buttons = new Backbone.Collection(); + + this.postFormView(); + }, + + postFormView: function() { + // Do not carry on if the main element is not available. + if ( ! $( '#bp-nouveau-activity-form' ).length ) { + return; + } + + // Create the BuddyPress Uploader + var postForm = new bp.Views.PostForm(); + + // Add it to views + this.views.add( { id: 'post_form', view: postForm } ); + + // Display it + postForm.inject( '#bp-nouveau-activity-form' ); + } + }; + + if ( typeof bp.View === 'undefined' ) { + // Extend wp.Backbone.View with .prepare() and .inject() + bp.View = bp.Backbone.View.extend( { + inject: function( selector ) { + this.render(); + $(selector).html( this.el ); + this.views.ready(); + }, + + prepare: function() { + if ( ! _.isUndefined( this.model ) && _.isFunction( this.model.toJSON ) ) { + return this.model.toJSON(); + } else { + return {}; + } + } + } ); + } + + /** Models ****************************************************************/ + + // The Activity to post + bp.Models.Activity = Backbone.Model.extend( { + defaults: { + user_id: 0, + item_id: 0, + object: '', + content: '' + } + } ); + + // Object, the activity is attached to (group or blog or any other) + bp.Models.ActivityObject = Backbone.Model.extend( { + defaults: { + id : 0, + name : '', + avatar_url : '', + object_type : 'group' + } + } ); + + /** Collections ***********************************************************/ + + // Objects, the activity can be attached to (groups or blogs or any others) + bp.Collections.ActivityObjects = Backbone.Collection.extend( { + model: bp.Models.ActivityObject, + + sync: function( method, model, options ) { + + if ( 'read' === method ) { + options = options || {}; + options.context = this; + options.data = _.extend( options.data || {}, { + action: 'bp_nouveau_get_activity_objects' + } ); + + return bp.ajax.send( options ); + } + }, + + parse: function( resp ) { + if ( ! _.isArray( resp ) ) { + resp = [resp]; + } + + return resp; + } + + } ); + + /** Views *****************************************************************/ + + // Feedback messages + bp.Views.activityFeedback = bp.View.extend( { + tagName : 'div', + id : 'message', + template : bp.template( 'activity-post-form-feedback' ), + + initialize: function() { + this.model = new Backbone.Model(); + + if ( this.options.value ) { + this.model.set( 'message', this.options.value, { silent: true } ); + } + + this.type = 'info'; + + if ( ! _.isUndefined( this.options.type ) && 'info' !== this.options.type ) { + this.type = this.options.type; + } + + this.el.className = 'bp-messages bp-feedback ' + this.type ; + } + } ); + + // Regular input + bp.Views.ActivityInput = bp.View.extend( { + tagName : 'input', + + attributes: { + type : 'text' + }, + + initialize: function() { + if ( ! _.isObject( this.options ) ) { + return; + } + + _.each( this.options, function( value, key ) { + this.$el.prop( key, value ); + }, this ); + } + } ); + + // The content of the activity + bp.Views.WhatsNew = bp.View.extend( { + tagName : 'textarea', + className : 'bp-suggestions', + id : 'whats-new', + + attributes: { + name : 'whats-new', + cols : '50', + rows : '4', + placeholder : BP_Nouveau.activity.strings.whatsnewPlaceholder, + 'aria-label' : BP_Nouveau.activity.strings.whatsnewLabel + }, + + initialize: function() { + this.on( 'ready', this.adjustContent, this ); + + this.options.activity.on( 'change:content', this.resetContent, this ); + }, + + adjustContent: function() { + + // First adjust layout + this.$el.css( { + resize: 'none', + height: '50px' + } ); + + // Check for mention + var mention = bp.Nouveau.getLinkParams( null, 'r' ) || null; + + if ( ! _.isNull( mention ) ) { + this.$el.text( '@' + _.escape( mention ) + ' ' ); + this.$el.focus(); + } + }, + + resetContent: function( activity ) { + if ( _.isUndefined( activity ) ) { + return; + } + + this.$el.val( activity.get( 'content' ) ); + } + } ); + + bp.Views.WhatsNewPostIn = bp.View.extend( { + tagName: 'select', + id: 'whats-new-post-in', + + attributes: { + name : 'whats-new-post-in', + 'aria-label' : BP_Nouveau.activity.strings.whatsnewpostinLabel + }, + + events: { + change: 'change' + }, + + keys: [], + + initialize: function() { + this.model = new Backbone.Model(); + + this.filters = this.options.filters || {}; + + // Build `<option>` elements. + this.$el.html( _.chain( this.filters ).map( function( filter, value ) { + return { + el: $( '<option></option>' ).val( value ).html( filter.text )[0], + priority: filter.priority || 50 + }; + }, this ).sortBy( 'priority' ).pluck( 'el' ).value() ); + }, + + change: function() { + var filter = this.filters[ this.el.value ]; + if ( filter ) { + this.model.set( { 'selected': this.el.value, 'placeholder': filter.autocomplete_placeholder } ); + } + } + } ); + + bp.Views.Item = bp.View.extend( { + tagName: 'li', + className: 'bp-activity-object', + template: bp.template( 'activity-target-item' ), + + attributes: { + role: 'checkbox' + }, + + initialize: function() { + if ( this.model.get( 'selected' ) ) { + this.el.className += ' selected'; + } + }, + + events: { + click : 'setObject' + }, + + setObject:function( event ) { + event.preventDefault(); + + if ( true === this.model.get( 'selected' ) ) { + this.model.clear(); + } else { + this.model.set( 'selected', true ); + } + } + } ); + + bp.Views.AutoComplete = bp.View.extend( { + tagName : 'ul', + id : 'whats-new-post-in-box-items', + + events: { + keyup : 'autoComplete' + }, + + initialize: function() { + var autocomplete = new bp.Views.ActivityInput( { + type : 'text', + id : 'activity-autocomplete', + placeholder : this.options.placeholder || '' + } ).render(); + + this.$el.prepend( $( '<li></li>' ).html( autocomplete.$el ) ); + + this.on( 'ready', this.setFocus, this ); + this.collection.on( 'add', this.addItemView, this ); + this.collection.on( 'reset', this.cleanView, this ); + }, + + setFocus: function() { + this.$el.find( '#activity-autocomplete' ).focus(); + }, + + addItemView: function( item ) { + this.views.add( new bp.Views.Item( { model: item } ) ); + }, + + autoComplete: function() { + var search = $( '#activity-autocomplete' ).val(); + + // Reset the collection before starting a new search + this.collection.reset(); + + if ( 2 > search.length ) { + return; + } + + this.collection.fetch( { + data: { + type : this.options.type, + search : search, + nonce : BP_Nouveau.nonces.activity + }, + success : _.bind( this.itemFetched, this ), + error : _.bind( this.itemFetched, this ) + } ); + }, + + itemFetched: function( items ) { + if ( ! items.length ) { + this.cleanView(); + } + }, + + cleanView: function() { + _.each( this.views._views[''], function( view ) { + view.remove(); + } ); + } + } ); + + bp.Views.FormAvatar = bp.View.extend( { + tagName : 'div', + id : 'whats-new-avatar', + template : bp.template( 'activity-post-form-avatar' ), + + initialize: function() { + this.model = new Backbone.Model( _.pick( BP_Nouveau.activity.params, [ + 'user_id', + 'avatar_url', + 'avatar_width', + 'avatar_height', + 'avatar_alt', + 'user_domain' + ] ) ); + + if ( this.model.has( 'avatar_url' ) ) { + this.model.set( 'display_avatar', true ); + } + } + } ); + + bp.Views.FormContent = bp.View.extend( { + tagName : 'div', + id : 'whats-new-content', + + initialize: function() { + this.$el.html( $('<div></div>' ).prop( 'id', 'whats-new-textarea' ) ); + this.views.set( '#whats-new-textarea', new bp.Views.WhatsNew( { activity: this.options.activity } ) ); + } + } ); + + bp.Views.FormOptions = bp.View.extend( { + tagName : 'div', + id : 'whats-new-options', + template : bp.template( 'activity-post-form-options' ) + } ); + + bp.Views.FormTarget = bp.View.extend( { + tagName : 'div', + id : 'whats-new-post-in-box', + className : 'in-profile', + + initialize: function() { + var select = new bp.Views.WhatsNewPostIn( { filters: BP_Nouveau.activity.params.objects } ); + this.views.add( select ); + + select.model.on( 'change', this.attachAutocomplete, this ); + bp.Nouveau.Activity.postForm.ActivityObjects.on( 'change:selected', this.postIn, this ); + }, + + attachAutocomplete: function( model ) { + if ( 0 !== bp.Nouveau.Activity.postForm.ActivityObjects.models.length ) { + bp.Nouveau.Activity.postForm.ActivityObjects.reset(); + } + + // Clean up views + _.each( this.views._views[''], function( view ) { + if ( ! _.isUndefined( view.collection ) ) { + view.remove(); + } + } ); + + if ( 'profile' !== model.get( 'selected') ) { + this.views.add( new bp.Views.AutoComplete( { + collection: bp.Nouveau.Activity.postForm.ActivityObjects, + type: model.get( 'selected' ), + placeholder : model.get( 'placeholder' ) + } ) ); + + // Set the object type + this.model.set( 'object', model.get( 'selected' ) ); + + } else { + this.model.set( { object: 'user', item_id: 0 } ); + } + + this.updateDisplay(); + }, + + postIn: function( model ) { + if ( _.isUndefined( model.get( 'id' ) ) ) { + // Reset the item id + this.model.set( 'item_id', 0 ); + + // When the model has been cleared, Attach Autocomplete! + this.attachAutocomplete( new Backbone.Model( { selected: this.model.get( 'object' ) } ) ); + return; + } + + // Set the item id for the selected object + this.model.set( 'item_id', model.get( 'id' ) ); + + // Set the view to the selected object + this.views.set( '#whats-new-post-in-box-items', new bp.Views.Item( { model: model } ) ); + }, + + updateDisplay: function() { + if ( 'user' !== this.model.get( 'object' ) ) { + this.$el.removeClass( ); + } else if ( ! this.$el.hasClass( 'in-profile' ) ) { + this.$el.addClass( 'in-profile' ); + } + } + } ); + + /** + * Now build the buttons! + * @type {[type]} + */ + bp.Views.FormButtons = bp.View.extend( { + tagName : 'div', + id : 'whats-new-actions', + + initialize: function() { + this.views.add( new bp.View( { tagName: 'ul', id: 'whats-new-buttons' } ) ); + + _.each( this.collection.models, function( button ) { + this.addItemView( button ); + }, this ); + + this.collection.on( 'change:active', this.isActive, this ); + }, + + addItemView: function( button ) { + this.views.add( '#whats-new-buttons', new bp.Views.FormButton( { model: button } ) ); + }, + + isActive: function( button ) { + // Clean up views + _.each( this.views._views[''], function( view, index ) { + if ( 0 !== index ) { + view.remove(); + } + } ); + + // Then loop threw all buttons to update their status + if ( true === button.get( 'active' ) ) { + _.each( this.views._views['#whats-new-buttons'], function( view ) { + if ( view.model.get( 'id') !== button.get( 'id' ) ) { + // Silently update the model + view.model.set( 'active', false, { silent: true } ); + + // Remove the active class + view.$el.removeClass( 'active' ); + + // Trigger an even to let Buttons reset + // their modifications to the activity model + this.collection.trigger( 'reset:' + view.model.get( 'id' ), this.model ); + } + }, this ); + + // Tell the active Button to load its content + this.collection.trigger( 'display:' + button.get( 'id' ), this ); + + // Trigger an even to let Buttons reset + // their modifications to the activity model + } else { + this.collection.trigger( 'reset:' + button.get( 'id' ), this.model ); + } + } + } ); + + bp.Views.FormButton = bp.View.extend( { + tagName : 'li', + className : 'whats-new-button', + template : bp.template( 'activity-post-form-buttons' ), + + events: { + click : 'setActive' + }, + + setActive: function( event ) { + var isActive = this.model.get( 'active' ) || false; + + // Stop event propagation + event.preventDefault(); + + if ( false === isActive ) { + this.$el.addClass( 'active' ); + this.model.set( 'active', true ); + } else { + this.$el.removeClass( 'active' ); + this.model.set( 'active', false ); + } + } + } ); + + bp.Views.FormSubmit = bp.View.extend( { + tagName : 'div', + id : 'whats-new-submit', + className : 'in-profile', + + initialize: function() { + var reset = new bp.Views.ActivityInput( { + type : 'reset', + id : 'aw-whats-new-reset', + className : 'text-button small', + value : BP_Nouveau.activity.strings.cancelButton + } ); + + var submit = new bp.Views.ActivityInput( { + type : 'submit', + id : 'aw-whats-new-submit', + className : 'button', + name : 'aw-whats-new-submit', + value : BP_Nouveau.activity.strings.postUpdateButton + } ); + + this.views.set( [ submit, reset ] ); + + this.model.on( 'change:object', this.updateDisplay, this ); + }, + + updateDisplay: function( model ) { + if ( _.isUndefined( model ) ) { + return; + } + + if ( 'user' !== model.get( 'object' ) ) { + this.$el.removeClass( 'in-profile' ); + } else if ( ! this.$el.hasClass( 'in-profile' ) ) { + this.$el.addClass( 'in-profile' ); + } + } + } ); + + bp.Views.PostForm = bp.View.extend( { + tagName : 'form', + className : 'activity-form', + id : 'whats-new-form', + + attributes: { + name : 'whats-new-form', + method : 'post' + }, + + events: { + 'focus #whats-new' : 'displayFull', + 'reset' : 'resetForm', + 'submit' : 'postUpdate', + 'keydown' : 'postUpdate' + }, + + initialize: function() { + this.model = new bp.Models.Activity( _.pick( + BP_Nouveau.activity.params, + ['user_id', 'item_id', 'object' ] + ) ); + + // Clone the model to set the resetted one + this.resetModel = this.model.clone(); + + this.views.set( [ + new bp.Views.FormAvatar(), + new bp.Views.FormContent( { activity: this.model } ) + ] ); + + this.model.on( 'change:errors', this.displayFeedback, this ); + }, + + displayFull: function( event ) { + + // Remove feedback. + this.cleanFeedback(); + + if ( 2 !== this.views._views[''].length ) { + return; + } + + $( event.target ).css( { + resize : 'vertical', + height : 'auto' + } ); + + // Backcompat custom fields + if ( true === BP_Nouveau.activity.params.backcompat ) { + this.views.add( new bp.Views.FormOptions( { model: this.model } ) ); + } + + // Attach buttons + if ( ! _.isUndefined( BP_Nouveau.activity.params.buttons ) ) { + // Global + bp.Nouveau.Activity.postForm.buttons.set( BP_Nouveau.activity.params.buttons ); + this.views.add( new bp.Views.FormButtons( { collection: bp.Nouveau.Activity.postForm.buttons, model: this.model } ) ); + } + + // Select box for the object + if ( ! _.isUndefined( BP_Nouveau.activity.params.objects ) && 1 < _.keys( BP_Nouveau.activity.params.objects ).length ) { + this.views.add( new bp.Views.FormTarget( { model: this.model } ) ); + } + + this.views.add( new bp.Views.FormSubmit( { model: this.model } ) ); + }, + + resetForm: function() { + _.each( this.views._views[''], function( view, index ) { + if ( index > 1 ) { + view.remove(); + } + } ); + + $( '#whats-new' ).css( { + resize : 'none', + height : '50px' + } ); + + // Reset the model + this.model.clear(); + this.model.set( this.resetModel.attributes ); + }, + + cleanFeedback: function() { + _.each( this.views._views[''], function( view ) { + if ( 'message' === view.$el.prop( 'id' ) ) { + view.remove(); + } + } ); + }, + + displayFeedback: function( model ) { + if ( _.isUndefined( this.model.get( 'errors' ) ) ) { + this.cleanFeedback(); + } else { + this.views.add( new bp.Views.activityFeedback( model.get( 'errors' ) ) ); + } + }, + + postUpdate: function( event ) { + var self = this, + meta = {}; + + if ( event ) { + if ( 'keydown' === event.type && ( 13 !== event.keyCode || ! event.ctrlKey ) ) { + return event; + } + + event.preventDefault(); + } + + // Set the content and meta + _.each( this.$el.serializeArray(), function( pair ) { + pair.name = pair.name.replace( '[]', '' ); + if ( 'whats-new' === pair.name ) { + self.model.set( 'content', pair.value ); + } else if ( -1 === _.indexOf( ['aw-whats-new-submit', 'whats-new-post-in'], pair.name ) ) { + if ( _.isUndefined( meta[ pair.name ] ) ) { + meta[ pair.name ] = pair.value; + } else { + if ( ! _.isArray( meta[ pair.name ] ) ) { + meta[ pair.name ] = [ meta[ pair.name ] ]; + } + + meta[ pair.name ].push( pair.value ); + } + } + } ); + + // Silently add meta + this.model.set( meta, { silent: true } ); + + var data = { + '_wpnonce_post_update': BP_Nouveau.activity.params.post_nonce + }; + + // Add the Akismet nonce if it exists. + if ( $('#_bp_as_nonce').val() ) { + data._bp_as_nonce = $('#_bp_as_nonce').val(); + } + + bp.ajax.post( 'post_update', _.extend( data, this.model.attributes ) ).done( function( response ) { + var store = bp.Nouveau.getStorage( 'bp-activity' ), + searchTerms = $( '[data-bp-search="activity"] input[type="search"]' ).val(), matches = {}, + toPrepend = false; + + // Look for matches if the stream displays search results. + if ( searchTerms ) { + searchTerms = new RegExp( searchTerms, 'im' ); + matches = response.activity.match( searchTerms ); + } + + /** + * Before injecting the activity into the stream, we need to check the filter + * and search terms are consistent with it when posting from a single item or + * from the Activity directory. + */ + if ( ( ! searchTerms || matches ) ) { + toPrepend = ! store.filter || 0 === parseInt( store.filter, 10 ) || 'activity_update' === store.filter; + } + + /** + * In the Activity directory, we also need to check the active scope. + * eg: An update posted in a private group should only show when the + * "My Groups" tab is active. + */ + if ( toPrepend && response.is_directory ) { + toPrepend = ( 'all' === store.scope && ( 'user' === self.model.get( 'object' ) || false === response.is_private ) ) || ( self.model.get( 'object' ) + 's' === store.scope ); + } + + // Reset the form + self.resetForm(); + + // Display a successful feedback if the acticity is not consistent with the displayed stream. + if ( ! toPrepend ) { + self.views.add( new bp.Views.activityFeedback( { value: response.message, type: 'updated' } ) ); + + // Inject the activity into the stream only if it hasn't been done already (HeartBeat). + } else if ( ! $( '#activity-' + response.id ).length ) { + + // It's the very first activity, let's make sure the container can welcome it! + if ( ! $( '#activity-stream ul.activity-list').length ) { + $( '#activity-stream' ).html( $( '<ul></ul>').addClass( 'activity-list item-list bp-list' ) ); + } + + // Prepend the activity. + bp.Nouveau.inject( '#activity-stream ul.activity-list', response.activity, 'prepend' ); + } + } ).fail( function( response ) { + + self.model.set( 'errors', { type: 'error', value: response.message } ); + } ); + } + } ); + + bp.Nouveau.Activity.postForm.start(); + +} )( bp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.min.js new file mode 100644 index 0000000000000000000000000000000000000000..81debc541f512f33f59c3eabf830912130e2fd9f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity-post-form.min.js @@ -0,0 +1 @@ +window.wp=window.wp||{},window.bp=window.bp||{},function(e,t){bp.Nouveau=bp.Nouveau||{},void 0!==bp.Nouveau.Activity&&"undefined"!=typeof BP_Nouveau&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Nouveau.Activity.postForm={start:function(){this.views=new Backbone.Collection,this.ActivityObjects=new bp.Collections.ActivityObjects,this.buttons=new Backbone.Collection,this.postFormView()},postFormView:function(){if(t("#bp-nouveau-activity-form").length){var e=new bp.Views.PostForm;this.views.add({id:"post_form",view:e}),e.inject("#bp-nouveau-activity-form")}}},void 0===bp.View&&(bp.View=bp.Backbone.View.extend({inject:function(e){this.render(),t(e).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}})),bp.Models.Activity=Backbone.Model.extend({defaults:{user_id:0,item_id:0,object:"",content:""}}),bp.Models.ActivityObject=Backbone.Model.extend({defaults:{id:0,name:"",avatar_url:"",object_type:"group"}}),bp.Collections.ActivityObjects=Backbone.Collection.extend({model:bp.Models.ActivityObject,sync:function(e,t,i){if("read"===e)return i=i||{},i.context=this,i.data=_.extend(i.data||{},{action:"bp_nouveau_get_activity_objects"}),bp.ajax.send(i)},parse:function(e){return _.isArray(e)||(e=[e]),e}}),bp.Views.activityFeedback=bp.View.extend({tagName:"div",id:"message",template:bp.template("activity-post-form-feedback"),initialize:function(){this.model=new Backbone.Model,this.options.value&&this.model.set("message",this.options.value,{silent:!0}),this.type="info",_.isUndefined(this.options.type)||"info"===this.options.type||(this.type=this.options.type),this.el.className="bp-messages bp-feedback "+this.type}}),bp.Views.ActivityInput=bp.View.extend({tagName:"input",attributes:{type:"text"},initialize:function(){_.isObject(this.options)&&_.each(this.options,function(e,t){this.$el.prop(t,e)},this)}}),bp.Views.WhatsNew=bp.View.extend({tagName:"textarea",className:"bp-suggestions",id:"whats-new",attributes:{name:"whats-new",cols:"50",rows:"4",placeholder:BP_Nouveau.activity.strings.whatsnewPlaceholder,"aria-label":BP_Nouveau.activity.strings.whatsnewLabel},initialize:function(){this.on("ready",this.adjustContent,this),this.options.activity.on("change:content",this.resetContent,this)},adjustContent:function(){this.$el.css({resize:"none",height:"50px"});var e=bp.Nouveau.getLinkParams(null,"r")||null;_.isNull(e)||(this.$el.text("@"+_.escape(e)+" "),this.$el.focus())},resetContent:function(e){_.isUndefined(e)||this.$el.val(e.get("content"))}}),bp.Views.WhatsNewPostIn=bp.View.extend({tagName:"select",id:"whats-new-post-in",attributes:{name:"whats-new-post-in","aria-label":BP_Nouveau.activity.strings.whatsnewpostinLabel},events:{change:"change"},keys:[],initialize:function(){this.model=new Backbone.Model,this.filters=this.options.filters||{},this.$el.html(_.chain(this.filters).map(function(e,i){return{el:t("<option></option>").val(i).html(e.text)[0],priority:e.priority||50}},this).sortBy("priority").pluck("el").value())},change:function(){var e=this.filters[this.el.value];e&&this.model.set({selected:this.el.value,placeholder:e.autocomplete_placeholder})}}),bp.Views.Item=bp.View.extend({tagName:"li",className:"bp-activity-object",template:bp.template("activity-target-item"),attributes:{role:"checkbox"},initialize:function(){this.model.get("selected")&&(this.el.className+=" selected")},events:{click:"setObject"},setObject:function(e){e.preventDefault(),!0===this.model.get("selected")?this.model.clear():this.model.set("selected",!0)}}),bp.Views.AutoComplete=bp.View.extend({tagName:"ul",id:"whats-new-post-in-box-items",events:{keyup:"autoComplete"},initialize:function(){var e=new bp.Views.ActivityInput({type:"text",id:"activity-autocomplete",placeholder:this.options.placeholder||""}).render();this.$el.prepend(t("<li></li>").html(e.$el)),this.on("ready",this.setFocus,this),this.collection.on("add",this.addItemView,this),this.collection.on("reset",this.cleanView,this)},setFocus:function(){this.$el.find("#activity-autocomplete").focus()},addItemView:function(e){this.views.add(new bp.Views.Item({model:e}))},autoComplete:function(){var e=t("#activity-autocomplete").val();this.collection.reset(),2>e.length||this.collection.fetch({data:{type:this.options.type,search:e,nonce:BP_Nouveau.nonces.activity},success:_.bind(this.itemFetched,this),error:_.bind(this.itemFetched,this)})},itemFetched:function(e){e.length||this.cleanView()},cleanView:function(){_.each(this.views._views[""],function(e){e.remove()})}}),bp.Views.FormAvatar=bp.View.extend({tagName:"div",id:"whats-new-avatar",template:bp.template("activity-post-form-avatar"),initialize:function(){this.model=new Backbone.Model(_.pick(BP_Nouveau.activity.params,["user_id","avatar_url","avatar_width","avatar_height","avatar_alt","user_domain"])),this.model.has("avatar_url")&&this.model.set("display_avatar",!0)}}),bp.Views.FormContent=bp.View.extend({tagName:"div",id:"whats-new-content",initialize:function(){this.$el.html(t("<div></div>").prop("id","whats-new-textarea")),this.views.set("#whats-new-textarea",new bp.Views.WhatsNew({activity:this.options.activity}))}}),bp.Views.FormOptions=bp.View.extend({tagName:"div",id:"whats-new-options",template:bp.template("activity-post-form-options")}),bp.Views.FormTarget=bp.View.extend({tagName:"div",id:"whats-new-post-in-box",className:"in-profile",initialize:function(){var e=new bp.Views.WhatsNewPostIn({filters:BP_Nouveau.activity.params.objects});this.views.add(e),e.model.on("change",this.attachAutocomplete,this),bp.Nouveau.Activity.postForm.ActivityObjects.on("change:selected",this.postIn,this)},attachAutocomplete:function(e){0!==bp.Nouveau.Activity.postForm.ActivityObjects.models.length&&bp.Nouveau.Activity.postForm.ActivityObjects.reset(),_.each(this.views._views[""],function(e){_.isUndefined(e.collection)||e.remove()}),"profile"!==e.get("selected")?(this.views.add(new bp.Views.AutoComplete({collection:bp.Nouveau.Activity.postForm.ActivityObjects,type:e.get("selected"),placeholder:e.get("placeholder")})),this.model.set("object",e.get("selected"))):this.model.set({object:"user",item_id:0}),this.updateDisplay()},postIn:function(e){if(_.isUndefined(e.get("id")))return this.model.set("item_id",0),void this.attachAutocomplete(new Backbone.Model({selected:this.model.get("object")}));this.model.set("item_id",e.get("id")),this.views.set("#whats-new-post-in-box-items",new bp.Views.Item({model:e}))},updateDisplay:function(){"user"!==this.model.get("object")?this.$el.removeClass():this.$el.hasClass("in-profile")||this.$el.addClass("in-profile")}}),bp.Views.FormButtons=bp.View.extend({tagName:"div",id:"whats-new-actions",initialize:function(){this.views.add(new bp.View({tagName:"ul",id:"whats-new-buttons"})),_.each(this.collection.models,function(e){this.addItemView(e)},this),this.collection.on("change:active",this.isActive,this)},addItemView:function(e){this.views.add("#whats-new-buttons",new bp.Views.FormButton({model:e}))},isActive:function(e){_.each(this.views._views[""],function(e,t){0!==t&&e.remove()}),!0===e.get("active")?(_.each(this.views._views["#whats-new-buttons"],function(t){t.model.get("id")!==e.get("id")&&(t.model.set("active",!1,{silent:!0}),t.$el.removeClass("active"),this.collection.trigger("reset:"+t.model.get("id"),this.model))},this),this.collection.trigger("display:"+e.get("id"),this)):this.collection.trigger("reset:"+e.get("id"),this.model)}}),bp.Views.FormButton=bp.View.extend({tagName:"li",className:"whats-new-button",template:bp.template("activity-post-form-buttons"),events:{click:"setActive"},setActive:function(e){var t=this.model.get("active")||!1;e.preventDefault(),!1===t?(this.$el.addClass("active"),this.model.set("active",!0)):(this.$el.removeClass("active"),this.model.set("active",!1))}}),bp.Views.FormSubmit=bp.View.extend({tagName:"div",id:"whats-new-submit",className:"in-profile",initialize:function(){var e=new bp.Views.ActivityInput({type:"reset",id:"aw-whats-new-reset",className:"text-button small",value:BP_Nouveau.activity.strings.cancelButton}),t=new bp.Views.ActivityInput({type:"submit",id:"aw-whats-new-submit",className:"button",name:"aw-whats-new-submit",value:BP_Nouveau.activity.strings.postUpdateButton});this.views.set([t,e]),this.model.on("change:object",this.updateDisplay,this)},updateDisplay:function(e){_.isUndefined(e)||("user"!==e.get("object")?this.$el.removeClass("in-profile"):this.$el.hasClass("in-profile")||this.$el.addClass("in-profile"))}}),bp.Views.PostForm=bp.View.extend({tagName:"form",className:"activity-form",id:"whats-new-form",attributes:{name:"whats-new-form",method:"post"},events:{"focus #whats-new":"displayFull",reset:"resetForm",submit:"postUpdate",keydown:"postUpdate"},initialize:function(){this.model=new bp.Models.Activity(_.pick(BP_Nouveau.activity.params,["user_id","item_id","object"])),this.resetModel=this.model.clone(),this.views.set([new bp.Views.FormAvatar,new bp.Views.FormContent({activity:this.model})]),this.model.on("change:errors",this.displayFeedback,this)},displayFull:function(e){this.cleanFeedback(),2===this.views._views[""].length&&(t(e.target).css({resize:"vertical",height:"auto"}),!0===BP_Nouveau.activity.params.backcompat&&this.views.add(new bp.Views.FormOptions({model:this.model})),_.isUndefined(BP_Nouveau.activity.params.buttons)||(bp.Nouveau.Activity.postForm.buttons.set(BP_Nouveau.activity.params.buttons),this.views.add(new bp.Views.FormButtons({collection:bp.Nouveau.Activity.postForm.buttons,model:this.model}))),!_.isUndefined(BP_Nouveau.activity.params.objects)&&1<_.keys(BP_Nouveau.activity.params.objects).length&&this.views.add(new bp.Views.FormTarget({model:this.model})),this.views.add(new bp.Views.FormSubmit({model:this.model})))},resetForm:function(){_.each(this.views._views[""],function(e,t){t>1&&e.remove()}),t("#whats-new").css({resize:"none",height:"50px"}),this.model.clear(),this.model.set(this.resetModel.attributes)},cleanFeedback:function(){_.each(this.views._views[""],function(e){"message"===e.$el.prop("id")&&e.remove()})},displayFeedback:function(e){_.isUndefined(this.model.get("errors"))?this.cleanFeedback():this.views.add(new bp.Views.activityFeedback(e.get("errors")))},postUpdate:function(e){var i=this,s={};if(e){if("keydown"===e.type&&(13!==e.keyCode||!e.ctrlKey))return e;e.preventDefault()}_.each(this.$el.serializeArray(),function(e){e.name=e.name.replace("[]",""),"whats-new"===e.name?i.model.set("content",e.value):-1===_.indexOf(["aw-whats-new-submit","whats-new-post-in"],e.name)&&(_.isUndefined(s[e.name])?s[e.name]=e.value:(_.isArray(s[e.name])||(s[e.name]=[s[e.name]]),s[e.name].push(e.value)))}),this.model.set(s,{silent:!0});var a={_wpnonce_post_update:BP_Nouveau.activity.params.post_nonce};t("#_bp_as_nonce").val()&&(a._bp_as_nonce=t("#_bp_as_nonce").val()),bp.ajax.post("post_update",_.extend(a,this.model.attributes)).done(function(e){var s=bp.Nouveau.getStorage("bp-activity"),a=t('[data-bp-search="activity"] input[type="search"]').val(),o={},n=!1;a&&(a=new RegExp(a,"im"),o=e.activity.match(a)),a&&!o||(n=!s.filter||0===parseInt(s.filter,10)||"activity_update"===s.filter),n&&e.is_directory&&(n="all"===s.scope&&("user"===i.model.get("object")||!1===e.is_private)||i.model.get("object")+"s"===s.scope),i.resetForm(),n?t("#activity-"+e.id).length||(t("#activity-stream ul.activity-list").length||t("#activity-stream").html(t("<ul></ul>").addClass("activity-list item-list bp-list")),bp.Nouveau.inject("#activity-stream ul.activity-list",e.activity,"prepend")):i.views.add(new bp.Views.activityFeedback({value:e.message,type:"updated"}))}).fail(function(e){i.model.set("errors",{type:"error",value:e.message})})}}),bp.Nouveau.Activity.postForm.start())}(bp,jQuery); \ No newline at end of file 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 new file mode 100644 index 0000000000000000000000000000000000000000..f7c3178f5809d30fc5253b20b3fe9ccce0ba8f9d --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.js @@ -0,0 +1,837 @@ +/* jshint browser: true */ +/* global bp, BP_Nouveau */ +/* @version 3.1.0 */ +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + bp.Nouveau = bp.Nouveau || {}; + + /** + * [Activity description] + * @type {Object} + */ + bp.Nouveau.Activity = { + + /** + * [start description] + * @return {[type]} [description] + */ + start: function() { + this.setupGlobals(); + + // Listen to events ("Add hooks!") + this.addListeners(); + }, + + /** + * [setupGlobals description] + * @return {[type]} [description] + */ + setupGlobals: function() { + // Init just posted activities + this.just_posted = []; + + // Init current page + this.current_page = 1; + + // Init mentions count + this.mentions_count = Number( $( bp.Nouveau.objectNavParent + ' [data-bp-scope="mentions"]' ).find( 'a span' ).html() ) || 0; + + // HeartBeat Globals + this.heartbeat_data = { + newest : '', + highlights : {}, + last_recorded : 0, + first_recorded : 0, + document_title : $( document ).prop( 'title' ) + }; + }, + + /** + * [addListeners description] + */ + addListeners: function() { + // HeartBeat listeners + $( '#buddypress' ).on( 'bp_heartbeat_send', this.heartbeatSend.bind( this ) ); + $( '#buddypress' ).on( 'bp_heartbeat_tick', this.heartbeatTick.bind( this ) ); + + // Inject Activities + $( '#buddypress [data-bp-list="activity"]' ).on( 'click', 'li.load-newest, li.load-more', this.injectActivities.bind( this ) ); + + // Hightlight new activities & clean up the stream + $( '#buddypress' ).on( 'bp_ajax_request', '[data-bp-list="activity"]', this.scopeLoaded.bind( this ) ); + + // Activity comments effect + $( '#buddypress [data-bp-list="activity"]' ).on( 'bp_ajax_append', this.hideComments ); + $( '#buddypress [data-bp-list="activity"]' ).on( 'click', '.show-all', this.showComments ); + + // Activity actions + $( '#buddypress [data-bp-list="activity"]' ).on( 'click', '.activity-item', bp.Nouveau, this.activityActions ); + $( document ).keydown( this.commentFormAction ); + }, + + /** + * [heartbeatSend description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + heartbeatSend: function( event, data ) { + this.heartbeat_data.first_recorded = $( '#buddypress [data-bp-list] [data-bp-activity-id]' ).first().data( 'bp-timestamp' ) || 0; + + if ( 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; + } + + data.bp_activity_last_recorded = this.heartbeat_data.last_recorded; + + if ( $( '#buddypress .dir-search input[type=search]' ).length ) { + data.bp_activity_last_recorded_search_terms = $( '#buddypress .dir-search input[type=search]' ).val(); + } + + $.extend( data, { bp_heartbeat: bp.Nouveau.getStorage( 'bp-activity' ) } ); + }, + + /** + * [heartbeatTick description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + heartbeatTick: function( event, data ) { + var newest_activities_count, newest_activities, objects = bp.Nouveau.objects, + scope = bp.Nouveau.getStorage( 'bp-activity', 'scope' ), self = this; + + // Only proceed if we have newest activities + if ( undefined === data || ! data.bp_activity_newest_activities ) { + return; + } + + this.heartbeat_data.newest = $.trim( data.bp_activity_newest_activities.activities ) + this.heartbeat_data.newest; + this.heartbeat_data.last_recorded = Number( data.bp_activity_newest_activities.last_recorded ); + + // Parse activities + newest_activities = $( this.heartbeat_data.newest ).filter( '.activity-item' ); + + // Count them + newest_activities_count = Number( newest_activities.length ); + + /** + * It's not a regular object but we need it! + * so let's add it temporarly.. + */ + objects.push( 'mentions' ); + + /** + * On the All Members tab, we need to know what these activities are about + * in order to update all the other tabs dynamic span + */ + if ( 'all' === scope ) { + + $.each( newest_activities, function( a, activity ) { + activity = $( activity ); + + $.each( objects, function( o, object ) { + if ( -1 !== $.inArray( 'bp-my-' + object, activity.get( 0 ).classList ) ) { + if ( undefined === self.heartbeat_data.highlights[ object ] ) { + self.heartbeat_data.highlights[ object ] = [ activity.data( 'bp-activity-id' ) ]; + } else if ( -1 === $.inArray( activity.data( 'bp-activity-id' ), self.heartbeat_data.highlights[ object ] ) ) { + self.heartbeat_data.highlights[ object ].push( activity.data( 'bp-activity-id' ) ); + } + } + } ); + } ); + + // Remove the specific classes to count highligthts + var regexp = new RegExp( 'bp-my-(' + objects.join( '|' ) + ')', 'g' ); + this.heartbeat_data.newest = this.heartbeat_data.newest.replace( regexp, '' ); + + /** + * Deal with the 'All Members' dynamic span from here as HeartBeat is working even when + * the user is not logged in + */ + $( bp.Nouveau.objectNavParent + ' [data-bp-scope="all"]' ).find( 'a span' ).html( newest_activities_count ); + + // Set all activities to be highlighted for the current scope + } else { + // Init the array of highlighted activities + this.heartbeat_data.highlights[ scope ] = []; + + $.each( newest_activities, function( a, activity ) { + self.heartbeat_data.highlights[ scope ].push( $( activity ).data( 'bp-activity-id' ) ); + } ); + } + + $.each( objects, function( o, object ) { + if ( undefined !== self.heartbeat_data.highlights[ object ] && self.heartbeat_data.highlights[ object ].length ) { + var count = 0; + + if ( 'mentions' === object ) { + count = self.mentions_count; + } + + $( bp.Nouveau.objectNavParent + ' [data-bp-scope="' + object + '"]' ).find( 'a span' ).html( Number( self.heartbeat_data.highlights[ object ].length ) + count ); + } + } ); + + /** + * Let's remove the mentions from objects! + */ + objects.pop(); + + // Add an information about the number of newest activities inside the document's title + $( document ).prop( 'title', '(' + newest_activities_count + ') ' + this.heartbeat_data.document_title ); + + // Update the Load Newest li if it already exists. + if ( $( '#buddypress [data-bp-list="activity"] li' ).first().hasClass( 'load-newest' ) ) { + var newest_link = $( '#buddypress [data-bp-list="activity"] .load-newest a' ).html(); + $( '#buddypress [data-bp-list="activity"] .load-newest a' ).html( newest_link.replace( /([0-9]+)/, newest_activities_count ) ); + + // Otherwise add it + } else { + $( '#buddypress [data-bp-list="activity"] ul.activity-list' ).prepend( '<li class="load-newest"><a href="#newest">' + BP_Nouveau.newest + ' (' + newest_activities_count + ')</a></li>' ); + } + + /** + * Finally trigger a pending event containing the activity heartbeat data + */ + $( '#buddypress [data-bp-list="activity"]' ).trigger( 'bp_heartbeat_pending', this.heartbeat_data ); + }, + + /** + * [injectQuery description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + injectActivities: function( event ) { + var store = bp.Nouveau.getStorage( 'bp-activity' ), + scope = store.scope || null, filter = store.filter || null; + + // Load newest activities + if ( $( event.currentTarget ).hasClass( 'load-newest' ) ) { + // Stop event propagation + event.preventDefault(); + + $( event.currentTarget ).remove(); + + /** + * If a plugin is updating the recorded_date of an activity + * it will be loaded as a new one. We need to look in the + * stream and eventually remove similar ids to avoid "double". + */ + var activities = $.parseHTML( this.heartbeat_data.newest ); + + $.each( activities, function( a, activity ){ + if( 'LI' === activity.nodeName && $( activity ).hasClass( 'just-posted' ) ) { + if( $( '#' + $( activity ).prop( 'id' ) ).length ) { + $( '#' + $( activity ).prop( 'id' ) ).remove(); + } + } + } ); + + // Now the stream is cleaned, prepend newest + $( event.delegateTarget ).find( '.activity-list' ).prepend( this.heartbeat_data.newest ).trigger( 'bp_heartbeat_prepend', this.heartbeat_data ); + + // Reset the newest activities now they're displayed + this.heartbeat_data.newest = ''; + + // Reset the All members tab dynamic span id it's the current one + if ( 'all' === scope ) { + $( bp.Nouveau.objectNavParent + ' [data-bp-scope="all"]' ).find( 'a span' ).html( '' ); + } + + // Specific to mentions + if ( 'mentions' === scope ) { + // Now mentions are displayed, remove the user_metas + bp.Nouveau.ajax( { action: 'activity_clear_new_mentions' }, 'activity' ); + this.mentions_count = 0; + } + + // Activities are now displayed, clear the newest count for the scope + $( bp.Nouveau.objectNavParent + ' [data-bp-scope="' + scope + '"]' ).find( 'a span' ).html( '' ); + + // Activities are now displayed, clear the highlighted activities for the scope + if ( undefined !== this.heartbeat_data.highlights[ scope ] ) { + this.heartbeat_data.highlights[ scope ] = []; + } + + // Remove highlighted for the current scope + setTimeout( function () { + $( event.delegateTarget ).find( '[data-bp-activity-id]' ).removeClass( 'newest_' + scope + '_activity' ); + }, 3000 ); + + // Reset the document title + $( document ).prop( 'title', this.heartbeat_data.document_title ); + + // Load more activities + } else if ( $( event.currentTarget ).hasClass( 'load-more' ) ) { + var next_page = ( Number( this.current_page ) * 1 ) + 1, self = this, search_terms = ''; + + // Stop event propagation + event.preventDefault(); + + $( event.currentTarget ).find( 'a' ).first().addClass( 'loading' ); + + // reset the just posted + this.just_posted = []; + + // Now set it + $( event.delegateTarget ).children( '.just-posted' ).each( function() { + self.just_posted.push( $( this ).data( 'bp-activity-id' ) ); + } ); + + if ( $( '#buddypress .dir-search input[type=search]' ).length ) { + search_terms = $( '#buddypress .dir-search input[type=search]' ).val(); + } + + bp.Nouveau.objectRequest( { + object : 'activity', + scope : scope, + filter : filter, + search_terms : search_terms, + page : next_page, + method : 'append', + exclude_just_posted : this.just_posted.join( ',' ), + target : '#buddypress [data-bp-list] ul.bp-list' + } ).done( function( response ) { + if ( true === response.success ) { + $( event.currentTarget ).remove(); + + // Update the current page + self.current_page = next_page; + } + } ); + } + }, + + /** + * [truncateComments description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + hideComments: function( event ) { + var comments = $( event.target ).find( '.activity-comments' ), + activity_item, comment_items, comment_count, comment_parents; + + if ( ! comments.length ) { + return; + } + + comments.each( function( c, comment ) { + comment_parents = $( comment ).children( 'ul' ); + comment_items = $( comment_parents ).find( 'li' ); + + + if ( ! comment_items.length ) { + return; + } + + // Get the activity id + activity_item = $( comment ).closest( '.activity-item' ); + + // Get the comment count + comment_count = $( '#acomment-comment-' + activity_item.data( 'bp-activity-id' ) + ' span.comment-count' ).html() || ' '; + + // Keep latest 5 comments + comment_items.each( function( i, item ) { + if ( i < comment_items.length - 5 ) { + $( item ).addClass('bp-hidden').hide(); + + // Prepend a link to display all + if ( ! i ) { + $( item ).before( '<li class="show-all"><button class="text-button" type="button" data-bp-show-comments-id="#' + activity_item.prop( 'id' ) + '/show-all/"><span class="icon dashicons dashicons-visibility" aria-hidden="true"></span> ' + BP_Nouveau.show_x_comments.replace( '%d', comment_count ) + '</button></li>' ); + } + } + } ); + + // If all parents are hidden, reveal at least one. It seems very risky to manipulate the DOM to keep exactly 5 comments! + if ( $( comment_parents ).children( '.bp-hidden' ).length === $( comment_parents ).children( 'li' ).length - 1 && $( comment_parents ).find( 'li.show-all' ).length ) { + $( comment_parents ).children( 'li' ).removeClass( 'bp-hidden' ).toggle(); + } + } ); + }, + + /** + * [showComments description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + showComments: function( event ) { + // Stop event propagation + event.preventDefault(); + + $( event.target ).addClass( 'loading' ); + + setTimeout( function() { + $( event.target ).closest( 'ul' ).find( 'li' ).removeClass('bp-hidden').fadeIn( 300, function() { + $( event.target ).parent( 'li' ).remove(); + } ); + }, 600 ); + }, + + /** + * [scopeLoaded description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + scopeLoaded: function ( event, data ) { + // Make sure to only keep 5 root comments + this.hideComments( event ); + + // Reset the pagination for the scope. + this.current_page = 1; + + // Mentions are specific + if ( 'mentions' === data.scope && undefined !== data.response.new_mentions ) { + $.each( data.response.new_mentions, function( i, id ) { + $( '#buddypress #activity-stream' ).find( '[data-bp-activity-id="' + id + '"]' ).addClass( 'newest_mentions_activity' ); + } ); + + // Reset mentions count + this.mentions_count = 0; + } else if ( undefined !== this.heartbeat_data.highlights[data.scope] && this.heartbeat_data.highlights[data.scope].length ) { + $.each( this.heartbeat_data.highlights[data.scope], function( i, id ) { + if ( $( '#buddypress #activity-stream' ).find( '[data-bp-activity-id="' + id + '"]' ).length ) { + $( '#buddypress #activity-stream' ).find( '[data-bp-activity-id="' + id + '"]' ).addClass( 'newest_' + data.scope + '_activity' ); + } + } ); + } + + // Reset the newest activities now they're displayed + this.heartbeat_data.newest = ''; + $.each( $( bp.Nouveau.objectNavParent + ' [data-bp-scope]' ).find( 'a span' ), function( s, count ) { + if ( 0 === parseInt( $( count ).html(), 10 ) ) { + $( count ).html( '' ); + } + } ); + + // Activities are now loaded, clear the highlighted activities for the scope + if ( undefined !== this.heartbeat_data.highlights[ data.scope ] ) { + this.heartbeat_data.highlights[ data.scope ] = []; + } + + // Reset the document title + $( document ).prop( 'title', this.heartbeat_data.document_title ); + + setTimeout( function () { + $( '#buddypress #activity-stream .activity-item' ).removeClass( 'newest_' + data.scope +'_activity' ); + }, 3000 ); + }, + + /** + * [activityActions description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + activityActions: function( event ) { + var parent = event.data, target = $( event.target ), activity_item = $( event.currentTarget ), + activity_id = activity_item.data( 'bp-activity-id' ), stream = $( event.delegateTarget ), + item_id, form; + + // In case the target is set to a span inside the link. + if ( $( target ).is( 'span' ) ) { + target = $( target ).closest( 'a' ); + } + + // Favoriting + if ( target.hasClass( 'fav') || target.hasClass('unfav') ) { + var type = target.hasClass( 'fav' ) ? 'fav' : 'unfav'; + + // Stop event propagation + event.preventDefault(); + + target.addClass( 'loading' ); + + parent.ajax( { action: 'activity_mark_' + type, 'id': activity_id }, 'activity' ).done( function( response ) { + target.removeClass( 'loading' ); + + if ( false === response.success ) { + return; + } else { + target.fadeOut( 200, function() { + if ( $( this ).find( 'span' ).first().length ) { + $( this ).find( 'span' ).first().html( response.data.content ); + } else { + $( this ).html( response.data.content ); + } + $( this ).prop( 'title', response.data.content ); + + if ('false' === $(this).attr('aria-pressed') ) { + $( this ).attr('aria-pressed', 'true'); + } else { + $( this ).attr('aria-pressed', 'false'); + } + + $( this ).fadeIn( 200 ); + } ); + } + + if ( 'fav' === type ) { + if ( undefined !== response.data.directory_tab ) { + if ( ! $( parent.objectNavParent + ' [data-bp-scope="favorites"]' ).length ) { + $( parent.objectNavParent + ' [data-bp-scope="all"]' ).after( response.data.directory_tab ); + } + } + + target.removeClass( 'fav' ); + target.addClass( 'unfav' ); + + } else if ( 'unfav' === type ) { + var favoriteScope = $( '[data-bp-user-scope="favorites"]' ).hasClass( 'selected' ) || $( parent.objectNavParent + ' [data-bp-scope="favorites"]' ).hasClass( 'selected' ); + + // If on user's profile or on the favorites directory tab, remove the entry + if ( favoriteScope ) { + activity_item.remove(); + } + + if ( undefined !== response.data.no_favorite ) { + // Remove the tab when on activity directory but not on the favorites tabs + if ( $( parent.objectNavParent + ' [data-bp-scope="all"]' ).length && $( parent.objectNavParent + ' [data-bp-scope="all"]' ).hasClass( 'selected' ) ) { + $( parent.objectNavParent + ' [data-bp-scope="favorites"]' ).remove(); + + // In all the other cases, append a message to the empty stream + } else if ( favoriteScope ) { + stream.append( response.data.no_favorite ); + } + } + + target.removeClass( 'unfav' ); + target.addClass( 'fav' ); + } + } ); + } + + // Deleting or spamming + if ( target.hasClass( 'delete-activity' ) || target.hasClass( 'acomment-delete' ) || target.hasClass( 'spam-activity' ) || target.hasClass( 'spam-activity-comment' ) ) { + var activity_comment_li = target.closest( '[data-bp-activity-comment-id]' ), + activity_comment_id = activity_comment_li.data( 'bp-activity-comment-id' ), + li_parent, comment_count_span, comment_count, show_all_a, deleted_comments_count = 0; + + // Stop event propagation + event.preventDefault(); + + if ( undefined !== BP_Nouveau.confirm && false === window.confirm( BP_Nouveau.confirm ) ) { + return false; + } + + target.addClass( 'loading' ); + + var ajaxData = { + action : 'delete_activity', + 'id' : activity_id, + '_wpnonce' : parent.getLinkParams( target.prop( 'href' ), '_wpnonce' ), + 'is_single' : target.closest( '[data-bp-single]' ).length + }; + + // Only the action changes when spamming an activity or a comment. + if ( target.hasClass( 'spam-activity' ) || target.hasClass( 'spam-activity-comment' ) ) { + ajaxData.action = 'bp_spam_activity'; + } + + // Set defaults parent li to activity container + li_parent = activity_item; + + // If it's a comment edit ajaxData. + if ( activity_comment_id ) { + delete ajaxData.is_single; + + // Set comment data. + ajaxData.id = activity_comment_id; + ajaxData.is_comment = true; + + // Set parent li to activity comment container + li_parent = activity_comment_li; + } + + parent.ajax( ajaxData, 'activity' ).done( function( response ) { + target.removeClass( 'loading' ); + + if ( false === response.success ) { + li_parent.prepend( response.data.feedback ); + li_parent.find( '.bp-feedback' ).hide().fadeIn( 300 ); + } else { + // Specific case of the single activity screen. + if ( response.data.redirect ) { + return window.location.href = response.data.redirect; + } + + if ( activity_comment_id ) { + deleted_comments_count = 1; + + // Move the form if needed + activity_item.append( activity_comment_li.find( 'form' ) ); + + // Count child comments if there are some + $.each( activity_comment_li.find( 'li' ), function() { + deleted_comments_count += 1; + } ); + + // Update the button count + comment_count_span = activity_item.find( '.acomment-reply span.comment-count' ); + comment_count = Number( comment_count_span.html() - deleted_comments_count ); + comment_count_span.html( comment_count ); + + // Update the show all count + show_all_a = activity_item.find( 'li.show-all a' ); + if ( show_all_a.length ) { + show_all_a.html( BP_Nouveau.show_x_comments.replace( '%d', comment_count ) ); + } + + // Clean up the parent activity classes. + if ( 0 === comment_count ) { + activity_item.removeClass( 'has-comments' ); + } + } + + // Remove the entry + li_parent.slideUp( 300, function() { + li_parent.remove(); + } ); + + // reset vars to get newest activities when an activity is deleted + if ( ! activity_comment_id && activity_item.data( 'bp-timestamp' ) === parent.Activity.heartbeat_data.last_recorded ) { + parent.Activity.heartbeat_data.newest = ''; + parent.Activity.heartbeat_data.last_recorded = 0; + } + } + } ); + } + + // Reading more + if ( target.closest( 'span' ).hasClass( 'activity-read-more' ) ) { + var content = target.closest( 'div' ), readMore = target.closest( 'span' ); + + item_id = null; + + if ( $( content ).hasClass( 'activity-inner' ) ) { + item_id = activity_id; + } else if ( $( content ).hasClass( 'acomment-content' ) ) { + item_id = target.closest( 'li' ).data( 'bp-activity-comment-id' ); + } + + if ( ! item_id ) { + return event; + } + + // Stop event propagation + event.preventDefault(); + + $( readMore ).addClass( 'loading' ); + + parent.ajax( { + action : 'get_single_activity_content', + id : item_id + }, 'activity' ).done( function( response ) { + $( readMore ).removeClass( 'loading' ); + + if ( content.parent().find( '.bp-feedback' ).length ) { + content.parent().find( '.bp-feedback' ).remove(); + } + + if ( false === response.success ) { + content.after( response.data.feedback ); + content.parent().find( '.bp-feedback' ).hide().fadeIn( 300 ); + } else { + $( content ).slideUp( 300 ).html( response.data.contents ).slideDown( 300 ); + } + } ); + } + + // Displaying the comment form + if ( target.hasClass( 'acomment-reply' ) || target.parent().hasClass( 'acomment-reply' ) ) { + var comment_link = target; + + form = $( '#ac-form-' + activity_id ); + item_id = activity_id; + + // Stop event propagation + event.preventDefault(); + + // If the comment count span inside the link is clicked + if ( target.parent().hasClass( 'acomment-reply' ) ) { + comment_link = target.parent(); + } + + if ( target.closest( 'li' ).data( 'bp-activity-comment-id' ) ) { + item_id = target.closest( 'li' ).data( 'bp-activity-comment-id' ); + } + + // ?? hide and display none.. + //form.css( 'display', 'none' ); + form.removeClass( 'root' ); + $('.ac-form').hide(); + + /* Remove any error messages */ + $.each( form.children( 'div' ), function( e, err ) { + if ( $( err ).hasClass( 'error' ) ) { + $( err ).remove(); + } + } ); + + // It's an activity we're commenting + if ( item_id === activity_id ) { + $( '[data-bp-activity-id="' + item_id + '"] .activity-comments' ).append( form ); + form.addClass( 'root' ); + + // It's a comment we're replying to + } else { + $( '[data-bp-activity-comment-id="' + item_id + '"]' ).append( form ); + } + + form.slideDown( 200 ); + + // change the aria state from false to true + target.attr( 'aria-expanded', 'true' ); + + $.scrollTo( form, 500, { + offset:-100, + easing:'swing' + } ); + + $( '#ac-form-' + activity_id + ' textarea' ).focus(); + } + + // Removing the form + if ( target.hasClass( 'ac-reply-cancel' ) ) { + + $( target ).closest( '.ac-form' ).slideUp( 200 ); + + // Change the aria state back to false on comment cancel + $( '.acomment-reply').attr( 'aria-expanded', 'false' ); + + // Stop event propagation + event.preventDefault(); + } + + // Submitting comments and replies + if ( 'ac_form_submit' === target.prop( 'name' ) ) { + var comment_content, comment_data; + + form = target.closest( 'form' ); + item_id = activity_id; + + // Stop event propagation + event.preventDefault(); + + if ( target.closest( 'li' ).data( 'bp-activity-comment-id' ) ) { + item_id = target.closest( 'li' ).data( 'bp-activity-comment-id' ); + } + + comment_content = $( form ).find( 'textarea' ).first(); + + target.addClass( 'loading' ).prop( 'disabled', true ); + comment_content.addClass( 'loading' ).prop( 'disabled', true ); + + comment_data = { + action : 'new_activity_comment', + _wpnonce_new_activity_comment : $( '#_wpnonce_new_activity_comment' ).val(), + comment_id : item_id, + form_id : activity_id, + content : comment_content.val() + }; + + // Add the Akismet nonce if it exists + if ( $( '#_bp_as_nonce_' + activity_id ).val() ) { + comment_data['_bp_as_nonce_' + activity_id] = $( '#_bp_as_nonce_' + activity_id ).val(); + } + + parent.ajax( comment_data, 'activity' ).done( function( response ) { + target.removeClass( 'loading' ); + comment_content.removeClass( 'loading' ); + $( '.acomment-reply' ).attr( 'aria-expanded', 'false' ); + + if ( false === response.success ) { + form.append( $( response.data.feedback ).hide().fadeIn( 200 ) ); + } else { + var activity_comments = form.parent(); + var the_comment = $.trim( response.data.contents ); + + form.fadeOut( 200, function() { + if ( 0 === activity_comments.children( 'ul' ).length ) { + if ( activity_comments.hasClass( 'activity-comments' ) ) { + activity_comments.prepend( '<ul></ul>' ); + } else { + activity_comments.append( '<ul></ul>' ); + } + } + + activity_comments.children( 'ul' ).append( $( the_comment ).hide().fadeIn( 200 ) ); + $( form ).find( 'textarea' ).first().val( '' ); + + activity_comments.parent().addClass( 'has-comments' ); + } ); + + // why, as it's already done a few lines ahead ??? + //jq( '#' + form.attr('id') + ' textarea').val(''); + + // Set the new count + comment_count = Number( $( activity_item ).find( 'a span.comment-count' ).html() || 0 ) + 1; + + // Increase the "Reply (X)" button count + $( activity_item ).find( 'a span.comment-count' ).html( comment_count ); + + // Increment the 'Show all x comments' string, if present + show_all_a = $( activity_item ).find( '.show-all a' ); + if ( show_all_a ) { + show_all_a.html( BP_Nouveau.show_x_comments.replace( '%d', comment_count ) ); + } + } + + target.prop( 'disabled', false ); + comment_content.prop( 'disabled', false ); + } ); + } + }, + + /** + * [closeCommentForm description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + commentFormAction: function( event ) { + var element, keyCode; + + event = event || window.event; + + if ( event.target ) { + element = event.target; + } else if ( event.srcElement) { + element = event.srcElement; + } + + if ( element.nodeType === 3 ) { + element = element.parentNode; + } + + if ( event.altKey === true || event.metaKey === true ) { + return event; + } + + // Not in a comment textarea, return + if ( element.tagName !== 'TEXTAREA' || ! $( element ).hasClass( 'ac-input' ) ) { + return event; + } + + keyCode = ( event.keyCode) ? event.keyCode : event.which; + + if ( 27 === keyCode && false === event.ctrlKey ) { + if ( element.tagName === 'TEXTAREA' ) { + $( element ).closest( 'form' ).slideUp( 200 ); + } + } else if ( event.ctrlKey && 13 === keyCode && $( element ).val() ) { + $( element ).closest( 'form' ).find( '[type=submit]' ).first().trigger( 'click' ); + } + } + }; + + // Launch BP Nouveau Activity + bp.Nouveau.Activity.start(); + +} )( bp, jQuery ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..7cab8376db14a8cfc66f904f069d8b76ff5996b7 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-activity.min.js @@ -0,0 +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){t<i.length-5&&(a(n).addClass("bp-hidden").hide(),t||a(n).before('<li class="show-all"><button class="text-button" type="button" data-bp-show-comments-id="#'+e.prop("id")+'/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).prop("title",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,m=n.closest("[data-bp-activity-comment-id]"),u=m.data("bp-activity-comment-id"),v=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,u&&(delete _.is_single,_.id=u,_.is_comment=!0,l=m),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;u&&(v=1,d.append(m.find("form")),a.each(m.find("li"),function(){v+=1}),p=d.find(".acomment-reply span.comment-count"),h=Number(p.html()-v),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()}),u||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").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,t.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-group-invites.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-group-invites.js new file mode 100644 index 0000000000000000000000000000000000000000..8730f86c4128c4f8dd64e9c886b405baf1041b9c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-group-invites.js @@ -0,0 +1,837 @@ +/* global wp, bp, BP_Nouveau, _, Backbone */ +/* @version 3.0.0 */ +window.wp = window.wp || {}; +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + _.extend( bp, _.pick( wp, 'Backbone', 'ajax', 'template' ) ); + + bp.Models = bp.Models || {}; + bp.Collections = bp.Collections || {}; + bp.Views = bp.Views || {}; + + bp.Nouveau = bp.Nouveau || {}; + + /** + * [Nouveau description] + * @type {Object} + */ + bp.Nouveau.GroupInvites = { + /** + * [start description] + * @return {[type]} [description] + */ + start: function() { + this.scope = null; + this.views = new Backbone.Collection(); + this.navItems = new Backbone.Collection(); + this.users = new bp.Collections.Users(); + this.invites = this.users.clone(); + + // Add views + this.setupNav(); + this.setupLoops(); + this.displayFeedback( BP_Nouveau.group_invites.loading, 'loading' ); + + // Add an invite when a user is selected + this.users.on( 'change:selected', this.addInvite, this ); + + // Add an invite when a user is selected + this.invites.on( 'change:selected', this.manageInvite, this ); + + // And display the Invites nav + this.invites.on( 'add', this.invitesNav, this ); + this.invites.on( 'reset', this.hideInviteNav, this ); + }, + + setupNav: function() { + var activeView; + + // Init the nav + this.nav = new bp.Views.invitesNav( { collection: this.navItems } ); + + // loop through available nav items to build it + _.each( BP_Nouveau.group_invites.nav, function( item, index ) { + if ( ! _.isObject( item ) ) { + return; + } + + // Reset active View + activeView = 0; + + if ( 0 === index ) { + this.scope = item.id; + activeView = 1; + } + + this.navItems.add( { + id : item.id, + name : item.caption, + href : item.href || '#members-list', + active : activeView, + hide : _.isUndefined( item.hide ) ? 0 : item.hide + } ); + }, this ); + + // Inject the nav into the DOM + this.nav.inject( '.bp-invites-nav' ); + + // Listen to the confirm event + this.nav.on( 'bp-invites:confirm', this.loadConfirmView, this ); + this.nav.on( 'bp-invites:loops', this.setupLoops, this ); + }, + + setupLoops: function( scope ) { + var users; + + scope = scope || this.scope; + + // Reset Views + this.clearViews(); + + // Only display the loading message if scope has changed + if ( scope !== this.scope ) { + // Loading + this.displayFeedback( BP_Nouveau.group_invites.loading, 'loading' ); + } + + // Set global scope to requested one + this.scope = scope; + + // Create the loop view + users = new bp.Views.inviteUsers( { collection: this.users, scope: scope } ); + + this.views.add( { id: 'users', view: users } ); + + users.inject( '.bp-invites-content' ); + + this.displayFilters( this.users ); + }, + + displayFilters: function( collection ) { + var filters_view; + + // Create the model + this.filters = new Backbone.Model( { + page : 1, + total_page : 0, + search_terms : '', + scope : this.scope + } ); + + // Use it in the filters viex + filters_view = new bp.Views.inviteFilters( { model: this.filters, users: collection } ); + + this.views.add( { id: 'filters', view: filters_view } ); + + filters_view.inject( '.bp-invites-filters' ); + }, + + removeFeedback: function() { + var feedback; + + if ( ! _.isUndefined( this.views.get( 'feedback' ) ) ) { + feedback = this.views.get( 'feedback' ); + feedback.get( 'view' ).remove(); + this.views.remove( { id: 'feedback', view: feedback } ); + } + }, + + displayFeedback: function( message, type ) { + var feedback; + + // Make sure to remove the feedbacks + this.removeFeedback(); + + if ( ! message ) { + return; + } + + feedback = new bp.Views.Feedback( { + value : message, + type : type || 'info' + } ); + + this.views.add( { id: 'feedback', view: feedback } ); + + feedback.inject( '.bp-invites-feedback' ); + }, + + addInvite: function( user ) { + if ( true === user.get( 'selected' ) ) { + this.invites.add( user ); + } else { + var invite = this.invites.get( user.get( 'id' ) ); + + if ( true === invite.get( 'selected' ) ) { + this.invites.remove( invite ); + } + } + }, + + manageInvite: function( invite ) { + var user = this.users.get( invite.get( 'id' ) ); + + // Update the user + if ( user ) { + user.set( 'selected', false ); + } + + // remove the invite + this.invites.remove( invite ); + + // No more invites, reset the collection + if ( ! this.invites.length ) { + this.invites.reset(); + } + }, + + invitesNav: function() { + this.navItems.get( 'invites' ).set( { active: 0, hide: 0 } ); + }, + + hideInviteNav: function() { + this.navItems.get( 'invites' ).set( { active: 0, hide: 1 } ); + }, + + clearViews: function() { + // Clear views + if ( ! _.isUndefined( this.views.models ) ) { + _.each( this.views.models, function( model ) { + model.get( 'view' ).remove(); + }, this ); + + this.views.reset(); + } + }, + + loadConfirmView: function() { + this.clearViews(); + + this.displayFeedback( BP_Nouveau.group_invites.invites_form, 'help' ); + + // Activate the loop view + var invites = new bp.Views.invitesEditor( { collection: this.invites } ); + + this.views.add( { id: 'invites', view: invites } ); + + invites.inject( '.bp-invites-content' ); + } + }; + + // Item (group or blog or any other) + bp.Models.User = Backbone.Model.extend( { + defaults : { + id : 0, + avatar : '', + name : '', + selected : false + } + } ); + + /** Collections ***********************************************************/ + + // Items (groups or blogs or any others) + bp.Collections.Users = Backbone.Collection.extend( { + model: bp.Models.User, + + initialize : function() { + this.options = { page: 1, total_page: 0, group_id: BP_Nouveau.group_invites.group_id }; + }, + + sync: function( method, model, options ) { + options = options || {}; + options.context = this; + options.data = options.data || {}; + + // Add generic nonce + options.data.nonce = BP_Nouveau.nonces.groups; + + if ( this.options.group_id ) { + options.data.group_id = this.options.group_id; + } + + if ( 'read' === method ) { + options.data = _.extend( options.data, { + action: 'groups_get_group_potential_invites' + } ); + + return bp.ajax.send( options ); + } + + if ( 'create' === method ) { + options.data = _.extend( options.data, { + action : 'groups_send_group_invites', + _wpnonce : BP_Nouveau.group_invites.nonces.send_invites + } ); + + if ( model ) { + options.data.users = model; + } + + return bp.ajax.send( options ); + } + + if ( 'delete' === method ) { + options.data = _.extend( options.data, { + action : 'groups_delete_group_invite', + _wpnonce : BP_Nouveau.group_invites.nonces.uninvite + } ); + + if ( model ) { + options.data.user = model; + } + + return bp.ajax.send( options ); + } + }, + + parse: function( resp ) { + + if ( ! _.isArray( resp.users ) ) { + resp.users = [resp.users]; + } + + _.each( resp.users, function( value, index ) { + if ( _.isNull( value ) ) { + return; + } + + resp.users[index].id = value.id; + resp.users[index].avatar = value.avatar; + resp.users[index].name = value.name; + } ); + + if ( ! _.isUndefined( resp.meta ) ) { + this.options.page = resp.meta.page; + this.options.total_page = resp.meta.total_page; + } + + return resp.users; + } + + } ); + + // Extend wp.Backbone.View with .prepare() and .inject() + bp.Nouveau.GroupInvites.View = bp.Backbone.View.extend( { + inject: function( selector ) { + this.render(); + $(selector).html( this.el ); + this.views.ready(); + }, + + prepare: function() { + if ( ! _.isUndefined( this.model ) && _.isFunction( this.model.toJSON ) ) { + return this.model.toJSON(); + } else { + return {}; + } + } + } ); + + // Feedback view + bp.Views.Feedback = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'div', + className : 'bp-invites-feedback', + template : bp.template( 'bp-group-invites-feedback' ), + + initialize: function() { + this.model = new Backbone.Model( { + type: this.options.type || 'info', + message: this.options.value + } ); + } + } ); + + bp.Views.invitesNav = bp.Nouveau.GroupInvites.View.extend( { + tagName: 'ul', + className: 'subnav', + + events: { + 'click .bp-invites-nav-item' : 'toggleView' + }, + + initialize: function() { + this.collection.on( 'add', this.outputNav, this ); + this.collection.on( 'change:hide', this.showHideNavItem, this ); + }, + + outputNav: function( nav ) { + /** + * The delete nav is not added if no avatar + * is set for the object + */ + if ( 1 === nav.get( 'hide' ) ) { + return; + } + + this.views.add( new bp.Views.invitesNavItem( { model: nav } ) ); + }, + + showHideNavItem: function( item ) { + var isRendered = null; + + /** + * Loop in views to show/hide the nav item + * BuddyPress is only using this for the delete nav + */ + _.each( this.views._views[''], function( view ) { + if ( 1 === view.model.get( 'hide' ) ) { + view.remove(); + } + + // Check to see if the nav is not already rendered + if ( item.get( 'id' ) === view.model.get( 'id' ) ) { + isRendered = true; + } + } ); + + // Add the Delete nav if not rendered + if ( ! _.isBoolean( isRendered ) ) { + item.set( 'invites_count', bp.Nouveau.GroupInvites.invites.length ); + this.outputNav( item ); + } + }, + + toggleView: function( event ) { + var target = $( event.target ); + event.preventDefault(); + + if ( ! target.data( 'nav' ) && 'SPAN' === event.target.tagName ) { + target = $( event.target ).parent(); + } + + var current_nav_id = target.data( 'nav' ); + + _.each( this.collection.models, function( nav ) { + if ( nav.id === current_nav_id ) { + nav.set( 'active', 1 ); + + // Specific to the invites view + if ( 'invites' === nav.id ) { + this.trigger( 'bp-invites:confirm' ); + } else { + this.trigger( 'bp-invites:loops', nav.id ); + } + + } else if ( 1 !== nav.get( 'hide' ) ) { + nav.set( 'active', 0 ); + } + }, this ); + } + } ); + + bp.Views.invitesNavItem = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'li', + template : bp.template( 'bp-invites-nav' ), + + initialize: function() { + if ( 1 === this.model.get( 'active' ) ) { + this.el.className += ' current'; + } + + if ( 'invites' === this.model.get( 'id' ) ) { + this.el.className += ' dynamic'; + } + + if ( 'invited' === this.model.get( 'id' ) ) { + this.el.className += ' pending'; + } + + this.model.on( 'change:active', this.toggleClass, this ); + this.on( 'ready', this.updateCount, this ); + + bp.Nouveau.GroupInvites.invites.on( 'add', this.updateCount, this ); + bp.Nouveau.GroupInvites.invites.on( 'remove', this.updateCount, this ); + }, + + updateCount: function( user, invite ) { + if ( 'invites' !== this.model.get( 'id' ) ) { + return; + } + + var span_count = _.isUndefined( invite ) ? this.model.get( 'invites_count' ) : invite.models.length; + + if ( $( this.el ).find( 'span' ).length ) { + $( this.el ).find( 'span' ).html( span_count ); + } else { + $( this.el ).find( 'a' ).append( $( '<span class="count"></span>' ).html( span_count ) ); + } + }, + + toggleClass: function( model ) { + if ( 0 === model.get( 'active' ) ) { + $( this.el ).removeClass( 'current' ); + } else { + $( this.el ).addClass( 'current' ); + } + } + } ); + + bp.Views.Pagination = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'div', + className : 'last', + template : bp.template( 'bp-invites-paginate' ) + } ); + + bp.Views.inviteFilters = bp.Nouveau.GroupInvites.View.extend( { + tagName: 'div', + template: bp.template( 'bp-invites-filters' ), + + events : { + 'search #group_invites_search' : 'resetSearchTerms', + 'submit #group_invites_search_form' : 'setSearchTerms', + 'click #bp-invites-next-page' : 'nextPage', + 'click #bp-invites-prev-page' : 'prevPage' + }, + + initialize: function() { + this.model.on( 'change', this.filterUsers, this ); + this.options.users.on( 'sync', this.addPaginatation, this ); + }, + + addPaginatation: function( collection ) { + _.each( this.views._views[''], function( view ) { + view.remove(); + } ); + + if ( 1 === collection.options.total_page ) { + return; + } + + this.views.add( new bp.Views.Pagination( { model: new Backbone.Model( collection.options ) } ) ); + }, + + filterUsers: function() { + bp.Nouveau.GroupInvites.displayFeedback( BP_Nouveau.group_invites.loading, 'loading' ); + + this.options.users.reset(); + + this.options.users.fetch( { + data : _.pick( this.model.attributes, ['scope', 'search_terms', 'page'] ), + success : this.usersFiltered, + error : this.usersFilterError + } ); + }, + + usersFiltered: function() { + bp.Nouveau.GroupInvites.removeFeedback(); + }, + + usersFilterError: function( collection, response ) { + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, 'error' ); + }, + + resetSearchTerms: function( event ) { + event.preventDefault(); + + if ( ! $( event.target ).val() ) { + $( event.target ).closest( 'form' ).submit(); + } else { + $( event.target ).closest( 'form' ).find( '[type=submit]' ).addClass('bp-show'); + } + }, + + setSearchTerms: function( event ) { + event.preventDefault(); + + this.model.set( { + search_terms : $( event.target ).find( 'input[type=search]' ).val() || '', + page : 1 + } ); + }, + + nextPage: function( event ) { + event.preventDefault(); + + this.model.set( 'page', this.model.get( 'page' ) + 1 ); + }, + + prevPage: function( event ) { + event.preventDefault(); + + this.model.set( 'page', this.model.get( 'page' ) - 1 ); + } + } ); + + bp.Views.inviteUsers = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'ul', + className : 'item-list bp-list', + id : 'members-list', + + initialize: function() { + // Load users for the active view + this.requestUsers(); + + this.collection.on( 'reset', this.cleanContent, this ); + this.collection.on( 'add', this.addUser, this ); + }, + + requestUsers: function() { + this.collection.reset(); + + this.collection.fetch( { + data : _.pick( this.options, 'scope' ), + success : this.usersFetched, + error : this.usersFetchError + } ); + }, + + usersFetched: function( collection, response ) { + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, 'help' ); + }, + + usersFetchError: function( collection, response ) { + var type = response.type || 'help'; + + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, type ); + }, + + cleanContent: function() { + _.each( this.views._views[''], function( view ) { + view.remove(); + } ); + }, + + addUser: function( user ) { + this.views.add( new bp.Views.inviteUser( { model: user } ) ); + } + } ); + + bp.Views.inviteUser = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'li', + template : bp.template( 'bp-invites-users' ), + + events: { + 'click .group-add-remove-invite-button' : 'toggleUser', + 'click .group-remove-invite-button' : 'removeInvite' + }, + + initialize: function() { + var invite = bp.Nouveau.GroupInvites.invites.get( this.model.get( 'id' ) ); + + if ( invite ) { + this.model.set( 'selected', true, { silent: true } ); + } + }, + + render: function() { + if ( this.model.get( 'selected' ) ) { + this.el.className = 'selected'; + } else { + this.el.className = ''; + } + + bp.Nouveau.GroupInvites.View.prototype.render.apply( this, arguments ); + }, + + toggleUser: function( event ) { + event.preventDefault(); + + var selected = this.model.get( 'selected' ); + + if ( false === selected ) { + this.model.set( 'selected', true ); + } else { + this.model.set( 'selected', false ); + + if ( ! bp.Nouveau.GroupInvites.invites.length ) { + bp.Nouveau.GroupInvites.invites.reset(); + } + } + + // Rerender to update buttons. + this.render(); + }, + + removeInvite: function( event ) { + event.preventDefault(); + + var collection = this.model.collection; + + if ( ! collection.length ) { + return; + } + + collection.sync( 'delete', this.model.get( 'id' ), { + success : _.bind( this.inviteRemoved, this ), + error : _.bind( this.uninviteError, this ) + } ); + }, + + inviteRemoved: function( response ) { + var collection = this.model.collection; + + if ( ! collection.length ) { + return; + } + + collection.remove( this.model ); + this.remove(); + + bp.Nouveau.GroupInvites.removeFeedback(); + + if ( false === response.has_invites ) { + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, 'success' ); + + // Hide the invited nav + bp.Nouveau.GroupInvites.navItems.get( 'invited' ).set( { active: 0, hide: 1 } ); + } + }, + + uninviteError: function( response ) { + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, 'error' ); + } + } ); + + bp.Views.invitesEditor = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'div', + id : 'send-invites-editor', + + events: { + 'click #bp-invites-send' : 'sendInvites', + 'click #bp-invites-reset' : 'clearForm' + }, + + initialize: function() { + this.views.add( new bp.Views.selectedUsers( { collection: this.collection } ) ); + this.views.add( new bp.Views.invitesForm() ); + + this.collection.on( 'reset', this.cleanViews, this ); + }, + + sendInvites: function( event ) { + event.preventDefault(); + + $( this.el ).addClass( 'bp-hide' ); + + bp.Nouveau.GroupInvites.displayFeedback( BP_Nouveau.group_invites.invites_sending, 'info' ); + + this.collection.sync( 'create', _.pluck( this.collection.models, 'id' ), { + success : _.bind( this.invitesSent, this ), + error : _.bind( this.invitesError, this ), + data : { + message: $( this.el ).find( 'textarea' ).val() + } + } ); + }, + + invitesSent: function( response ) { + this.collection.reset(); + + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, 'success' ); + + // Display the pending invites + if ( 1 === bp.Nouveau.GroupInvites.navItems.get( 'invited' ).get( 'hide' ) && ! BP_Nouveau.group_invites.is_group_create ) { + bp.Nouveau.GroupInvites.navItems.get( 'invited' ).set( { active: 0, hide: 0 } ); + } + }, + + invitesError: function( response ) { + var type = response.type || 'help'; + + $( this.el ).removeClass( 'bp-hide' ); + + bp.Nouveau.GroupInvites.displayFeedback( response.feedback, type ); + + if ( ! _.isUndefined( response.users ) ) { + // Display the pending invites + if ( 1 === bp.Nouveau.GroupInvites.navItems.get( 'invited' ).get( 'hide' ) && response.users.length < this.collection.length ) { + bp.Nouveau.GroupInvites.navItems.get( 'invited' ).set( { active: 0, hide: 0 } ); + } + + _.each( this.collection.models, function( invite ) { + // If not an error, remove from the selection + if ( -1 === _.indexOf( response.users, invite.get( 'id' ) ) ) { + invite.set( 'selected', false ); + } + }, this ); + } + }, + + clearForm: function( event ) { + event.preventDefault(); + + this.collection.reset(); + }, + + cleanViews: function() { + _.each( this.views._views[''], function( view ) { + view.remove(); + } ); + + bp.Nouveau.GroupInvites.displayFeedback( BP_Nouveau.group_invites.invites_form_reset, 'success' ); + } + } ); + + bp.Views.invitesForm = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'div', + id : 'bp-send-invites-form', + template : bp.template( 'bp-invites-form' ) + } ); + + bp.Views.selectedUsers = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'ul', + + initialize: function() { + this.cleanContent(); + + _.each( this.collection.models, function( invite ) { + this.views.add( new bp.Views.selectedUser( { model: invite } ) ); + }, this ); + }, + + cleanContent: function() { + _.each( this.views._views[''], function( view ) { + view.remove(); + } ); + } + } ); + + bp.Views.selectedUser = bp.Nouveau.GroupInvites.View.extend( { + tagName : 'li', + template : bp.template( 'bp-invites-selection' ), + + events: { + click : 'removeSelection' + }, + + initialize: function() { + this.model.on( 'change:selected', this.removeView, this ); + + // Build the BP Tooltip. + if ( ! this.model.get( 'uninviteTooltip' ) ) { + this.model.set( 'uninviteTooltip', + BP_Nouveau.group_invites.removeUserInvite.replace( '%s', this.model.get( 'name' ) ), + { silent: true } + ); + } + + this.el.id = 'uninvite-user-' + this.model.get( 'id' ); + }, + + removeSelection: function( event ) { + event.preventDefault(); + + this.model.set( 'selected', false ); + }, + + removeView: function( model ) { + if ( false !== model.get( 'selected' ) ) { + return; + } + + this.remove(); + } + } ); + + // Launch BP Nouveau Groups + bp.Nouveau.GroupInvites.start(); + +} )( bp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-group-invites.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-group-invites.min.js new file mode 100644 index 0000000000000000000000000000000000000000..7e74ea6e42c63773203b4b881fc390ebecbbc3c8 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-group-invites.min.js @@ -0,0 +1 @@ +window.wp=window.wp||{},window.bp=window.bp||{},function(e,i){"undefined"!=typeof BP_Nouveau&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Nouveau=bp.Nouveau||{},bp.Nouveau.GroupInvites={start:function(){this.scope=null,this.views=new Backbone.Collection,this.navItems=new Backbone.Collection,this.users=new bp.Collections.Users,this.invites=this.users.clone(),this.setupNav(),this.setupLoops(),this.displayFeedback(BP_Nouveau.group_invites.loading,"loading"),this.users.on("change:selected",this.addInvite,this),this.invites.on("change:selected",this.manageInvite,this),this.invites.on("add",this.invitesNav,this),this.invites.on("reset",this.hideInviteNav,this)},setupNav:function(){var e;this.nav=new bp.Views.invitesNav({collection:this.navItems}),_.each(BP_Nouveau.group_invites.nav,function(i,t){_.isObject(i)&&(e=0,0===t&&(this.scope=i.id,e=1),this.navItems.add({id:i.id,name:i.caption,href:i.href||"#members-list",active:e,hide:_.isUndefined(i.hide)?0:i.hide}))},this),this.nav.inject(".bp-invites-nav"),this.nav.on("bp-invites:confirm",this.loadConfirmView,this),this.nav.on("bp-invites:loops",this.setupLoops,this)},setupLoops:function(e){var i;e=e||this.scope,this.clearViews(),e!==this.scope&&this.displayFeedback(BP_Nouveau.group_invites.loading,"loading"),this.scope=e,i=new bp.Views.inviteUsers({collection:this.users,scope:e}),this.views.add({id:"users",view:i}),i.inject(".bp-invites-content"),this.displayFilters(this.users)},displayFilters:function(e){var i;this.filters=new Backbone.Model({page:1,total_page:0,search_terms:"",scope:this.scope}),i=new bp.Views.inviteFilters({model:this.filters,users:e}),this.views.add({id:"filters",view:i}),i.inject(".bp-invites-filters")},removeFeedback:function(){var e;_.isUndefined(this.views.get("feedback"))||((e=this.views.get("feedback")).get("view").remove(),this.views.remove({id:"feedback",view:e}))},displayFeedback:function(e,i){var t;this.removeFeedback(),e&&(t=new bp.Views.Feedback({value:e,type:i||"info"}),this.views.add({id:"feedback",view:t}),t.inject(".bp-invites-feedback"))},addInvite:function(e){if(!0===e.get("selected"))this.invites.add(e);else{var i=this.invites.get(e.get("id"));!0===i.get("selected")&&this.invites.remove(i)}},manageInvite:function(e){var i=this.users.get(e.get("id"));i&&i.set("selected",!1),this.invites.remove(e),this.invites.length||this.invites.reset()},invitesNav:function(){this.navItems.get("invites").set({active:0,hide:0})},hideInviteNav:function(){this.navItems.get("invites").set({active:0,hide:1})},clearViews:function(){_.isUndefined(this.views.models)||(_.each(this.views.models,function(e){e.get("view").remove()},this),this.views.reset())},loadConfirmView:function(){this.clearViews(),this.displayFeedback(BP_Nouveau.group_invites.invites_form,"help");var e=new bp.Views.invitesEditor({collection:this.invites});this.views.add({id:"invites",view:e}),e.inject(".bp-invites-content")}},bp.Models.User=Backbone.Model.extend({defaults:{id:0,avatar:"",name:"",selected:!1}}),bp.Collections.Users=Backbone.Collection.extend({model:bp.Models.User,initialize:function(){this.options={page:1,total_page:0,group_id:BP_Nouveau.group_invites.group_id}},sync:function(e,i,t){return t=t||{},t.context=this,t.data=t.data||{},t.data.nonce=BP_Nouveau.nonces.groups,this.options.group_id&&(t.data.group_id=this.options.group_id),"read"===e?(t.data=_.extend(t.data,{action:"groups_get_group_potential_invites"}),bp.ajax.send(t)):"create"===e?(t.data=_.extend(t.data,{action:"groups_send_group_invites",_wpnonce:BP_Nouveau.group_invites.nonces.send_invites}),i&&(t.data.users=i),bp.ajax.send(t)):"delete"===e?(t.data=_.extend(t.data,{action:"groups_delete_group_invite",_wpnonce:BP_Nouveau.group_invites.nonces.uninvite}),i&&(t.data.user=i),bp.ajax.send(t)):void 0},parse:function(e){return _.isArray(e.users)||(e.users=[e.users]),_.each(e.users,function(i,t){_.isNull(i)||(e.users[t].id=i.id,e.users[t].avatar=i.avatar,e.users[t].name=i.name)}),_.isUndefined(e.meta)||(this.options.page=e.meta.page,this.options.total_page=e.meta.total_page),e.users}}),bp.Nouveau.GroupInvites.View=bp.Backbone.View.extend({inject:function(e){this.render(),i(e).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Feedback=bp.Nouveau.GroupInvites.View.extend({tagName:"div",className:"bp-invites-feedback",template:bp.template("bp-group-invites-feedback"),initialize:function(){this.model=new Backbone.Model({type:this.options.type||"info",message:this.options.value})}}),bp.Views.invitesNav=bp.Nouveau.GroupInvites.View.extend({tagName:"ul",className:"subnav",events:{"click .bp-invites-nav-item":"toggleView"},initialize:function(){this.collection.on("add",this.outputNav,this),this.collection.on("change:hide",this.showHideNavItem,this)},outputNav:function(e){1!==e.get("hide")&&this.views.add(new bp.Views.invitesNavItem({model:e}))},showHideNavItem:function(e){var i=null;_.each(this.views._views[""],function(t){1===t.model.get("hide")&&t.remove(),e.get("id")===t.model.get("id")&&(i=!0)}),_.isBoolean(i)||(e.set("invites_count",bp.Nouveau.GroupInvites.invites.length),this.outputNav(e))},toggleView:function(e){var t=i(e.target);e.preventDefault(),t.data("nav")||"SPAN"!==e.target.tagName||(t=i(e.target).parent());var s=t.data("nav");_.each(this.collection.models,function(e){e.id===s?(e.set("active",1),"invites"===e.id?this.trigger("bp-invites:confirm"):this.trigger("bp-invites:loops",e.id)):1!==e.get("hide")&&e.set("active",0)},this)}}),bp.Views.invitesNavItem=bp.Nouveau.GroupInvites.View.extend({tagName:"li",template:bp.template("bp-invites-nav"),initialize:function(){1===this.model.get("active")&&(this.el.className+=" current"),"invites"===this.model.get("id")&&(this.el.className+=" dynamic"),"invited"===this.model.get("id")&&(this.el.className+=" pending"),this.model.on("change:active",this.toggleClass,this),this.on("ready",this.updateCount,this),bp.Nouveau.GroupInvites.invites.on("add",this.updateCount,this),bp.Nouveau.GroupInvites.invites.on("remove",this.updateCount,this)},updateCount:function(e,t){if("invites"===this.model.get("id")){var s=_.isUndefined(t)?this.model.get("invites_count"):t.models.length;i(this.el).find("span").length?i(this.el).find("span").html(s):i(this.el).find("a").append(i('<span class="count"></span>').html(s))}},toggleClass:function(e){0===e.get("active")?i(this.el).removeClass("current"):i(this.el).addClass("current")}}),bp.Views.Pagination=bp.Nouveau.GroupInvites.View.extend({tagName:"div",className:"last",template:bp.template("bp-invites-paginate")}),bp.Views.inviteFilters=bp.Nouveau.GroupInvites.View.extend({tagName:"div",template:bp.template("bp-invites-filters"),events:{"search #group_invites_search":"resetSearchTerms","submit #group_invites_search_form":"setSearchTerms","click #bp-invites-next-page":"nextPage","click #bp-invites-prev-page":"prevPage"},initialize:function(){this.model.on("change",this.filterUsers,this),this.options.users.on("sync",this.addPaginatation,this)},addPaginatation:function(e){_.each(this.views._views[""],function(e){e.remove()}),1!==e.options.total_page&&this.views.add(new bp.Views.Pagination({model:new Backbone.Model(e.options)}))},filterUsers:function(){bp.Nouveau.GroupInvites.displayFeedback(BP_Nouveau.group_invites.loading,"loading"),this.options.users.reset(),this.options.users.fetch({data:_.pick(this.model.attributes,["scope","search_terms","page"]),success:this.usersFiltered,error:this.usersFilterError})},usersFiltered:function(){bp.Nouveau.GroupInvites.removeFeedback()},usersFilterError:function(e,i){bp.Nouveau.GroupInvites.displayFeedback(i.feedback,"error")},resetSearchTerms:function(e){e.preventDefault(),i(e.target).val()?i(e.target).closest("form").find("[type=submit]").addClass("bp-show"):i(e.target).closest("form").submit()},setSearchTerms:function(e){e.preventDefault(),this.model.set({search_terms:i(e.target).find("input[type=search]").val()||"",page:1})},nextPage:function(e){e.preventDefault(),this.model.set("page",this.model.get("page")+1)},prevPage:function(e){e.preventDefault(),this.model.set("page",this.model.get("page")-1)}}),bp.Views.inviteUsers=bp.Nouveau.GroupInvites.View.extend({tagName:"ul",className:"item-list bp-list",id:"members-list",initialize:function(){this.requestUsers(),this.collection.on("reset",this.cleanContent,this),this.collection.on("add",this.addUser,this)},requestUsers:function(){this.collection.reset(),this.collection.fetch({data:_.pick(this.options,"scope"),success:this.usersFetched,error:this.usersFetchError})},usersFetched:function(e,i){bp.Nouveau.GroupInvites.displayFeedback(i.feedback,"help")},usersFetchError:function(e,i){var t=i.type||"help";bp.Nouveau.GroupInvites.displayFeedback(i.feedback,t)},cleanContent:function(){_.each(this.views._views[""],function(e){e.remove()})},addUser:function(e){this.views.add(new bp.Views.inviteUser({model:e}))}}),bp.Views.inviteUser=bp.Nouveau.GroupInvites.View.extend({tagName:"li",template:bp.template("bp-invites-users"),events:{"click .group-add-remove-invite-button":"toggleUser","click .group-remove-invite-button":"removeInvite"},initialize:function(){bp.Nouveau.GroupInvites.invites.get(this.model.get("id"))&&this.model.set("selected",!0,{silent:!0})},render:function(){this.model.get("selected")?this.el.className="selected":this.el.className="",bp.Nouveau.GroupInvites.View.prototype.render.apply(this,arguments)},toggleUser:function(e){e.preventDefault(),!1===this.model.get("selected")?this.model.set("selected",!0):(this.model.set("selected",!1),bp.Nouveau.GroupInvites.invites.length||bp.Nouveau.GroupInvites.invites.reset()),this.render()},removeInvite:function(e){e.preventDefault();var i=this.model.collection;i.length&&i.sync("delete",this.model.get("id"),{success:_.bind(this.inviteRemoved,this),error:_.bind(this.uninviteError,this)})},inviteRemoved:function(e){var i=this.model.collection;i.length&&(i.remove(this.model),this.remove(),bp.Nouveau.GroupInvites.removeFeedback(),!1===e.has_invites&&(bp.Nouveau.GroupInvites.displayFeedback(e.feedback,"success"),bp.Nouveau.GroupInvites.navItems.get("invited").set({active:0,hide:1})))},uninviteError:function(e){bp.Nouveau.GroupInvites.displayFeedback(e.feedback,"error")}}),bp.Views.invitesEditor=bp.Nouveau.GroupInvites.View.extend({tagName:"div",id:"send-invites-editor",events:{"click #bp-invites-send":"sendInvites","click #bp-invites-reset":"clearForm"},initialize:function(){this.views.add(new bp.Views.selectedUsers({collection:this.collection})),this.views.add(new bp.Views.invitesForm),this.collection.on("reset",this.cleanViews,this)},sendInvites:function(e){e.preventDefault(),i(this.el).addClass("bp-hide"),bp.Nouveau.GroupInvites.displayFeedback(BP_Nouveau.group_invites.invites_sending,"info"),this.collection.sync("create",_.pluck(this.collection.models,"id"),{success:_.bind(this.invitesSent,this),error:_.bind(this.invitesError,this),data:{message:i(this.el).find("textarea").val()}})},invitesSent:function(e){this.collection.reset(),bp.Nouveau.GroupInvites.displayFeedback(e.feedback,"success"),1!==bp.Nouveau.GroupInvites.navItems.get("invited").get("hide")||BP_Nouveau.group_invites.is_group_create||bp.Nouveau.GroupInvites.navItems.get("invited").set({active:0,hide:0})},invitesError:function(e){var t=e.type||"help";i(this.el).removeClass("bp-hide"),bp.Nouveau.GroupInvites.displayFeedback(e.feedback,t),_.isUndefined(e.users)||(1===bp.Nouveau.GroupInvites.navItems.get("invited").get("hide")&&e.users.length<this.collection.length&&bp.Nouveau.GroupInvites.navItems.get("invited").set({active:0,hide:0}),_.each(this.collection.models,function(i){-1===_.indexOf(e.users,i.get("id"))&&i.set("selected",!1)},this))},clearForm:function(e){e.preventDefault(),this.collection.reset()},cleanViews:function(){_.each(this.views._views[""],function(e){e.remove()}),bp.Nouveau.GroupInvites.displayFeedback(BP_Nouveau.group_invites.invites_form_reset,"success")}}),bp.Views.invitesForm=bp.Nouveau.GroupInvites.View.extend({tagName:"div",id:"bp-send-invites-form",template:bp.template("bp-invites-form")}),bp.Views.selectedUsers=bp.Nouveau.GroupInvites.View.extend({tagName:"ul",initialize:function(){this.cleanContent(),_.each(this.collection.models,function(e){this.views.add(new bp.Views.selectedUser({model:e}))},this)},cleanContent:function(){_.each(this.views._views[""],function(e){e.remove()})}}),bp.Views.selectedUser=bp.Nouveau.GroupInvites.View.extend({tagName:"li",template:bp.template("bp-invites-selection"),events:{click:"removeSelection"},initialize:function(){this.model.on("change:selected",this.removeView,this),this.model.get("uninviteTooltip")||this.model.set("uninviteTooltip",BP_Nouveau.group_invites.removeUserInvite.replace("%s",this.model.get("name")),{silent:!0}),this.el.id="uninvite-user-"+this.model.get("id")},removeSelection:function(e){e.preventDefault(),this.model.set("selected",!1)},removeView:function(e){!1===e.get("selected")&&this.remove()}}),bp.Nouveau.GroupInvites.start())}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.js new file mode 100644 index 0000000000000000000000000000000000000000..8e5c58a6eb305d9b74990a670fe060bae020d891 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.js @@ -0,0 +1,1418 @@ +/* global wp, bp, BP_Nouveau, _, Backbone, tinymce, tinyMCE */ +/* jshint devel: true */ +/* @version 3.1.0 */ +window.wp = window.wp || {}; +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + _.extend( bp, _.pick( wp, 'Backbone', 'ajax', 'template' ) ); + + bp.Models = bp.Models || {}; + bp.Collections = bp.Collections || {}; + bp.Views = bp.Views || {}; + + bp.Nouveau = bp.Nouveau || {}; + + /** + * [Nouveau description] + * @type {Object} + */ + bp.Nouveau.Messages = { + /** + * [start description] + * @return {[type]} [description] + */ + start: function() { + this.views = new Backbone.Collection(); + this.threads = new bp.Collections.Threads(); + this.messages = new bp.Collections.Messages(); + this.router = new bp.Nouveau.Messages.Router(); + this.box = 'inbox'; + + this.setupNav(); + + Backbone.history.start( { + pushState: true, + root: BP_Nouveau.messages.rootUrl + } ); + }, + + setupNav: function() { + var self = this; + + // First adapt the compose nav + $( '#compose-personal-li' ).addClass( 'last' ); + + // Then listen to nav click and load the appropriate view + $( '#subnav a' ).on( 'click', function( event ) { + event.preventDefault(); + + var view_id = $( event.target ).prop( 'id' ); + + // Remove the editor to be sure it will be added dynamically later + self.removeTinyMCE(); + + // The compose view is specific (toggle behavior) + if ( 'compose' === view_id ) { + // If it exists, it means the user wants to remove it + if ( ! _.isUndefined( self.views.get( 'compose' ) ) ) { + var form = self.views.get( 'compose' ); + form.get( 'view' ).remove(); + self.views.remove( { id: 'compose', view: form } ); + + // Back to inbox + if ( 'single' === self.box ) { + self.box = 'inbox'; + } + + // Navigate back to current box + self.router.navigate( self.box + '/', { trigger: true } ); + + // Otherwise load it + } else { + self.router.navigate( 'compose/', { trigger: true } ); + } + + // Other views are classic. + } else { + + if ( self.box !== view_id || ! _.isUndefined( self.views.get( 'compose' ) ) ) { + self.clearViews(); + + self.router.navigate( view_id + '/', { trigger: true } ); + } + } + } ); + }, + + removeTinyMCE: function() { + if ( typeof tinymce !== 'undefined' ) { + var editor = tinymce.get( 'message_content' ); + + if ( editor !== null ) { + tinymce.EditorManager.execCommand( 'mceRemoveEditor', true, 'message_content' ); + } + } + }, + + tinyMCEinit: function() { + if ( typeof window.tinyMCE === 'undefined' || window.tinyMCE.activeEditor === null || typeof window.tinyMCE.activeEditor === 'undefined' ) { + return; + } else { + $( window.tinyMCE.activeEditor.contentDocument.activeElement ) + .atwho( 'setIframe', $( '#message_content_ifr' )[0] ) + .bp_mentions( { + data: [], + suffix: ' ' + } ); + } + }, + + removeFeedback: function() { + var feedback; + + if ( ! _.isUndefined( this.views.get( 'feedback' ) ) ) { + feedback = this.views.get( 'feedback' ); + feedback.get( 'view' ).remove(); + this.views.remove( { id: 'feedback', view: feedback } ); + } + }, + + displayFeedback: function( message, type ) { + var feedback; + + // Make sure to remove the feedbacks + this.removeFeedback(); + + if ( ! message ) { + return; + } + + feedback = new bp.Views.Feedback( { + value: message, + type: type || 'info' + } ); + + this.views.add( { id: 'feedback', view: feedback } ); + + feedback.inject( '.bp-messages-feedback' ); + }, + + clearViews: function() { + // Clear views + if ( ! _.isUndefined( this.views.models ) ) { + _.each( this.views.models, function( model ) { + model.get( 'view' ).remove(); + }, this ); + + this.views.reset(); + } + }, + + composeView: function() { + // Remove all existing views. + this.clearViews(); + + // Create the loop view + var form = new bp.Views.messageForm( { + model: new bp.Models.Message() + } ); + + this.views.add( { id: 'compose', view: form } ); + + form.inject( '.bp-messages-content' ); + }, + + threadsView: function() { + // Activate the appropriate nav + $( '#subnav ul li' ).each( function( l, li ) { + $( li ).removeClass( 'current selected' ); + } ); + $( '#subnav a#' + this.box ).closest( 'li' ).addClass( 'current selected' ); + + // Create the loop view + var threads_list = new bp.Views.userThreads( { collection: this.threads, box: this.box } ); + + this.views.add( { id: 'threads', view: threads_list } ); + + threads_list.inject( '.bp-messages-content' ); + + // Attach filters + this.displayFilters( this.threads ); + }, + + displayFilters: function( collection ) { + var filters_view; + + // Create the model + this.filters = new Backbone.Model( { + 'page' : 1, + 'total_page' : 0, + 'search_terms' : '', + 'box' : this.box + } ); + + // Use it in the filters viex + filters_view = new bp.Views.messageFilters( { model: this.filters, threads: collection } ); + + this.views.add( { id: 'filters', view: filters_view } ); + + filters_view.inject( '.bp-messages-filters' ); + }, + + singleView: function( thread ) { + // Remove all existing views. + this.clearViews(); + + this.box = 'single'; + + // Create the single thread view + var single_thread = new bp.Views.userMessages( { collection: this.messages, thread: thread } ); + + this.views.add( { id: 'single', view: single_thread } ); + + single_thread.inject( '.bp-messages-content' ); + } + }; + + bp.Models.Message = Backbone.Model.extend( { + defaults: { + send_to : [], + subject : '', + message_content : '', + meta : {} + }, + + sendMessage: function() { + if ( true === this.get( 'sending' ) ) { + return; + } + + this.set( 'sending', true, { silent: true } ); + + var sent = bp.ajax.post( 'messages_send_message', _.extend( + { + nonce: BP_Nouveau.messages.nonces.send + }, + this.attributes + ) ); + + this.set( 'sending', false, { silent: true } ); + + return sent; + } + } ); + + bp.Models.Thread = Backbone.Model.extend( { + defaults: { + id : 0, + message_id : 0, + subject : '', + excerpt : '', + content : '', + unread : true, + sender_name : '', + sender_link : '', + sender_avatar : '', + count : 0, + date : 0, + display_date : '', + recipients : [] + }, + + updateReadState: function( options ) { + options = options || {}; + options.data = _.extend( + _.pick( this.attributes, ['id', 'message_id'] ), + { + action : 'messages_thread_read', + nonce : BP_Nouveau.nonces.messages + } + ); + + return bp.ajax.send( options ); + } + } ); + + bp.Models.messageThread = Backbone.Model.extend( { + defaults: { + id : 0, + content : '', + sender_id : 0, + sender_name : '', + sender_link : '', + sender_avatar : '', + date : 0, + display_date : '' + } + } ); + + bp.Collections.Threads = Backbone.Collection.extend( { + model: bp.Models.Thread, + + initialize : function() { + this.options = { page: 1, total_page: 0 }; + }, + + sync: function( method, model, options ) { + options = options || {}; + options.context = this; + options.data = options.data || {}; + + // Add generic nonce + options.data.nonce = BP_Nouveau.nonces.messages; + + if ( 'read' === method ) { + options.data = _.extend( options.data, { + action: 'messages_get_user_message_threads' + } ); + + return bp.ajax.send( options ); + } + }, + + parse: function( resp ) { + + if ( ! _.isArray( resp.threads ) ) { + resp.threads = [resp.threads]; + } + + _.each( resp.threads, function( value, index ) { + if ( _.isNull( value ) ) { + return; + } + + resp.threads[index].id = value.id; + resp.threads[index].message_id = value.message_id; + resp.threads[index].subject = value.subject; + resp.threads[index].excerpt = value.excerpt; + resp.threads[index].content = value.content; + resp.threads[index].unread = value.unread; + resp.threads[index].sender_name = value.sender_name; + resp.threads[index].sender_link = value.sender_link; + resp.threads[index].sender_avatar = value.sender_avatar; + resp.threads[index].count = value.count; + resp.threads[index].date = new Date( value.date ); + resp.threads[index].display_date = value.display_date; + resp.threads[index].recipients = value.recipients; + resp.threads[index].star_link = value.star_link; + resp.threads[index].is_starred = value.is_starred; + } ); + + if ( ! _.isUndefined( resp.meta ) ) { + this.options.page = resp.meta.page; + this.options.total_page = resp.meta.total_page; + } + + if ( bp.Nouveau.Messages.box ) { + this.options.box = bp.Nouveau.Messages.box; + } + + if ( ! _.isUndefined( resp.extraContent ) ) { + _.extend( this.options, _.pick( resp.extraContent, [ + 'beforeLoop', + 'afterLoop' + ] ) ); + } + + return resp.threads; + }, + + doAction: function( action, ids, options ) { + options = options || {}; + options.context = this; + options.data = options.data || {}; + + options.data = _.extend( options.data, { + action: 'messages_' + action, + nonce : BP_Nouveau.nonces.messages, + id : ids + } ); + + return bp.ajax.send( options ); + } + } ); + + bp.Collections.Messages = Backbone.Collection.extend( { + model: bp.Models.messageThread, + options: {}, + + sync: function( method, model, options ) { + options = options || {}; + options.context = this; + options.data = options.data || {}; + + // Add generic nonce + options.data.nonce = BP_Nouveau.nonces.messages; + + if ( 'read' === method ) { + options.data = _.extend( options.data, { + action: 'messages_get_thread_messages' + } ); + + return bp.ajax.send( options ); + } + + if ( 'create' === method ) { + options.data = _.extend( options.data, { + action : 'messages_send_reply', + nonce : BP_Nouveau.messages.nonces.send + }, model || {} ); + + return bp.ajax.send( options ); + } + }, + + parse: function( resp ) { + + if ( ! _.isArray( resp.messages ) ) { + resp.messages = [resp.messages]; + } + + _.each( resp.messages, function( value, index ) { + if ( _.isNull( value ) ) { + return; + } + + resp.messages[index].id = value.id; + resp.messages[index].content = value.content; + resp.messages[index].sender_id = value.sender_id; + resp.messages[index].sender_name = value.sender_name; + resp.messages[index].sender_link = value.sender_link; + resp.messages[index].sender_avatar = value.sender_avatar; + resp.messages[index].date = new Date( value.date ); + resp.messages[index].display_date = value.display_date; + resp.messages[index].star_link = value.star_link; + resp.messages[index].is_starred = value.is_starred; + } ); + + if ( ! _.isUndefined( resp.thread ) ) { + this.options.thread_id = resp.thread.id; + this.options.thread_subject = resp.thread.subject; + this.options.recipients = resp.thread.recipients; + } + + return resp.messages; + } + } ); + + // Extend wp.Backbone.View with .prepare() and .inject() + bp.Nouveau.Messages.View = bp.Backbone.View.extend( { + inject: function( selector ) { + this.render(); + $(selector).html( this.el ); + this.views.ready(); + }, + + prepare: function() { + if ( ! _.isUndefined( this.model ) && _.isFunction( this.model.toJSON ) ) { + return this.model.toJSON(); + } else { + return {}; + } + } + } ); + + // Feedback view + bp.Views.Feedback = bp.Nouveau.Messages.View.extend( { + tagName: 'div', + className: 'bp-messages bp-user-messages-feedback', + template : bp.template( 'bp-messages-feedback' ), + + initialize: function() { + this.model = new Backbone.Model( { + type: this.options.type || 'info', + message: this.options.value + } ); + } + } ); + + // Hook view + bp.Views.Hook = bp.Nouveau.Messages.View.extend( { + tagName: 'div', + template : bp.template( 'bp-messages-hook' ), + + initialize: function() { + this.model = new Backbone.Model( { + extraContent: this.options.extraContent + } ); + + this.el.className = 'bp-messages-hook'; + + if ( this.options.className ) { + this.el.className += ' ' + this.options.className; + } + } + } ); + + bp.Views.messageEditor = bp.Nouveau.Messages.View.extend( { + template : bp.template( 'bp-messages-editor' ), + + initialize: function() { + this.on( 'ready', this.activateTinyMce, this ); + }, + + activateTinyMce: function() { + if ( typeof tinymce !== 'undefined' ) { + tinymce.EditorManager.execCommand( 'mceAddEditor', true, 'message_content' ); + } + } + } ); + + bp.Views.messageForm = bp.Nouveau.Messages.View.extend( { + tagName : 'form', + id : 'send_message_form', + className : 'standard-form', + template : bp.template( 'bp-messages-form' ), + + events: { + 'click #bp-messages-send' : 'sendMessage', + 'click #bp-messages-reset' : 'resetForm' + }, + + initialize: function() { + // Clone the model to set the resetted one + this.resetModel = this.model.clone(); + + // Add the editor view + this.views.add( '#bp-message-content', new bp.Views.messageEditor() ); + + this.model.on( 'change', this.resetFields, this ); + + // Activate bp_mentions + this.on( 'ready', this.addMentions, this ); + }, + + addMentions: function() { + // Add autocomplete to send_to field + $( this.el ).find( '#send-to-input' ).bp_mentions( { + data: [], + suffix: ' ' + } ); + }, + + resetFields: function( model ) { + // Clean inputs + _.each( model.previousAttributes(), function( value, input ) { + if ( 'message_content' === input ) { + // tinyMce + if ( undefined !== tinyMCE.activeEditor && null !== tinyMCE.activeEditor ) { + tinyMCE.activeEditor.setContent( '' ); + } + + // All except meta or empty value + } else if ( 'meta' !== input && false !== value ) { + $( 'input[name="' + input + '"]' ).val( '' ); + } + } ); + + // Listen to this to eventually reset your custom inputs. + $( this.el ).trigger( 'message:reset', _.pick( model.previousAttributes(), 'meta' ) ); + }, + + sendMessage: function( event ) { + var meta = {}, errors = [], self = this; + event.preventDefault(); + + bp.Nouveau.Messages.removeFeedback(); + + // Set the content and meta + _.each( this.$el.serializeArray(), function( pair ) { + pair.name = pair.name.replace( '[]', '' ); + + // Group extra fields in meta + if ( -1 === _.indexOf( ['send_to', 'subject', 'message_content'], pair.name ) ) { + if ( _.isUndefined( meta[ pair.name ] ) ) { + meta[ pair.name ] = pair.value; + } else { + if ( ! _.isArray( meta[ pair.name ] ) ) { + meta[ pair.name ] = [ meta[ pair.name ] ]; + } + + meta[ pair.name ].push( pair.value ); + } + + // Prepare the core model + } else { + // Send to + if ( 'send_to' === pair.name ) { + var usernames = pair.value.match( /(^|[^@\w\-])@([a-zA-Z0-9_\-]{1,50})\b/g ); + + if ( ! usernames ) { + errors.push( 'send_to' ); + } else { + usernames = usernames.map( function( username ) { + username = $.trim( username ); + return username; + } ); + + if ( ! usernames || ! $.isArray( usernames ) ) { + errors.push( 'send_to' ); + } + + this.model.set( 'send_to', usernames, { silent: true } ); + } + + // Subject and content + } else { + // Message content + if ( 'message_content' === pair.name && undefined !== tinyMCE.activeEditor ) { + pair.value = tinyMCE.activeEditor.getContent(); + } + + if ( ! pair.value ) { + errors.push( pair.name ); + } else { + this.model.set( pair.name, pair.value, { silent: true } ); + } + } + } + + }, this ); + + if ( errors.length ) { + var feedback = ''; + _.each( errors, function( e ) { + feedback += '<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>'+BP_Nouveau.messages.errors[ e ] + '</p></div>'; + } ); + + bp.Nouveau.Messages.displayFeedback( feedback, 'error' ); + return; + } + + // Set meta + this.model.set( 'meta', meta, { silent: true } ); + + // Send the message. + this.model.sendMessage().done( function( response ) { + // Reset the model + self.model.set( self.resetModel ); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + + // Remove tinyMCE + bp.Nouveau.Messages.removeTinyMCE(); + + // Remove the form view + var form = bp.Nouveau.Messages.views.get( 'compose' ); + form.get( 'view' ).remove(); + bp.Nouveau.Messages.views.remove( { id: 'compose', view: form } ); + + bp.Nouveau.Messages.router.navigate( 'sentbox/', { trigger: true } ); + } ).fail( function( response ) { + if ( response.feedback ) { + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } + } ); + }, + + resetForm: function( event ) { + event.preventDefault(); + + this.model.set( this.resetModel ); + } + } ); + + bp.Views.userThreads = bp.Nouveau.Messages.View.extend( { + tagName : 'div', + + events: { + 'click .subject' : 'changePreview' + }, + + initialize: function() { + var Views = [ + new bp.Nouveau.Messages.View( { tagName: 'ul', id: 'message-threads', className: 'message-lists' } ), + new bp.Views.previewThread( { collection: this.collection } ) + ]; + + _.each( Views, function( view ) { + this.views.add( view ); + }, this ); + + // Load threads for the active view + this.requestThreads(); + + this.collection.on( 'reset', this.cleanContent, this ); + this.collection.on( 'add', this.addThread, this ); + }, + + requestThreads: function() { + this.collection.reset(); + + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.loading, 'loading' ); + + this.collection.fetch( { + data : _.pick( this.options, 'box' ), + success : _.bind( this.threadsFetched, this ), + error : this.threadsFetchError + } ); + }, + + threadsFetched: function() { + bp.Nouveau.Messages.removeFeedback(); + + // Display the bp_after_member_messages_loop hook. + if ( this.collection.options.afterLoop ) { + this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.afterLoop, className: 'after-messages-loop' } ), { at: 1 } ); + } + + // Display the bp_before_member_messages_loop hook. + if ( this.collection.options.beforeLoop ) { + this.views.add( new bp.Views.Hook( { extraContent: this.collection.options.beforeLoop, className: 'before-messages-loop' } ), { at: 0 } ); + } + + // Inform the user about how to use the UI. + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howto, 'info' ); + }, + + threadsFetchError: function( collection, response ) { + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + }, + + cleanContent: function() { + _.each( this.views._views['#message-threads'], function( view ) { + view.remove(); + } ); + }, + + addThread: function( thread ) { + var selected = this.collection.findWhere( { active: true } ); + + if ( _.isUndefined( selected ) ) { + thread.set( 'active', true ); + } + + this.views.add( '#message-threads', new bp.Views.userThread( { model: thread } ) ); + }, + + setActiveThread: function( active ) { + if ( ! active ) { + return; + } + + _.each( this.collection.models, function( thread ) { + if ( thread.id === active ) { + thread.set( 'active', true ); + } else { + thread.unset( 'active' ); + } + }, this ); + }, + + changePreview: function( event ) { + var target = $( event.currentTarget ); + + event.preventDefault(); + bp.Nouveau.Messages.removeFeedback(); + + // If the click is done on an active conversation, open it. + if ( target.closest( '.thread-item' ).hasClass( 'selected' ) ) { + bp.Nouveau.Messages.router.navigate( + 'view/' + target.closest( '.thread-content' ).data( 'thread-id' ) + '/', + { trigger: true } + ); + + // Otherwise activate the conversation and display its preview. + } else { + this.setActiveThread( target.closest( '.thread-content' ).data( 'thread-id' ) ); + + $( '.message-action-view' ).focus(); + } + } + } ); + + bp.Views.userThread = bp.Nouveau.Messages.View.extend( { + tagName : 'li', + template : bp.template( 'bp-messages-thread' ), + className : 'thread-item', + + events: { + 'click .message-check' : 'singleSelect' + }, + + initialize: function() { + if ( this.model.get( 'active' ) ) { + this.el.className += ' selected'; + } + + if ( this.model.get( 'unread' ) ) { + this.el.className += ' unread'; + } + + if ( 'sentbox' === bp.Nouveau.Messages.box ) { + var recipientsCount = this.model.get( 'recipients' ).length, toOthers = ''; + + if ( 2 === recipientsCount ) { + toOthers = BP_Nouveau.messages.toOthers.one; + } else if ( 2 < recipientsCount ) { + toOthers = BP_Nouveau.messages.toOthers.more.replace( '%d', Number( recipientsCount - 1 ) ); + } + + this.model.set( { + recipientsCount: recipientsCount, + toOthers: toOthers + }, { silent: true } ); + } else if ( this.model.get( 'recipientsCount' ) ) { + this.model.unset( 'recipientsCount', { silent: true } ); + } + + this.model.on( 'change:active', this.toggleClass, this ); + this.model.on( 'change:unread', this.updateReadState, this ); + this.model.on( 'change:checked', this.bulkSelect, this ); + this.model.on( 'remove', this.cleanView, this ); + }, + + toggleClass: function( model ) { + if ( true === model.get( 'active' ) ) { + $( this.el ).addClass( 'selected' ); + } else { + $( this.el ).removeClass( 'selected' ); + } + }, + + updateReadState: function( model, state ) { + if ( false === state ) { + $( this.el ).removeClass( 'unread' ); + } else { + $( this.el ).addClass( 'unread' ); + } + }, + + bulkSelect: function( model ) { + if ( $( '#bp-message-thread-' + model.get( 'id' ) ).length ) { + $( '#bp-message-thread-' + model.get( 'id' ) ).prop( 'checked',model.get( 'checked' ) ); + } + }, + + singleSelect: function( event ) { + var isChecked = $( event.currentTarget ).prop( 'checked' ); + + // To avoid infinite loops + this.model.set( 'checked', isChecked, { silent: true } ); + + var hasChecked = false; + + _.each( this.model.collection.models, function( model ) { + if ( true === model.get( 'checked' ) ) { + hasChecked = true; + } + } ); + + if ( hasChecked ) { + $( '#user-messages-bulk-actions' ).closest( '.bulk-actions-wrap' ).removeClass( 'bp-hide' ); + + // Inform the user about how to use the bulk actions. + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howtoBulk, 'info' ); + } else { + $( '#user-messages-bulk-actions' ).closest( '.bulk-actions-wrap' ).addClass( 'bp-hide' ); + + bp.Nouveau.Messages.removeFeedback(); + } + }, + + cleanView: function() { + this.views.view.remove(); + } + } ); + + bp.Views.previewThread = bp.Nouveau.Messages.View.extend( { + tagName: 'div', + id: 'thread-preview', + template : bp.template( 'bp-messages-preview' ), + + events: { + 'click .actions button' : 'doAction', + 'click .actions a' : 'doAction' + }, + + initialize: function() { + this.collection.on( 'change:active', this.setPreview, this ); + this.collection.on( 'change:is_starred', this.updatePreview, this ); + this.collection.on( 'reset', this.emptyPreview, this ); + this.collection.on( 'remove', this.emptyPreview, this ); + }, + + render: function() { + // Only render if we have some content to render + if ( _.isUndefined( this.model ) || true !== this.model.get( 'active' ) ) { + return; + } + + bp.Nouveau.Messages.View.prototype.render.apply( this, arguments ); + }, + + setPreview: function( model ) { + var self = this; + + this.model = model; + + if ( true === model.get( 'unread' ) ) { + this.model.updateReadState().done( function() { + self.model.set( 'unread', false ); + } ); + } + + this.render(); + }, + + updatePreview: function( model ) { + if ( true === model.get( 'active' ) ) { + this.render(); + } + }, + + emptyPreview: function() { + $( this.el ).html( '' ); + }, + + doAction: function( event ) { + var action = $( event.currentTarget ).data( 'bp-action' ), self = this, options = {}, mid, + feedback = BP_Nouveau.messages.doingAction; + + if ( ! action ) { + return event; + } + + event.preventDefault(); + + var model = this.collection.findWhere( { active: true } ); + + if ( ! model.get( 'id' ) ) { + return; + } + + mid = model.get( 'id' ); + + // Open the full conversation + if ( 'view' === action ) { + bp.Nouveau.Messages.router.navigate( + 'view/' + mid + '/', + { trigger: true } + ); + + return; + + // Star/Unstar actions needs to use a specific id and nonce. + } else if ( 'star' === action || 'unstar' === action ) { + options.data = { + 'star_nonce' : model.get( 'star_nonce' ) + }; + + mid = model.get( 'starred_id' ); + } + + if ( ! _.isUndefined( feedback[ action ] ) ) { + bp.Nouveau.Messages.displayFeedback( feedback[ action ], 'loading' ); + } + + this.collection.doAction( action, mid, options ).done( function( response ) { + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + + if ( 'delete' === action || ( 'starred' === self.collection.options.box && 'unstar' === action ) ) { + // Remove from the list of messages + self.collection.remove( model.get( 'id' ) ); + + // And Requery + self.collection.fetch( { + data : _.pick( self.collection.options, ['box', 'search_terms', 'page'] ) + } ); + } else if ( 'unstar' === action || 'star' === action ) { + // Update the model attributes--updates the star icon. + _.each( response.messages, function( updated ) { + model.set( updated ); + } ); + model.set( _.first( response.messages ) ); + } else if ( response.messages ) { + model.set( _.first( response.messages ) ); + } + } ).fail( function( response ) { + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } ); + } + } ); + + bp.Views.Pagination = bp.Nouveau.Messages.View.extend( { + tagName : 'li', + className : 'last filter', + template : bp.template( 'bp-messages-paginate' ) + } ); + + bp.Views.BulkActions = bp.Nouveau.Messages.View.extend( { + tagName : 'div', + template : bp.template( 'bp-bulk-actions' ), + + events : { + 'click #user_messages_select_all' : 'bulkSelect', + 'click .bulk-apply' : 'doBulkAction' + }, + + bulkSelect: function( event ) { + var isChecked = $( event.currentTarget ).prop( 'checked' ); + + if ( isChecked ) { + $( this.el ).find( '.bulk-actions-wrap' ).removeClass( 'bp-hide' ).addClass( 'bp-show' ); + + // Inform the user about how to use the bulk actions. + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.howtoBulk, 'info' ); + } else { + $( this.el ).find( '.bulk-actions-wrap' ).addClass( 'bp-hide' ); + + bp.Nouveau.Messages.removeFeedback(); + } + + _.each( this.collection.models, function( model ) { + model.set( 'checked', isChecked ); + } ); + }, + + doBulkAction: function( event ) { + var self = this, options = {}, ids, attr = 'id', + feedback = BP_Nouveau.messages.doingAction; + + event.preventDefault(); + + var action = $( '#user-messages-bulk-actions' ).val(); + + if ( ! action ) { + return; + } + + var threads = this.collection.where( { checked: true } ); + var thread_ids = _.map( threads, function( model ) { + return model.get( 'id' ); + } ); + + // Default to thread ids + ids = thread_ids; + + // We need to get the starred ids + if ( 'star' === action || 'unstar' === action ) { + ids = _.map( threads, function( model ) { + return model.get( 'starred_id' ); + } ); + + if ( 1 === ids.length ) { + options.data = { + 'star_nonce' : threads[0].get( 'star_nonce' ) + }; + } + + // Map with first message starred in the thread + attr = 'starred_id'; + } + + // Message id to Thread id + var m_tid = _.object( _.map( threads, function (model) { + return [model.get( attr ), model.get( 'id' )]; + } ) ); + + if ( ! _.isUndefined( feedback[ action ] ) ) { + bp.Nouveau.Messages.displayFeedback( feedback[ action ], 'loading' ); + } + + this.collection.doAction( action, ids, options ).done( function( response ) { + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + + if ( 'delete' === action || ( 'starred' === self.collection.options.box && 'unstar' === action ) ) { + // Remove from the list of messages + self.collection.remove( thread_ids ); + + // And Requery + self.collection.fetch( { + data : _.pick( self.collection.options, ['box', 'search_terms', 'page'] ) + } ); + } else if ( response.messages ) { + // Update each model attributes + _.each( response.messages, function( updated, id ) { + var model = self.collection.get( m_tid[id] ); + model.set( updated ); + } ); + } + } ).fail( function( response ) { + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } ); + } + } ); + + bp.Views.messageFilters = bp.Nouveau.Messages.View.extend( { + tagName: 'ul', + template: bp.template( 'bp-messages-filters' ), + + events : { + 'search #user_messages_search' : 'resetSearchTerms', + 'submit #user_messages_search_form' : 'setSearchTerms', + 'click #bp-messages-next-page' : 'nextPage', + 'click #bp-messages-prev-page' : 'prevPage' + }, + + initialize: function() { + this.model.on( 'change', this.filterThreads, this ); + this.options.threads.on( 'sync', this.addPaginatation, this ); + }, + + addPaginatation: function( collection ) { + _.each( this.views._views, function( view ) { + if ( ! _.isUndefined( view ) ) { + _.first( view ).remove(); + } + } ); + + this.views.add( new bp.Views.Pagination( { model: new Backbone.Model( collection.options ) } ) ); + + this.views.add( '.user-messages-bulk-actions', new bp.Views.BulkActions( { + model: new Backbone.Model( BP_Nouveau.messages.bulk_actions ), + collection : collection + } ) ); + }, + + filterThreads: function() { + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.loading, 'loading' ); + + this.options.threads.reset(); + _.extend( this.options.threads.options, _.pick( this.model.attributes, ['box', 'search_terms'] ) ); + + this.options.threads.fetch( { + data : _.pick( this.model.attributes, ['box', 'search_terms', 'page'] ), + success : this.threadsFiltered, + error : this.threadsFilterError + } ); + }, + + threadsFiltered: function() { + bp.Nouveau.Messages.removeFeedback(); + }, + + threadsFilterError: function( collection, response ) { + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + }, + + resetSearchTerms: function( event ) { + event.preventDefault(); + + if ( ! $( event.target ).val() ) { + $( event.target ).closest( 'form' ).submit(); + } else { + $( event.target ).closest( 'form' ).find( '[type=submit]' ).addClass('bp-show').removeClass('bp-hide'); + } + }, + + setSearchTerms: function( event ) { + event.preventDefault(); + + this.model.set( { + 'search_terms': $( event.target ).find( 'input[type=search]' ).val() || '', + page: 1 + } ); + }, + + nextPage: function( event ) { + event.preventDefault(); + + this.model.set( 'page', this.model.get( 'page' ) + 1 ); + }, + + prevPage: function( event ) { + event.preventDefault(); + + this.model.set( 'page', this.model.get( 'page' ) - 1 ); + } + } ); + + bp.Views.userMessagesHeader = bp.Nouveau.Messages.View.extend( { + tagName : 'div', + template : bp.template( 'bp-messages-single-header' ), + + events: { + 'click .actions a' : 'doAction', + 'click .actions button' : 'doAction' + }, + + doAction: function( event ) { + var action = $( event.currentTarget ).data( 'bp-action' ), self = this, options = {}, + feedback = BP_Nouveau.messages.doingAction; + + if ( ! action ) { + return event; + } + + event.preventDefault(); + + if ( ! this.model.get( 'id' ) ) { + return; + } + + if ( 'star' === action || 'unstar' === action ) { + var opposite = { + 'star' : 'unstar', + 'unstar' : 'star' + }; + + options.data = { + 'star_nonce' : this.model.get( 'star_nonce' ) + }; + + $( event.currentTarget ).addClass( 'bp-hide' ); + $( event.currentTarget ).parent().find( '[data-bp-action="' + opposite[ action ] + '"]' ).removeClass( 'bp-hide' ); + + } + + if ( ! _.isUndefined( feedback[ action ] ) ) { + bp.Nouveau.Messages.displayFeedback( feedback[ action ], 'loading' ); + } + + bp.Nouveau.Messages.threads.doAction( action, this.model.get( 'id' ), options ).done( function( response ) { + // Remove all views + if ( 'delete' === action ) { + bp.Nouveau.Messages.clearViews(); + } else if ( response.messages ) { + self.model.set( _.first( response.messages ) ); + } + + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + // Display the feedback + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } ).fail( function( response ) { + // Remove previous feedback. + bp.Nouveau.Messages.removeFeedback(); + + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } ); + } + } ); + + bp.Views.userMessagesEntry = bp.Views.userMessagesHeader.extend( { + tagName : 'li', + template : bp.template( 'bp-messages-single-list' ), + + events: { + 'click [data-bp-action]' : 'doAction' + }, + + initialize: function() { + this.model.on( 'change:is_starred', this.updateMessage, this ); + }, + + updateMessage: function( model ) { + if ( this.model.get( 'id' ) !== model.get( 'id' ) ) { + return; + } + + this.render(); + } + } ); + + bp.Views.userMessages = bp.Nouveau.Messages.View.extend( { + tagName : 'div', + template : bp.template( 'bp-messages-single' ), + + initialize: function() { + // Load Messages + this.requestMessages(); + + // Init a reply + this.reply = new bp.Models.messageThread(); + + this.collection.on( 'add', this.addMessage, this ); + + // Add the editor view + this.views.add( '#bp-message-content', new bp.Views.messageEditor() ); + }, + + events: { + 'click #send_reply_button' : 'sendReply' + }, + + requestMessages: function() { + var data = {}; + + this.collection.reset(); + + bp.Nouveau.Messages.displayFeedback( BP_Nouveau.messages.loading, 'loading' ); + + if ( _.isUndefined( this.options.thread.attributes ) ) { + data.id = this.options.thread.id; + + } else { + data.id = this.options.thread.get( 'id' ); + data.js_thread = ! _.isEmpty( this.options.thread.get( 'subject' ) ); + } + + this.collection.fetch( { + data: data, + success : _.bind( this.messagesFetched, this ), + error : this.messagesFetchError + } ); + }, + + messagesFetched: function( collection, response ) { + if ( ! _.isUndefined( response.thread ) ) { + this.options.thread = new Backbone.Model( response.thread ); + } + + bp.Nouveau.Messages.removeFeedback(); + + this.views.add( '#bp-message-thread-header', new bp.Views.userMessagesHeader( { model: this.options.thread } ) ); + }, + + messagesFetchError: function( collection, response ) { + if ( response.feedback && response.type ) { + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } + }, + + addMessage: function( message ) { + this.views.add( '#bp-message-thread-list', new bp.Views.userMessagesEntry( { model: message } ) ); + }, + + addEditor: function() { + // Load the Editor + this.views.add( '#bp-message-content', new bp.Views.messageEditor() ); + }, + + sendReply: function( event ) { + event.preventDefault(); + + if ( true === this.reply.get( 'sending' ) ) { + return; + } + + this.reply.set ( { + thread_id : this.options.thread.get( 'id' ), + content : tinyMCE.activeEditor.getContent(), + sending : true + } ); + + this.collection.sync( 'create', _.pick( this.reply.attributes, ['thread_id', 'content' ] ), { + success : _.bind( this.replySent, this ), + error : _.bind( this.replyError, this ) + } ); + }, + + replySent: function( response ) { + var reply = this.collection.parse( response ); + + // Reset the form + tinyMCE.activeEditor.setContent( '' ); + this.reply.set( 'sending', false ); + + this.collection.add( _.first( reply ) ); + }, + + replyError: function( response ) { + if ( response.feedback && response.type ) { + bp.Nouveau.Messages.displayFeedback( response.feedback, response.type ); + } + } + } ); + + bp.Nouveau.Messages.Router = Backbone.Router.extend( { + routes: { + 'compose/' : 'composeMessage', + 'view/:id/': 'viewMessage', + 'sentbox/' : 'sentboxView', + 'starred/' : 'starredView', + 'inbox/' : 'inboxView', + '' : 'inboxView' + }, + + composeMessage: function() { + bp.Nouveau.Messages.composeView(); + }, + + viewMessage: function( thread_id ) { + if ( ! thread_id ) { + return; + } + + // Try to get the corresponding thread + var thread = bp.Nouveau.Messages.threads.get( thread_id ); + + if ( undefined === thread ) { + thread = {}; + thread.id = thread_id; + } + + bp.Nouveau.Messages.singleView( thread ); + }, + + sentboxView: function() { + bp.Nouveau.Messages.box = 'sentbox'; + bp.Nouveau.Messages.threadsView(); + }, + + starredView: function() { + bp.Nouveau.Messages.box = 'starred'; + bp.Nouveau.Messages.threadsView(); + }, + + inboxView: function() { + bp.Nouveau.Messages.box = 'inbox'; + bp.Nouveau.Messages.threadsView(); + } + } ); + + // Launch BP Nouveau Groups + bp.Nouveau.Messages.start(); + +} )( bp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.min.js new file mode 100644 index 0000000000000000000000000000000000000000..98fe58f227cf3eb2de798071da0637db3125333e --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-messages.min.js @@ -0,0 +1 @@ +window.wp=window.wp||{},window.bp=window.bp||{},function(e,s){"undefined"!=typeof BP_Nouveau&&(_.extend(bp,_.pick(wp,"Backbone","ajax","template")),bp.Models=bp.Models||{},bp.Collections=bp.Collections||{},bp.Views=bp.Views||{},bp.Nouveau=bp.Nouveau||{},bp.Nouveau.Messages={start:function(){this.views=new Backbone.Collection,this.threads=new bp.Collections.Threads,this.messages=new bp.Collections.Messages,this.router=new bp.Nouveau.Messages.Router,this.box="inbox",this.setupNav(),Backbone.history.start({pushState:!0,root:BP_Nouveau.messages.rootUrl})},setupNav:function(){var e=this;s("#compose-personal-li").addClass("last"),s("#subnav a").on("click",function(t){t.preventDefault();var a=s(t.target).prop("id");if(e.removeTinyMCE(),"compose"===a)if(_.isUndefined(e.views.get("compose")))e.router.navigate("compose/",{trigger:!0});else{var i=e.views.get("compose");i.get("view").remove(),e.views.remove({id:"compose",view:i}),"single"===e.box&&(e.box="inbox"),e.router.navigate(e.box+"/",{trigger:!0})}else e.box===a&&_.isUndefined(e.views.get("compose"))||(e.clearViews(),e.router.navigate(a+"/",{trigger:!0}))})},removeTinyMCE:function(){"undefined"!=typeof tinymce&&null!==tinymce.get("message_content")&&tinymce.EditorManager.execCommand("mceRemoveEditor",!0,"message_content")},tinyMCEinit:function(){void 0!==window.tinyMCE&&null!==window.tinyMCE.activeEditor&&void 0!==window.tinyMCE.activeEditor&&s(window.tinyMCE.activeEditor.contentDocument.activeElement).atwho("setIframe",s("#message_content_ifr")[0]).bp_mentions({data:[],suffix:" "})},removeFeedback:function(){var e;_.isUndefined(this.views.get("feedback"))||((e=this.views.get("feedback")).get("view").remove(),this.views.remove({id:"feedback",view:e}))},displayFeedback:function(e,s){var t;this.removeFeedback(),e&&(t=new bp.Views.Feedback({value:e,type:s||"info"}),this.views.add({id:"feedback",view:t}),t.inject(".bp-messages-feedback"))},clearViews:function(){_.isUndefined(this.views.models)||(_.each(this.views.models,function(e){e.get("view").remove()},this),this.views.reset())},composeView:function(){this.clearViews();var e=new bp.Views.messageForm({model:new bp.Models.Message});this.views.add({id:"compose",view:e}),e.inject(".bp-messages-content")},threadsView:function(){s("#subnav ul li").each(function(e,t){s(t).removeClass("current selected")}),s("#subnav a#"+this.box).closest("li").addClass("current selected");var e=new bp.Views.userThreads({collection:this.threads,box:this.box});this.views.add({id:"threads",view:e}),e.inject(".bp-messages-content"),this.displayFilters(this.threads)},displayFilters:function(e){var s;this.filters=new Backbone.Model({page:1,total_page:0,search_terms:"",box:this.box}),s=new bp.Views.messageFilters({model:this.filters,threads:e}),this.views.add({id:"filters",view:s}),s.inject(".bp-messages-filters")},singleView:function(e){this.clearViews(),this.box="single";var s=new bp.Views.userMessages({collection:this.messages,thread:e});this.views.add({id:"single",view:s}),s.inject(".bp-messages-content")}},bp.Models.Message=Backbone.Model.extend({defaults:{send_to:[],subject:"",message_content:"",meta:{}},sendMessage:function(){if(!0!==this.get("sending")){this.set("sending",!0,{silent:!0});var e=bp.ajax.post("messages_send_message",_.extend({nonce:BP_Nouveau.messages.nonces.send},this.attributes));return this.set("sending",!1,{silent:!0}),e}}}),bp.Models.Thread=Backbone.Model.extend({defaults:{id:0,message_id:0,subject:"",excerpt:"",content:"",unread:!0,sender_name:"",sender_link:"",sender_avatar:"",count:0,date:0,display_date:"",recipients:[]},updateReadState:function(e){return e=e||{},e.data=_.extend(_.pick(this.attributes,["id","message_id"]),{action:"messages_thread_read",nonce:BP_Nouveau.nonces.messages}),bp.ajax.send(e)}}),bp.Models.messageThread=Backbone.Model.extend({defaults:{id:0,content:"",sender_id:0,sender_name:"",sender_link:"",sender_avatar:"",date:0,display_date:""}}),bp.Collections.Threads=Backbone.Collection.extend({model:bp.Models.Thread,initialize:function(){this.options={page:1,total_page:0}},sync:function(e,s,t){if(t=t||{},t.context=this,t.data=t.data||{},t.data.nonce=BP_Nouveau.nonces.messages,"read"===e)return t.data=_.extend(t.data,{action:"messages_get_user_message_threads"}),bp.ajax.send(t)},parse:function(e){return _.isArray(e.threads)||(e.threads=[e.threads]),_.each(e.threads,function(s,t){_.isNull(s)||(e.threads[t].id=s.id,e.threads[t].message_id=s.message_id,e.threads[t].subject=s.subject,e.threads[t].excerpt=s.excerpt,e.threads[t].content=s.content,e.threads[t].unread=s.unread,e.threads[t].sender_name=s.sender_name,e.threads[t].sender_link=s.sender_link,e.threads[t].sender_avatar=s.sender_avatar,e.threads[t].count=s.count,e.threads[t].date=new Date(s.date),e.threads[t].display_date=s.display_date,e.threads[t].recipients=s.recipients,e.threads[t].star_link=s.star_link,e.threads[t].is_starred=s.is_starred)}),_.isUndefined(e.meta)||(this.options.page=e.meta.page,this.options.total_page=e.meta.total_page),bp.Nouveau.Messages.box&&(this.options.box=bp.Nouveau.Messages.box),_.isUndefined(e.extraContent)||_.extend(this.options,_.pick(e.extraContent,["beforeLoop","afterLoop"])),e.threads},doAction:function(e,s,t){return t=t||{},t.context=this,t.data=t.data||{},t.data=_.extend(t.data,{action:"messages_"+e,nonce:BP_Nouveau.nonces.messages,id:s}),bp.ajax.send(t)}}),bp.Collections.Messages=Backbone.Collection.extend({model:bp.Models.messageThread,options:{},sync:function(e,s,t){return t=t||{},t.context=this,t.data=t.data||{},t.data.nonce=BP_Nouveau.nonces.messages,"read"===e?(t.data=_.extend(t.data,{action:"messages_get_thread_messages"}),bp.ajax.send(t)):"create"===e?(t.data=_.extend(t.data,{action:"messages_send_reply",nonce:BP_Nouveau.messages.nonces.send},s||{}),bp.ajax.send(t)):void 0},parse:function(e){return _.isArray(e.messages)||(e.messages=[e.messages]),_.each(e.messages,function(s,t){_.isNull(s)||(e.messages[t].id=s.id,e.messages[t].content=s.content,e.messages[t].sender_id=s.sender_id,e.messages[t].sender_name=s.sender_name,e.messages[t].sender_link=s.sender_link,e.messages[t].sender_avatar=s.sender_avatar,e.messages[t].date=new Date(s.date),e.messages[t].display_date=s.display_date,e.messages[t].star_link=s.star_link,e.messages[t].is_starred=s.is_starred)}),_.isUndefined(e.thread)||(this.options.thread_id=e.thread.id,this.options.thread_subject=e.thread.subject,this.options.recipients=e.thread.recipients),e.messages}}),bp.Nouveau.Messages.View=bp.Backbone.View.extend({inject:function(e){this.render(),s(e).html(this.el),this.views.ready()},prepare:function(){return!_.isUndefined(this.model)&&_.isFunction(this.model.toJSON)?this.model.toJSON():{}}}),bp.Views.Feedback=bp.Nouveau.Messages.View.extend({tagName:"div",className:"bp-messages bp-user-messages-feedback",template:bp.template("bp-messages-feedback"),initialize:function(){this.model=new Backbone.Model({type:this.options.type||"info",message:this.options.value})}}),bp.Views.Hook=bp.Nouveau.Messages.View.extend({tagName:"div",template:bp.template("bp-messages-hook"),initialize:function(){this.model=new Backbone.Model({extraContent:this.options.extraContent}),this.el.className="bp-messages-hook",this.options.className&&(this.el.className+=" "+this.options.className)}}),bp.Views.messageEditor=bp.Nouveau.Messages.View.extend({template:bp.template("bp-messages-editor"),initialize:function(){this.on("ready",this.activateTinyMce,this)},activateTinyMce:function(){"undefined"!=typeof tinymce&&tinymce.EditorManager.execCommand("mceAddEditor",!0,"message_content")}}),bp.Views.messageForm=bp.Nouveau.Messages.View.extend({tagName:"form",id:"send_message_form",className:"standard-form",template:bp.template("bp-messages-form"),events:{"click #bp-messages-send":"sendMessage","click #bp-messages-reset":"resetForm"},initialize:function(){this.resetModel=this.model.clone(),this.views.add("#bp-message-content",new bp.Views.messageEditor),this.model.on("change",this.resetFields,this),this.on("ready",this.addMentions,this)},addMentions:function(){s(this.el).find("#send-to-input").bp_mentions({data:[],suffix:" "})},resetFields:function(e){_.each(e.previousAttributes(),function(e,t){"message_content"===t?void 0!==tinyMCE.activeEditor&&null!==tinyMCE.activeEditor&&tinyMCE.activeEditor.setContent(""):"meta"!==t&&!1!==e&&s('input[name="'+t+'"]').val("")}),s(this.el).trigger("message:reset",_.pick(e.previousAttributes(),"meta"))},sendMessage:function(e){var t={},a=[],i=this;if(e.preventDefault(),bp.Nouveau.Messages.removeFeedback(),_.each(this.$el.serializeArray(),function(e){if(e.name=e.name.replace("[]",""),-1===_.indexOf(["send_to","subject","message_content"],e.name))_.isUndefined(t[e.name])?t[e.name]=e.value:(_.isArray(t[e.name])||(t[e.name]=[t[e.name]]),t[e.name].push(e.value));else if("send_to"===e.name){var i=e.value.match(/(^|[^@\w\-])@([a-zA-Z0-9_\-]{1,50})\b/g);i?((i=i.map(function(e){return e=s.trim(e)}))&&s.isArray(i)||a.push("send_to"),this.model.set("send_to",i,{silent:!0})):a.push("send_to")}else"message_content"===e.name&&void 0!==tinyMCE.activeEditor&&(e.value=tinyMCE.activeEditor.getContent()),e.value?this.model.set(e.name,e.value,{silent:!0}):a.push(e.name)},this),a.length){var n="";return _.each(a,function(e){n+='<div class="bp-feedback error"><span class="bp-icon" aria-hidden="true"></span><p>'+BP_Nouveau.messages.errors[e]+"</p></div>"}),void bp.Nouveau.Messages.displayFeedback(n,"error")}this.model.set("meta",t,{silent:!0}),this.model.sendMessage().done(function(e){i.model.set(i.resetModel),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type),bp.Nouveau.Messages.removeTinyMCE();var s=bp.Nouveau.Messages.views.get("compose");s.get("view").remove(),bp.Nouveau.Messages.views.remove({id:"compose",view:s}),bp.Nouveau.Messages.router.navigate("sentbox/",{trigger:!0})}).fail(function(e){e.feedback&&bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)})},resetForm:function(e){e.preventDefault(),this.model.set(this.resetModel)}}),bp.Views.userThreads=bp.Nouveau.Messages.View.extend({tagName:"div",events:{"click .subject":"changePreview"},initialize:function(){var e=[new bp.Nouveau.Messages.View({tagName:"ul",id:"message-threads",className:"message-lists"}),new bp.Views.previewThread({collection:this.collection})];_.each(e,function(e){this.views.add(e)},this),this.requestThreads(),this.collection.on("reset",this.cleanContent,this),this.collection.on("add",this.addThread,this)},requestThreads:function(){this.collection.reset(),bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.loading,"loading"),this.collection.fetch({data:_.pick(this.options,"box"),success:_.bind(this.threadsFetched,this),error:this.threadsFetchError})},threadsFetched:function(){bp.Nouveau.Messages.removeFeedback(),this.collection.options.afterLoop&&this.views.add(new bp.Views.Hook({extraContent:this.collection.options.afterLoop,className:"after-messages-loop"}),{at:1}),this.collection.options.beforeLoop&&this.views.add(new bp.Views.Hook({extraContent:this.collection.options.beforeLoop,className:"before-messages-loop"}),{at:0}),bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.howto,"info")},threadsFetchError:function(e,s){bp.Nouveau.Messages.displayFeedback(s.feedback,s.type)},cleanContent:function(){_.each(this.views._views["#message-threads"],function(e){e.remove()})},addThread:function(e){var s=this.collection.findWhere({active:!0});_.isUndefined(s)&&e.set("active",!0),this.views.add("#message-threads",new bp.Views.userThread({model:e}))},setActiveThread:function(e){e&&_.each(this.collection.models,function(s){s.id===e?s.set("active",!0):s.unset("active")},this)},changePreview:function(e){var t=s(e.currentTarget);e.preventDefault(),bp.Nouveau.Messages.removeFeedback(),t.closest(".thread-item").hasClass("selected")?bp.Nouveau.Messages.router.navigate("view/"+t.closest(".thread-content").data("thread-id")+"/",{trigger:!0}):(this.setActiveThread(t.closest(".thread-content").data("thread-id")),s(".message-action-view").focus())}}),bp.Views.userThread=bp.Nouveau.Messages.View.extend({tagName:"li",template:bp.template("bp-messages-thread"),className:"thread-item",events:{"click .message-check":"singleSelect"},initialize:function(){if(this.model.get("active")&&(this.el.className+=" selected"),this.model.get("unread")&&(this.el.className+=" unread"),"sentbox"===bp.Nouveau.Messages.box){var e=this.model.get("recipients").length,s="";2===e?s=BP_Nouveau.messages.toOthers.one:2<e&&(s=BP_Nouveau.messages.toOthers.more.replace("%d",Number(e-1))),this.model.set({recipientsCount:e,toOthers:s},{silent:!0})}else this.model.get("recipientsCount")&&this.model.unset("recipientsCount",{silent:!0});this.model.on("change:active",this.toggleClass,this),this.model.on("change:unread",this.updateReadState,this),this.model.on("change:checked",this.bulkSelect,this),this.model.on("remove",this.cleanView,this)},toggleClass:function(e){!0===e.get("active")?s(this.el).addClass("selected"):s(this.el).removeClass("selected")},updateReadState:function(e,t){!1===t?s(this.el).removeClass("unread"):s(this.el).addClass("unread")},bulkSelect:function(e){s("#bp-message-thread-"+e.get("id")).length&&s("#bp-message-thread-"+e.get("id")).prop("checked",e.get("checked"))},singleSelect:function(e){var t=s(e.currentTarget).prop("checked");this.model.set("checked",t,{silent:!0});var a=!1;_.each(this.model.collection.models,function(e){!0===e.get("checked")&&(a=!0)}),a?(s("#user-messages-bulk-actions").closest(".bulk-actions-wrap").removeClass("bp-hide"),bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.howtoBulk,"info")):(s("#user-messages-bulk-actions").closest(".bulk-actions-wrap").addClass("bp-hide"),bp.Nouveau.Messages.removeFeedback())},cleanView:function(){this.views.view.remove()}}),bp.Views.previewThread=bp.Nouveau.Messages.View.extend({tagName:"div",id:"thread-preview",template:bp.template("bp-messages-preview"),events:{"click .actions button":"doAction","click .actions a":"doAction"},initialize:function(){this.collection.on("change:active",this.setPreview,this),this.collection.on("change:is_starred",this.updatePreview,this),this.collection.on("reset",this.emptyPreview,this),this.collection.on("remove",this.emptyPreview,this)},render:function(){_.isUndefined(this.model)||!0!==this.model.get("active")||bp.Nouveau.Messages.View.prototype.render.apply(this,arguments)},setPreview:function(e){var s=this;this.model=e,!0===e.get("unread")&&this.model.updateReadState().done(function(){s.model.set("unread",!1)}),this.render()},updatePreview:function(e){!0===e.get("active")&&this.render()},emptyPreview:function(){s(this.el).html("")},doAction:function(e){var t,a=s(e.currentTarget).data("bp-action"),i=this,n={},o=BP_Nouveau.messages.doingAction;if(!a)return e;e.preventDefault();var d=this.collection.findWhere({active:!0});d.get("id")&&(t=d.get("id"),"view"!==a?("star"!==a&&"unstar"!==a||(n.data={star_nonce:d.get("star_nonce")},t=d.get("starred_id")),_.isUndefined(o[a])||bp.Nouveau.Messages.displayFeedback(o[a],"loading"),this.collection.doAction(a,t,n).done(function(e){bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type),"delete"===a||"starred"===i.collection.options.box&&"unstar"===a?(i.collection.remove(d.get("id")),i.collection.fetch({data:_.pick(i.collection.options,["box","search_terms","page"])})):"unstar"===a||"star"===a?(_.each(e.messages,function(e){d.set(e)}),d.set(_.first(e.messages))):e.messages&&d.set(_.first(e.messages))}).fail(function(e){bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)})):bp.Nouveau.Messages.router.navigate("view/"+t+"/",{trigger:!0}))}}),bp.Views.Pagination=bp.Nouveau.Messages.View.extend({tagName:"li",className:"last filter",template:bp.template("bp-messages-paginate")}),bp.Views.BulkActions=bp.Nouveau.Messages.View.extend({tagName:"div",template:bp.template("bp-bulk-actions"),events:{"click #user_messages_select_all":"bulkSelect","click .bulk-apply":"doBulkAction"},bulkSelect:function(e){var t=s(e.currentTarget).prop("checked");t?(s(this.el).find(".bulk-actions-wrap").removeClass("bp-hide").addClass("bp-show"),bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.howtoBulk,"info")):(s(this.el).find(".bulk-actions-wrap").addClass("bp-hide"),bp.Nouveau.Messages.removeFeedback()),_.each(this.collection.models,function(e){e.set("checked",t)})},doBulkAction:function(e){var t,a=this,i={},n="id",o=BP_Nouveau.messages.doingAction;e.preventDefault();var d=s("#user-messages-bulk-actions").val();if(d){var r=this.collection.where({checked:!0}),c=_.map(r,function(e){return e.get("id")});t=c,"star"!==d&&"unstar"!==d||(1===(t=_.map(r,function(e){return e.get("starred_id")})).length&&(i.data={star_nonce:r[0].get("star_nonce")}),n="starred_id");var l=_.object(_.map(r,function(e){return[e.get(n),e.get("id")]}));_.isUndefined(o[d])||bp.Nouveau.Messages.displayFeedback(o[d],"loading"),this.collection.doAction(d,t,i).done(function(e){bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type),"delete"===d||"starred"===a.collection.options.box&&"unstar"===d?(a.collection.remove(c),a.collection.fetch({data:_.pick(a.collection.options,["box","search_terms","page"])})):e.messages&&_.each(e.messages,function(e,s){a.collection.get(l[s]).set(e)})}).fail(function(e){bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)})}}}),bp.Views.messageFilters=bp.Nouveau.Messages.View.extend({tagName:"ul",template:bp.template("bp-messages-filters"),events:{"search #user_messages_search":"resetSearchTerms","submit #user_messages_search_form":"setSearchTerms","click #bp-messages-next-page":"nextPage","click #bp-messages-prev-page":"prevPage"},initialize:function(){this.model.on("change",this.filterThreads,this),this.options.threads.on("sync",this.addPaginatation,this)},addPaginatation:function(e){_.each(this.views._views,function(e){_.isUndefined(e)||_.first(e).remove()}),this.views.add(new bp.Views.Pagination({model:new Backbone.Model(e.options)})),this.views.add(".user-messages-bulk-actions",new bp.Views.BulkActions({model:new Backbone.Model(BP_Nouveau.messages.bulk_actions),collection:e}))},filterThreads:function(){bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.loading,"loading"),this.options.threads.reset(),_.extend(this.options.threads.options,_.pick(this.model.attributes,["box","search_terms"])),this.options.threads.fetch({data:_.pick(this.model.attributes,["box","search_terms","page"]),success:this.threadsFiltered,error:this.threadsFilterError})},threadsFiltered:function(){bp.Nouveau.Messages.removeFeedback()},threadsFilterError:function(e,s){bp.Nouveau.Messages.displayFeedback(s.feedback,s.type)},resetSearchTerms:function(e){e.preventDefault(),s(e.target).val()?s(e.target).closest("form").find("[type=submit]").addClass("bp-show").removeClass("bp-hide"):s(e.target).closest("form").submit()},setSearchTerms:function(e){e.preventDefault(),this.model.set({search_terms:s(e.target).find("input[type=search]").val()||"",page:1})},nextPage:function(e){e.preventDefault(),this.model.set("page",this.model.get("page")+1)},prevPage:function(e){e.preventDefault(),this.model.set("page",this.model.get("page")-1)}}),bp.Views.userMessagesHeader=bp.Nouveau.Messages.View.extend({tagName:"div",template:bp.template("bp-messages-single-header"),events:{"click .actions a":"doAction","click .actions button":"doAction"},doAction:function(e){var t=s(e.currentTarget).data("bp-action"),a=this,i={},n=BP_Nouveau.messages.doingAction;if(!t)return e;if(e.preventDefault(),this.model.get("id")){if("star"===t||"unstar"===t){var o={star:"unstar",unstar:"star"};i.data={star_nonce:this.model.get("star_nonce")},s(e.currentTarget).addClass("bp-hide"),s(e.currentTarget).parent().find('[data-bp-action="'+o[t]+'"]').removeClass("bp-hide")}_.isUndefined(n[t])||bp.Nouveau.Messages.displayFeedback(n[t],"loading"),bp.Nouveau.Messages.threads.doAction(t,this.model.get("id"),i).done(function(e){"delete"===t?bp.Nouveau.Messages.clearViews():e.messages&&a.model.set(_.first(e.messages)),bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)}).fail(function(e){bp.Nouveau.Messages.removeFeedback(),bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)})}}}),bp.Views.userMessagesEntry=bp.Views.userMessagesHeader.extend({tagName:"li",template:bp.template("bp-messages-single-list"),events:{"click [data-bp-action]":"doAction"},initialize:function(){this.model.on("change:is_starred",this.updateMessage,this)},updateMessage:function(e){this.model.get("id")===e.get("id")&&this.render()}}),bp.Views.userMessages=bp.Nouveau.Messages.View.extend({tagName:"div",template:bp.template("bp-messages-single"),initialize:function(){this.requestMessages(),this.reply=new bp.Models.messageThread,this.collection.on("add",this.addMessage,this),this.views.add("#bp-message-content",new bp.Views.messageEditor)},events:{"click #send_reply_button":"sendReply"},requestMessages:function(){var e={};this.collection.reset(),bp.Nouveau.Messages.displayFeedback(BP_Nouveau.messages.loading,"loading"),_.isUndefined(this.options.thread.attributes)?e.id=this.options.thread.id:(e.id=this.options.thread.get("id"),e.js_thread=!_.isEmpty(this.options.thread.get("subject"))),this.collection.fetch({data:e,success:_.bind(this.messagesFetched,this),error:this.messagesFetchError})},messagesFetched:function(e,s){_.isUndefined(s.thread)||(this.options.thread=new Backbone.Model(s.thread)),bp.Nouveau.Messages.removeFeedback(),this.views.add("#bp-message-thread-header",new bp.Views.userMessagesHeader({model:this.options.thread}))},messagesFetchError:function(e,s){s.feedback&&s.type&&bp.Nouveau.Messages.displayFeedback(s.feedback,s.type)},addMessage:function(e){this.views.add("#bp-message-thread-list",new bp.Views.userMessagesEntry({model:e}))},addEditor:function(){this.views.add("#bp-message-content",new bp.Views.messageEditor)},sendReply:function(e){e.preventDefault(),!0!==this.reply.get("sending")&&(this.reply.set({thread_id:this.options.thread.get("id"),content:tinyMCE.activeEditor.getContent(),sending:!0}),this.collection.sync("create",_.pick(this.reply.attributes,["thread_id","content"]),{success:_.bind(this.replySent,this),error:_.bind(this.replyError,this)}))},replySent:function(e){var s=this.collection.parse(e);tinyMCE.activeEditor.setContent(""),this.reply.set("sending",!1),this.collection.add(_.first(s))},replyError:function(e){e.feedback&&e.type&&bp.Nouveau.Messages.displayFeedback(e.feedback,e.type)}}),bp.Nouveau.Messages.Router=Backbone.Router.extend({routes:{"compose/":"composeMessage","view/:id/":"viewMessage","sentbox/":"sentboxView","starred/":"starredView","inbox/":"inboxView","":"inboxView"},composeMessage:function(){bp.Nouveau.Messages.composeView()},viewMessage:function(e){if(e){var s=bp.Nouveau.Messages.threads.get(e);void 0===s&&((s={}).id=e),bp.Nouveau.Messages.singleView(s)}},sentboxView:function(){bp.Nouveau.Messages.box="sentbox",bp.Nouveau.Messages.threadsView()},starredView:function(){bp.Nouveau.Messages.box="starred",bp.Nouveau.Messages.threadsView()},inboxView:function(){bp.Nouveau.Messages.box="inbox",bp.Nouveau.Messages.threadsView()}}),bp.Nouveau.Messages.start())}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.js new file mode 100644 index 0000000000000000000000000000000000000000..40e517fbaa96498e86a61988f5a7fa947d022d2c --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.js @@ -0,0 +1,140 @@ +/* global bp, BP_Nouveau */ +/* @version 3.0.0 */ +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + bp.Nouveau = bp.Nouveau || {}; + + /** + * [Activity description] + * @type {Object} + */ + bp.Nouveau.Notifications = { + + /** + * [start description] + * @return {[type]} [description] + */ + start: function() { + this.setupGlobals(); + + // Listen to events ("Add hooks!") + this.addListeners(); + }, + + /** + * [setupGlobals description] + * @return {[type]} [description] + */ + setupGlobals: function() { + // Always reset sort to Newest notifications + bp.Nouveau.setStorage( 'bp-notifications', 'extras', 'DESC' ); + }, + + /** + * [addListeners description] + */ + addListeners: function() { + // Change the Order actions visibility once the ajax request is done. + $( '#buddypress [data-bp-list="notifications"]' ).on( 'bp_ajax_request', this.prepareDocument ); + + // Trigger Notifications order request. + $( '#buddypress [data-bp-list="notifications"]' ).on( 'click', '[data-bp-notifications-order]', bp.Nouveau, this.sortNotifications ); + + // Enable the Apply Button once the bulk action is selected + $( '#buddypress [data-bp-list="notifications"]' ).on( 'change', '#notification-select', this.enableBulkSubmit ); + + // Select all displayed notifications + $( '#buddypress [data-bp-list="notifications"]' ).on( 'click', '#select-all-notifications', this.selectAll ); + + // Reset The filter before unload + $( window ).on( 'unload', this.resetFilter ); + }, + + /** + * [prepareDocument description] + * @return {[type]} [description] + */ + prepareDocument: function() { + var store = bp.Nouveau.getStorage( 'bp-notifications' ); + + if ( 'ASC' === store.extras ) { + $( '[data-bp-notifications-order="DESC"]' ).show(); + $( '[data-bp-notifications-order="ASC"]' ).hide(); + } else { + $( '[data-bp-notifications-order="ASC"]' ).show(); + $( '[data-bp-notifications-order="DESC"]' ).hide(); + } + + // Make sure a 'Bulk Action' is selected before submitting the form + $( '#notification-bulk-manage' ).prop( 'disabled', 'disabled' ); + }, + + /** + * [sortNotifications description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + sortNotifications: function( event ) { + var store = event.data.getStorage( 'bp-notifications' ), + scope = store.scope || null, filter = store.filter || null, + sort = store.extra || null, search_terms = ''; + + event.preventDefault(); + + sort = $( event.currentTarget ).data( 'bp-notifications-order' ); + bp.Nouveau.setStorage( 'bp-notifications', 'extras', sort ); + + if ( $( '#buddypress [data-bp-search="notifications"] input[type=search]' ).length ) { + search_terms = $( '#buddypress [data-bp-search="notifications"] input[type=search]' ).val(); + } + + bp.Nouveau.objectRequest( { + object : 'notifications', + scope : scope, + filter : filter, + search_terms : search_terms, + extras : sort, + page : 1 + } ); + }, + + /** + * [enableBulkSubmit description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + enableBulkSubmit: function( event ) { + $( '#notification-bulk-manage' ).prop( 'disabled', $( event.currentTarget ).val().length <= 0 ); + }, + + /** + * [selectAll description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + selectAll: function( event ) { + $.each( $( '.notification-check' ), function( cb, checkbox ) { + $( checkbox ).prop( 'checked', $( event.currentTarget ).prop( 'checked' ) ); + } ); + }, + + /** + * [resetFilter description] + * @return {[type]} [description] + */ + resetFilter: function() { + bp.Nouveau.setStorage( 'bp-notifications', 'filter', 0 ); + } + }; + + // Launch BP Nouveau Notifications + bp.Nouveau.Notifications.start(); + +} )( bp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.min.js new file mode 100644 index 0000000000000000000000000000000000000000..f89e238ab90a40f1c09aeac7d396afe484c127be --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-notifications.min.js @@ -0,0 +1 @@ +window.bp=window.bp||{},function(t,i){"undefined"!=typeof BP_Nouveau&&(bp.Nouveau=bp.Nouveau||{},bp.Nouveau.Notifications={start:function(){this.setupGlobals(),this.addListeners()},setupGlobals:function(){bp.Nouveau.setStorage("bp-notifications","extras","DESC")},addListeners:function(){i('#buddypress [data-bp-list="notifications"]').on("bp_ajax_request",this.prepareDocument),i('#buddypress [data-bp-list="notifications"]').on("click","[data-bp-notifications-order]",bp.Nouveau,this.sortNotifications),i('#buddypress [data-bp-list="notifications"]').on("change","#notification-select",this.enableBulkSubmit),i('#buddypress [data-bp-list="notifications"]').on("click","#select-all-notifications",this.selectAll),i(window).on("unload",this.resetFilter)},prepareDocument:function(){"ASC"===bp.Nouveau.getStorage("bp-notifications").extras?(i('[data-bp-notifications-order="DESC"]').show(),i('[data-bp-notifications-order="ASC"]').hide()):(i('[data-bp-notifications-order="ASC"]').show(),i('[data-bp-notifications-order="DESC"]').hide()),i("#notification-bulk-manage").prop("disabled","disabled")},sortNotifications:function(t){var e=t.data.getStorage("bp-notifications"),o=e.scope||null,a=e.filter||null,n=e.extra||null,s="";t.preventDefault(),n=i(t.currentTarget).data("bp-notifications-order"),bp.Nouveau.setStorage("bp-notifications","extras",n),i('#buddypress [data-bp-search="notifications"] input[type=search]').length&&(s=i('#buddypress [data-bp-search="notifications"] input[type=search]').val()),bp.Nouveau.objectRequest({object:"notifications",scope:o,filter:a,search_terms:s,extras:n,page:1})},enableBulkSubmit:function(t){i("#notification-bulk-manage").prop("disabled",i(t.currentTarget).val().length<=0)},selectAll:function(t){i.each(i(".notification-check"),function(e,o){i(o).prop("checked",i(t.currentTarget).prop("checked"))})},resetFilter:function(){bp.Nouveau.setStorage("bp-notifications","filter",0)}},bp.Nouveau.Notifications.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 new file mode 100644 index 0000000000000000000000000000000000000000..a0287013f783b551813fc806829723e33c4e041b --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.js @@ -0,0 +1,807 @@ +/* global wp, bp, BP_Nouveau, JSON */ +/* jshint devel: true */ +/* jshint browser: true */ +/* @version 3.0.0 */ +window.wp = window.wp || {}; +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + /** + * [Nouveau description] + * @type {Object} + */ + bp.Nouveau = { + /** + * [start description] + * @return {[type]} [description] + */ + start: function() { + + // Setup globals + this.setupGlobals(); + + // Adjust Document/Forms properties + this.prepareDocument(); + + // Init the BuddyPress objects + this.initObjects(); + + // Set BuddyPress HeartBeat + this.setHeartBeat(); + + // Listen to events ("Add hooks!") + this.addListeners(); + }, + + /** + * [setupGlobals description] + * @return {[type]} [description] + */ + setupGlobals: function() { + this.ajax_request = null; + + // Object Globals + this.objects = $.map( BP_Nouveau.objects, function( value ) { return value; } ); + this.objectNavParent = BP_Nouveau.object_nav_parent; + + // HeartBeat Global + this.heartbeat = wp.heartbeat || {}; + + // An object containing each query var + this.querystring = this.getLinkParams(); + }, + + /** + * [prepareDocument description] + * @return {[type]} [description] + */ + prepareDocument: function() { + + // Remove the no-js class and add the js one + if ( $( 'body' ).hasClass( 'no-js' ) ) { + $('body').removeClass( 'no-js' ).addClass( 'js' ); + } + + // Log Warnings into the console instead of the screen + if ( BP_Nouveau.warnings && 'undefined' !== typeof console && console.warn ) { + $.each( BP_Nouveau.warnings, function( w, warning ) { + console.warn( warning ); + } ); + } + + // Remove the directory title if there's a widget containing it + if ( $( '.buddypress_object_nav .widget-title' ).length ) { + var text = $( '.buddypress_object_nav .widget-title' ).html(); + + $( 'body' ).find( '*:contains("' + text + '")' ).each( function( e, element ) { + if ( ! $( element ).hasClass( 'widget-title' ) && text === $( element ).html() && ! $( element ).is( 'a' ) ) { + $( element ).remove(); + } + } ); + } + }, + + /** Helpers *******************************************************************/ + + /** + * [getStorage description] + * @param {[type]} type [description] + * @param {[type]} property [description] + * @return {[type]} [description] + */ + getStorage: function( type, property ) { + var store = sessionStorage.getItem( type ); + + if ( store ) { + store = JSON.parse( store ); + } else { + store = {}; + } + + if ( undefined !== property ) { + return store[property] || false; + } + + return store; + }, + + /** + * [setStorage description] + * @param {[type]} type [description] + * @param {[type]} property [description] + * @param {[type]} value [description] + */ + setStorage: function( type, property, value ) { + var store = this.getStorage( type ); + + if ( undefined === value && undefined !== store[ property ] ) { + delete store[ property ]; + } else { + // Set property + store[ property ] = value; + } + + sessionStorage.setItem( type, JSON.stringify( store ) ); + + return sessionStorage.getItem( type ) !== null; + }, + + /** + * [getLinkParams description] + * @param {[type]} url [description] + * @param {[type]} param [description] + * @return {[type]} [description] + */ + getLinkParams: function( url, param ) { + var qs; + if ( url ) { + qs = ( -1 !== url.indexOf( '?' ) ) ? '?' + url.split( '?' )[1] : ''; + } else { + qs = document.location.search; + } + + if ( ! qs ) { + return null; + } + + var params = qs.replace( /(^\?)/, '' ).split( '&' ).map( function( n ) { + return n = n.split( '=' ), this[n[0]] = n[1], this; + }.bind( {} ) )[0]; + + if ( param ) { + return params[param]; + } + + return params; + }, + + /** + * [ajax description] + * @param {[type]} post_data [description] + * @param {[type]} object [description] + * @return {[type]} [description] + */ + ajax: function( post_data, object ) { + if ( this.ajax_request ) { + this.ajax_request.abort(); + } + + // Extend posted data with stored data and object nonce + var postData = $.extend( {}, bp.Nouveau.getStorage( 'bp-' + object ), { nonce: BP_Nouveau.nonces[object] }, post_data ); + + if ( undefined !== BP_Nouveau.customizer_settings ) { + postData.customized = BP_Nouveau.customizer_settings; + } + + this.ajax_request = $.post( BP_Nouveau.ajaxurl, postData, 'json' ); + + return this.ajax_request; + }, + + inject: function( selector, content, method ) { + if ( ! $( selector ).length || ! content ) { + return; + } + + /** + * How the content should be injected in the selector + * + * possible methods are + * - reset: the selector will be reset with the content + * - append: the content will be added after selector's content + * - prepend: the content will be added before selector's content + */ + method = method || 'reset'; + + if ( 'append' === method ) { + $( selector ).append( content ); + } else if ( 'prepend' === method ) { + $( selector ).prepend( content ); + } else { + $( selector ).html( content ); + } + + if ( 'undefined' !== typeof bp_mentions || 'undefined' !== typeof bp.mentions ) { + $( '.bp-suggestions' ).bp_mentions( bp.mentions.users ); + } + }, + + /** + * [objectRequest description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + objectRequest: function( data ) { + var postdata = {}, self = this; + + data = $.extend( { + object : '', + scope : null, + filter : null, + target : '#buddypress [data-bp-list]', + search_terms : '', + page : 1, + extras : null, + caller : null, + template : null, + method : 'reset' + }, data ); + + // Do not request if we don't have the object or the target to inject results into + if ( ! data.object || ! data.target ) { + return; + } + + // Set session's data + if ( null !== data.scope ) { + this.setStorage( 'bp-' + data.object, 'scope', data.scope ); + } + + if ( null !== data.filter ) { + this.setStorage( 'bp-' + data.object, 'filter', data.filter ); + } + + if ( null !== data.extras ) { + this.setStorage( 'bp-' + data.object, 'extras', data.extras ); + } + + /* Set the correct selected nav and filter */ + $( this.objectNavParent + ' [data-bp-object]' ).each( function() { + $( this ).removeClass( 'selected loading' ); + } ); + + $( this.objectNavParent + ' [data-bp-scope="' + data.scope + '"], #object-nav li.current' ).addClass( 'selected loading' ); + $( '#buddypress [data-bp-filter="' + data.object + '"] option[value="' + data.filter + '"]' ).prop( 'selected', true ); + + if ( 'friends' === data.object || 'group_members' === data.object ) { + data.template = data.object; + data.object = 'members'; + } else if ( 'group_requests' === data.object ) { + data.object = 'groups'; + data.template = 'group_requests'; + } else if ( 'notifications' === data.object ) { + data.object = 'members'; + data.template = 'member_notifications'; + } + + postdata = $.extend( { + action: data.object + '_filter' + }, data ); + + return this.ajax( postdata, data.object ).done( function( response ) { + if ( false === response.success ) { + return; + } + + $( self.objectNavParent + ' [data-bp-scope="' + data.scope + '"]' ).removeClass( 'loading' ); + + if ( 'reset' !== data.method ) { + self.inject( data.target, response.data.contents, data.method ); + + $( data.target ).trigger( 'bp_ajax_' + data.method, $.extend( data, { response: response.data } ) ); + } else { + /* animate to top if called from bottom pagination */ + if ( data.caller === 'pag-bottom' && $( '#subnav' ).length ) { + var top = $('#subnav').parent(); + $( 'html,body' ).animate( { scrollTop: top.offset().top }, 'slow', function() { + $( data.target ).fadeOut( 100, function() { + self.inject( this, response.data.contents, data.method ); + $( this ).fadeIn( 100 ); + + // Inform other scripts the list of objects has been refreshed. + $( data.target ).trigger( 'bp_ajax_request', $.extend( data, { response: response.data } ) ); + } ); + } ); + + } else { + $( data.target ).fadeOut( 100, function() { + self.inject( this, response.data.contents, data.method ); + $( this ).fadeIn( 100 ); + + // Inform other scripts the list of objects has been refreshed. + $( data.target ).trigger( 'bp_ajax_request', $.extend( data, { response: response.data } ) ); + } ); + } + } + } ); + }, + + /** + * [initObjects description] + * @return {[type]} [description] + */ + initObjects: function() { + var self = this, objectData = {}, queryData = {}, scope = 'all', search_terms = '', extras = null, filter = null; + + $.each( this.objects, function( o, object ) { + objectData = self.getStorage( 'bp-' + object ); + + if ( undefined !== objectData.scope ) { + scope = objectData.scope; + } + + // Notifications always need to start with Newest ones + if ( undefined !== objectData.extras && 'notifications' !== object ) { + extras = objectData.extras; + } + + if ( $( '#buddypress [data-bp-filter="' + object + '"]' ).length ) { + if ( '-1' !== $( '#buddypress [data-bp-filter="' + object + '"]' ).val() && '0' !== $( '#buddypress [data-bp-filter="' + object + '"]' ).val() ) { + filter = $( '#buddypress [data-bp-filter="' + object + '"]' ).val(); + } else if ( undefined !== objectData.filter ) { + filter = objectData.filter, + $( '#buddypress [data-bp-filter="' + object + '"] option[value="' + filter + '"]' ).prop( 'selected', true ); + } + } + + if ( $( this.objectNavParent + ' [data-bp-object="' + object + '"]' ).length ) { + $( this.objectNavParent + ' [data-bp-object="' + object + '"]' ).each( function() { + $( this ).removeClass( 'selected' ); + } ); + + $( this.objectNavParent + ' [data-bp-scope="' + object + '"], #object-nav li.current' ).addClass( 'selected' ); + } + + // Check the querystring to eventually include the search terms + if ( null !== self.querystring ) { + if ( undefined !== self.querystring[ object + '_search'] ) { + search_terms = self.querystring[ object + '_search']; + } else if ( undefined !== self.querystring.s ) { + search_terms = self.querystring.s; + } + + if ( search_terms ) { + $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).val( search_terms ); + } + } + + if ( $( '#buddypress [data-bp-list="' + object + '"]' ).length ) { + queryData = { + object : object, + scope : scope, + filter : filter, + search_terms : search_terms, + extras : extras + }; + + // Populate the object list + self.objectRequest( queryData ); + } + } ); + }, + + /** + * [setHeartBeat description] + */ + setHeartBeat: function() { + if ( typeof BP_Nouveau.pulse === 'undefined' || ! this.heartbeat ) { + return; + } + + this.heartbeat.interval( Number( BP_Nouveau.pulse ) ); + + // Extend "send" with BuddyPress namespace + $.fn.extend( { + 'heartbeat-send': function() { + return this.bind( 'heartbeat-send.buddypress' ); + } + } ); + + // Extend "tick" with BuddyPress namespace + $.fn.extend( { + 'heartbeat-tick': function() { + return this.bind( 'heartbeat-tick.buddypress' ); + } + } ); + }, + + /** Event Listeners ***********************************************************/ + + /** + * [addListeners description] + */ + addListeners: function() { + // Disabled inputs + $( '[data-bp-disable-input]' ).on( 'change', this.toggleDisabledInput ); + + // HeartBeat Send and Receive + $( document ).on( 'heartbeat-send.buddypress', this.heartbeatSend ); + $( document ).on( 'heartbeat-tick.buddypress', this.heartbeatTick ); + + // Refreshing + $( this.objectNavParent + ' .bp-navs' ).on( 'click', 'a', this, this.scopeQuery ); + + // Filtering + $( '#buddypress [data-bp-filter]' ).on( 'change', this, this.filterQuery ); + + // Searching + $( '#buddypress [data-bp-search]' ).on( 'submit', 'form', this, this.searchQuery ); + $( '#buddypress [data-bp-search] form' ).on( 'search', 'input[type=search]', this.resetSearch ); + + // Buttons + $( '#buddypress [data-bp-list], #buddypress #item-header' ).on( 'click', '[data-bp-btn-action]', this, this.buttonAction ); + + // Close notice + $( '#buddypress [data-bp-close]' ).on( 'click', this, this.closeNotice ); + + // Pagination + $( '#buddypress [data-bp-list]' ).on( 'click', '[data-bp-pagination] a', this, this.paginateAction ); + }, + + /** Event Callbacks ***********************************************************/ + + /** + * [enableDisabledInput description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + 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'); + + if ( $( disabledControl ).prop( 'disabled', true ) && !$(this).hasClass('enabled') ) { + $(this).addClass('enabled').removeClass('disabled'); + $( disabledControl ).removeProp( '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' ); + } + }, + + /** + * [heartbeatSend description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + heartbeatSend: function( event, data ) { + // Add an heartbeat send event to possibly any BuddyPress pages + $( '#buddypress' ).trigger( 'bp_heartbeat_send', data ); + }, + + /** + * [heartbeatTick description] + * @param {[type]} event [description] + * @param {[type]} data [description] + * @return {[type]} [description] + */ + heartbeatTick: function( event, data ) { + // Add an heartbeat send event to possibly any BuddyPress pages + $( '#buddypress' ).trigger( 'bp_heartbeat_tick', data ); + }, + + /** + * [queryScope description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + scopeQuery: function( event ) { + var self = event.data, target = $( event.currentTarget ).parent(), + scope = 'all', object, filter = null, search_terms = ''; + + if ( target.hasClass( 'no-ajax' ) || $( event.currentTarget ).hasClass( 'no-ajax' ) || ! target.attr( 'data-bp-scope' ) ) { + return event; + } + + scope = target.data( 'bp-scope' ); + object = target.data( 'bp-object' ); + + if ( ! scope || ! object ) { + return event; + } + + // Stop event propagation + event.preventDefault(); + + filter = $( '#buddypress' ).find( '[data-bp-filter="' + object + '"]' ).first().val(); + + if ( $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).length ) { + search_terms = $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).val(); + } + + // Remove the New count on dynamic tabs + if ( target.hasClass( 'dynamic' ) ) { + target.find( 'a span' ).html(''); + } + + self.objectRequest( { + object : object, + scope : scope, + filter : filter, + search_terms : search_terms, + page : 1 + } ); + }, + + /** + * [filterQuery description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + filterQuery: function( event ) { + var self = event.data, object = $( event.target ).data( 'bp-filter' ), + scope = 'all', filter = $( event.target ).val(), + search_terms = '', template = null; + + if ( ! object ) { + return event; + } + + if ( $( self.objectNavParent + ' [data-bp-object].selected' ).length ) { + scope = $( self.objectNavParent + ' [data-bp-object].selected' ).data( 'bp-scope' ); + } + + if ( $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).length ) { + search_terms = $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).val(); + } + + if ( 'friends' === object ) { + object = 'members'; + } + + self.objectRequest( { + object : object, + scope : scope, + filter : filter, + search_terms : search_terms, + page : 1, + template : template + } ); + }, + + /** + * [searchQuery description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + searchQuery: function( event ) { + var self = event.data, object, scope = 'all', filter = null, template = null, search_terms = ''; + + if ( $( event.delegateTarget ).hasClass( 'no-ajax' ) || undefined === $( event.delegateTarget ).data( 'bp-search' ) ) { + return event; + } + + // Stop event propagation + event.preventDefault(); + + object = $( event.delegateTarget ).data( 'bp-search' ); + filter = $( '#buddypress' ).find( '[data-bp-filter="' + object + '"]' ).first().val(); + search_terms = $( event.delegateTarget ).find( 'input[type=search]' ).first().val(); + + if ( $( self.objectNavParent + ' [data-bp-object]' ).length ) { + scope = $( self.objectNavParent + ' [data-bp-object="' + object + '"].selected' ).data( 'bp-scope' ); + } + + self.objectRequest( { + object : object, + scope : scope, + filter : filter, + search_terms : search_terms, + page : 1, + template : template + } ); + }, + + /** + * [showSearchSubmit description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + showSearchSubmit: function( event ) { + $( event.delegateTarget ).find( '[type=submit]' ).addClass( 'bp-show' ); + if( $('[type=submit]').hasClass( 'bp-hide' ) ) { + $( '[type=submit]' ).removeClass( 'bp-hide' ); + } + }, + + /** + * [resetSearch description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + resetSearch: function( event ) { + if ( ! $( event.target ).val() ) { + $( event.delegateTarget ).submit(); + } else { + $( event.delegateTarget ).find( '[type=submit]' ).show(); + } + }, + + /** + * [buttonAction description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + buttonAction: function( event ) { + var self = event.data, target = $( event.currentTarget ), action = target.data( 'bp-btn-action' ), nonceUrl = target.data( 'bp-nonce' ), + item = target.closest( '[data-bp-item-id]' ), item_id = item.data( 'bp-item-id' ), item_inner = target.closest('.list-wrap'), + object = item.data( 'bp-item-component' ), nonce = ''; + + // Simply let the event fire if we don't have needed values + if ( ! action || ! item_id || ! object ) { + return event; + } + + // Stop event propagation + event.preventDefault(); + + if ( ( undefined !== BP_Nouveau[ action + '_confirm'] && false === window.confirm( BP_Nouveau[ action + '_confirm'] ) ) || target.hasClass( 'pending' ) ) { + return false; + } + + // Find the required wpnonce string. + // if button element set we'll have our nonce set on a data attr + // Check the value & if exists split the string to obtain the nonce string + // if no value, i.e false, null then the href attr is used. + if ( nonceUrl ) { + nonce = nonceUrl.split('?_wpnonce='); + nonce = nonce[1]; + } else { + nonce = self.getLinkParams( target.prop( 'href' ), '_wpnonce' ); + } + + // Unfortunately unlike groups + // Friends actions does not match the wpnonce + var friends_actions_map = { + is_friend : 'remove_friend', + not_friends : 'add_friend', + pending : 'withdraw_friendship', + accept_friendship : 'accept_friendship', + reject_friendship : 'reject_friendship' + }; + + if ( 'members' === object && undefined !== friends_actions_map[ action ] ) { + action = friends_actions_map[ action ]; + object = 'friends'; + } + + // Add a pending class to prevent queries while we're processing the action + target.addClass( 'pending loading' ); + + self.ajax( { + action : object + '_' + action, + item_id : item_id, + _wpnonce : nonce + }, object ).done( function( response ) { + if ( false === response.success ) { + item_inner.prepend( response.data.feedback ); + target.removeClass( 'pending loading' ); + item.find( '.bp-feedback' ).fadeOut( 6000 ); + } else { + // Specific cases for groups + if ( 'groups' === object ) { + + // Group's header button + if ( undefined !== response.data.is_group && response.data.is_group ) { + return window.location.reload(); + } + } + + // User's groups invitations screen & User's friend screens + if ( undefined !== response.data.is_user && response.data.is_user ) { + target.parent().html( response.data.feedback ); + item.fadeOut( 1500 ); + return; + } + + // Update count + if ( $( self.objectNavParent + ' [data-bp-scope="personal"]' ).length ) { + var personal_count = Number( $( self.objectNavParent + ' [data-bp-scope="personal"] span' ).html() ) || 0; + + if ( -1 !== $.inArray( action, ['leave_group', 'remove_friend'] ) ) { + personal_count -= 1; + } else if ( -1 !== $.inArray( action, ['join_group'] ) ) { + personal_count += 1; + } + + if ( personal_count < 0 ) { + personal_count = 0; + } + + $( self.objectNavParent + ' [data-bp-scope="personal"] span' ).html( personal_count ); + } + + target.parent().replaceWith( response.data.contents ); + } + } ); + }, + + /** + * [closeNotice description] + * @param {[type]} event [description] + * @return {[type]} [description] + */ + closeNotice: function( event ) { + var closeBtn = $( event.currentTarget ); + + event.preventDefault(); + + // Make sure cookies are removed + if ( 'clear' === closeBtn.data( 'bp-close' ) ) { + if ( undefined !== $.cookie( 'bp-message' ) ) { + $.removeCookie( 'bp-message' ); + } + + if ( undefined !== $.cookie( 'bp-message-type' ) ) { + $.removeCookie( 'bp-message-type' ); + } + } + + // @todo other cases... + // Dismissing site-wide notices. + if ( closeBtn.closest( '.bp-feedback' ).hasClass( 'bp-sitewide-notice' ) ) { + bp.Nouveau.ajax( { + action : 'messages_dismiss_sitewide_notice' + }, 'messages' ); + } + + // Remove the notice + closeBtn.closest( '.bp-feedback' ).remove(); + }, + + paginateAction: function( event ) { + var self = event.data, navLink = $( event.currentTarget ), pagArg, + scope = null, object, objectData, filter = null, search_terms = null, extras = null; + + pagArg = navLink.closest( '[data-bp-pagination]' ).data( 'bp-pagination' ) || null; + + if ( null === pagArg ) { + return event; + } + + event.preventDefault(); + + object = $( event.delegateTarget ).data( 'bp-list' ) || null; + + // Set the scope & filter + if ( null !== object ) { + objectData = self.getStorage( 'bp-' + object ); + + if ( undefined !== objectData.scope ) { + scope = objectData.scope; + } + + if ( undefined !== objectData.filter ) { + filter = objectData.filter; + } + + if ( undefined !== objectData.extras ) { + extras = objectData.extras; + } + } + + // Set the search terms + if ( $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).length ) { + search_terms = $( '#buddypress [data-bp-search="' + object + '"] input[type=search]' ).val(); + } + + var queryData = { + object : object, + scope : scope, + filter : filter, + search_terms : search_terms, + extras : extras, + page : self.getLinkParams( navLink.prop( 'href' ), pagArg ) || 1 + }; + + // Request the page + self.objectRequest( queryData ); + } + }; + + // Launch BP Nouveau + bp.Nouveau.start(); + +} )( bp, jQuery ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..63600d02b29bee8fd8d3b542cf7b00684043309f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-nouveau.min.js @@ -0,0 +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},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 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||"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),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),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&&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()),"friends"===s&&(s="members"),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 diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.js new file mode 100644 index 0000000000000000000000000000000000000000..493faa9769b5583a92f00fb74a256a6abec7786a --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.js @@ -0,0 +1,79 @@ +/* global bp, BP_Nouveau */ +/* @version 3.0.0 */ +window.bp = window.bp || {}; + +( function( exports, $ ) { + + // Bail if not set + if ( typeof BP_Nouveau === 'undefined' ) { + return; + } + + /** + * This an ugly copy from Legacy's buddypress.js for now + * + * This really needs to be improved ! + */ + + /** Profile Visibility Settings *********************************/ + + // Initially hide the 'field-visibility-settings' block + $( '.field-visibility-settings' ).addClass( 'bp-hide' ); + // Add initial aria state to button + $( '.visibility-toggle-link' ).attr( 'aria-expanded', 'false' ); + + $( '.visibility-toggle-link' ).on( 'click', function( event ) { + event.preventDefault(); + + $( this ).attr('aria-expanded', 'true'); + + $( this ).parent().addClass( 'field-visibility-settings-hide bp-hide' ) + + .siblings( '.field-visibility-settings' ).removeClass( 'bp-hide' ).addClass( 'field-visibility-settings-open' ); + } ); + + $( '.field-visibility-settings-close' ).on( 'click', function( event ) { + event.preventDefault(); + + var settings_div = $( this ).parent(), + vis_setting_text = settings_div.find( 'input:checked' ).parent().text(); + + settings_div.removeClass( 'field-visibility-settings-open' ).addClass( 'bp-hide' ) + .siblings( '.field-visibility-settings-toggle' ) + .children( '.current-visibility-level' ).text( vis_setting_text ).end() + .addClass( 'bp-show' ).removeClass( 'field-visibility-settings-hide bp-hide' ); + $( '.visibility-toggle-link').attr( 'aria-expanded', 'false' ); + } ); + + $( '#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 shouldconfirm = true; + + $( '#profile-edit-form input:submit, #signup_form input:submit' ).on( 'click', function() { + shouldconfirm = false; + } ); + + window.onbeforeunload = function() { + if ( shouldconfirm ) { + return BP_Nouveau.unsaved_changes; + } + }; + } ); + + window.clear = function( container ) { + if ( ! container ) { + return; + } + + container = container.replace( '[', '\\[' ).replace( ']', '\\]' ); + + if ( $( '#' + container + ' option' ).length ) { + $.each( $( '#' + container + ' option' ), function( c, option ) { + $( option ).prop( 'selected', false ); + } ); + } else if ( $( '#' + container + ' [type=radio]' ).length ) { + $.each( $( '#' + container + ' [type=radio]' ), function( c, checkbox ) { + $( checkbox ).prop( 'checked', false ); + } ); + } + }; +} )( bp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3f742956fc667511be9e52b5ea036ad11f1dd490 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/buddypress-xprofile.min.js @@ -0,0 +1 @@ +window.bp=window.bp||{},function(i,e){"undefined"!=typeof BP_Nouveau&&(e(".field-visibility-settings").addClass("bp-hide"),e(".visibility-toggle-link").attr("aria-expanded","false"),e(".visibility-toggle-link").on("click",function(i){i.preventDefault(),e(this).attr("aria-expanded","true"),e(this).parent().addClass("field-visibility-settings-hide bp-hide").siblings(".field-visibility-settings").removeClass("bp-hide").addClass("field-visibility-settings-open")}),e(".field-visibility-settings-close").on("click",function(i){i.preventDefault();var t=e(this).parent(),n=t.find("input:checked").parent().text();t.removeClass("field-visibility-settings-open").addClass("bp-hide").siblings(".field-visibility-settings-toggle").children(".current-visibility-level").text(n).end().addClass("bp-show").removeClass("field-visibility-settings-hide bp-hide"),e(".visibility-toggle-link").attr("aria-expanded","false")}),e("#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 i=!0;e("#profile-edit-form input:submit, #signup_form input:submit").on("click",function(){i=!1}),window.onbeforeunload=function(){if(i)return BP_Nouveau.unsaved_changes}}),window.clear=function(i){i&&(i=i.replace("[","\\[").replace("]","\\]"),e("#"+i+" option").length?e.each(e("#"+i+" option"),function(i,t){e(t).prop("selected",!1)}):e("#"+i+" [type=radio]").length&&e.each(e("#"+i+" [type=radio]"),function(i,t){e(t).prop("checked",!1)}))})}(bp,jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.js new file mode 100644 index 0000000000000000000000000000000000000000..f58739f7e9174507c408ed0fa531c388f8c624bf --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.js @@ -0,0 +1,65 @@ +/* global _ */ +/* @version 3.0.0 */ +window.wp = window.wp || {}; + +( function( wp, $ ) { + + if ( undefined === typeof wp.customizer ) { + return; + } + + $( document ).ready( function() { + + // If the Main Group setting is disabled, hide all others + $( wp.customize.control( 'group_front_page' ).selector ).on( 'click', 'input[type=checkbox]', function( event ) { + var checked = $( event.currentTarget ).prop( 'checked' ), controller = $( event.delegateTarget ).prop( 'id' ); + + _.each( wp.customize.section( 'bp_nouveau_group_front_page' ).controls(), function( control ) { + if ( control.selector !== '#' + controller ) { + if ( true === checked ) { + $( control.selector ).show(); + } else { + $( control.selector ).hide(); + } + } + } ); + } ); + + // If the Main User setting is disabled, hide all others + $( wp.customize.control( 'user_front_page' ).selector ).on( 'click', 'input[type=checkbox]', function( event ) { + var checked = $( event.currentTarget ).prop( 'checked' ), controller = $( event.delegateTarget ).prop( 'id' ); + + _.each( wp.customize.section( 'bp_nouveau_user_front_page' ).controls(), function( control ) { + if ( control.selector !== '#' + controller ) { + if ( true === checked ) { + $( control.selector ).show(); + } else { + $( control.selector ).hide(); + } + } + } ); + } ); + + $( 'ul#customize-control-group_nav_order, ul#customize-control-user_nav_order' ).sortable( { + cursor : 'move', + axis : 'y', + opacity : 1, + items : 'li:not(.ui-sortable-disabled)', + tolerance : 'intersect', + + update: function() { + var order = []; + + $( this ).find( '[data-bp-nav]' ).each( function( s, slug ) { + order.push( $( slug ).data( 'bp-nav' ) ); + } ); + + if ( order.length ) { + $( '#bp_item_' + $( this ).data( 'bp-type' ) ).val( order.join() ).trigger( 'change' ); + } + } + } ).disableSelection(); + + } ); + +} )( window.wp, jQuery ); diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.min.js b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d24dd7a06993d25ba8ac11737283999b09910e30 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/customizer.min.js @@ -0,0 +1 @@ +window.wp=window.wp||{},function(e,o){void 0!==typeof e.customizer&&o(document).ready(function(){o(e.customize.control("group_front_page").selector).on("click","input[type=checkbox]",function(t){var c=o(t.currentTarget).prop("checked"),r=o(t.delegateTarget).prop("id");_.each(e.customize.section("bp_nouveau_group_front_page").controls(),function(e){e.selector!=="#"+r&&(!0===c?o(e.selector).show():o(e.selector).hide())})}),o(e.customize.control("user_front_page").selector).on("click","input[type=checkbox]",function(t){var c=o(t.currentTarget).prop("checked"),r=o(t.delegateTarget).prop("id");_.each(e.customize.section("bp_nouveau_user_front_page").controls(),function(e){e.selector!=="#"+r&&(!0===c?o(e.selector).show():o(e.selector).hide())})}),o("ul#customize-control-group_nav_order, ul#customize-control-user_nav_order").sortable({cursor:"move",axis:"y",opacity:1,items:"li:not(.ui-sortable-disabled)",tolerance:"intersect",update:function(){var e=[];o(this).find("[data-bp-nav]").each(function(t,c){e.push(o(c).data("bp-nav"))}),e.length&&o("#bp_item_"+o(this).data("bp-type")).val(e.join()).trigger("change")}}).disableSelection()})}(window.wp,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 new file mode 100644 index 0000000000000000000000000000000000000000..6fd6045019fd3b370a5072e4be6a69f8b0f96602 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.js @@ -0,0 +1,45 @@ +/* jshint undef: false */ +/* Password Verify */ +/* global pwsL10n */ +/* @version 3.0.0 */ +( function( $ ){ + function check_pass_strength() { + var pass1 = $( '.password-entry' ).val(), + pass2 = $( '.password-entry-confirm' ).val(), + strength; + + // Reset classes and result text + $( '#pass-strength-result' ).removeClass( 'show mismatch short bad good strong' ); + if ( ! pass1 ) { + $( '#pass-strength-result' ).html( pwsL10n.empty ); + return; + } + + strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass2 ); + + switch ( strength ) { + case 2: + $( '#pass-strength-result' ).addClass( 'show bad' ).html( pwsL10n.bad ); + break; + case 3: + $( '#pass-strength-result' ).addClass( 'show good' ).html( pwsL10n.good ); + break; + case 4: + $( '#pass-strength-result' ).addClass( 'show strong' ).html( pwsL10n.strong ); + break; + case 5: + $( '#pass-strength-result' ).addClass( 'show mismatch' ).html( pwsL10n.mismatch ); + break; + default: + $( '#pass-strength-result' ).addClass( 'show short' ).html( pwsL10n['short'] ); + break; + } + } + + // Bind check_pass_strength to keyup events in the password fields + $( document ).ready( function() { + $( '.password-entry' ).val( '' ).keyup( check_pass_strength ); + $( '.password-entry-confirm' ).val( '' ).keyup( check_pass_strength ); + } ); + +} )( jQuery ); 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 new file mode 100644 index 0000000000000000000000000000000000000000..bf676912adcb71e6dd8141d7832960d446f57a6f --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/js/password-verify.min.js @@ -0,0 +1 @@ +!function(s){function t(){var t=s(".password-entry").val(),a=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(),a)){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)})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_invites.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_invites.scss new file mode 100644 index 0000000000000000000000000000000000000000..f6663a49bb8bcfdc5fc743c08aa20e1976f08778 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_invites.scss @@ -0,0 +1,180 @@ +/* + * bp-nouveau styling: invite members, sent invites + * @version 3.0.0 + */ +.buddypress { + + .bp-invites-content { + + ul.item-list { + border-top: 0; + + li { + border: 1px solid $light-grey; + margin: 0 0 1%; + padding-left: 5px; + padding-right: 5px; + position: relative; + width: auto; + + .list-title { + margin: 0 auto; + width: 80%; + } + + .action { + position: absolute; + top: 10px; + right: 10px; + + a.button.invite-button { + border: 0; + + &:focus, + &:hover { + color: #1fb3dd; + } + } + } + + } // close li + + li.selected { + + @include box-shadow(inset 0 0 12px 0 rgba($golden, 0.2) ); + } + + } // close ul + + .item-list .item-meta span, + .group-inviters li { + color: $light-text; + } + + li { + + ul.group-inviters { + clear: both; + margin: 0; + overflow: hidden; + + li { + border: 0; + float: left; + + @include font-size(20) ; + width: inherit; + } + } // close .group-inviters + + .status { + + @include font-size(20); + font-style: italic; + clear: both; + color: $bp-text; + margin: $marg-sml 0; + } + + } // close li + + @include clearfix-element("#send-invites-editor ul"); + + #send-invites-editor { + + textarea { + width: 100%; + } + + ul { + clear: both; + list-style: none; + margin: $marg-sml 0; + + li { + float: left; + margin: 0.5%; + max-height: 50px; + max-width: 50px; + } + } // ul + + #bp-send-invites-form { + clear: both; + margin-top: $marg-sml; + } + + .action { + margin-top: $marg-sml; + padding-top: 10px; + } + + } // close #send-invites-editor + + #send-invites-editor.bp-hide { + display: none; + } + + @include medium-up() { + + ul.item-list { + + > li { + + @include box-model(); + border: 1px solid #eaeaea; + float: left; + padding-left: $pad-sml; + padding-right: $pad-sml; + width: 49.5%; + + &:nth-child(odd) { + margin-right: 0.5%; + } + + &:nth-child(even) { + margin-left: 0.5%; + } + } // close li + + ul.group-inviters { + float: left; + width: auto; + } + + } // ul + + } // close @media + + } // close bp-invites-content +} + +@include medium-up() { + + :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"; + + .bp-invites-nav { + -ms-grid-row: 1; + -ms-grid-column: 1; + grid-area: group-invites-nav; + + li { + display: block; + float: none; + } + } + + .group-invites-column { + -ms-grid-row: 1; + -ms-grid-column: 2; + grid-area: group-invites-column; + } + } +} + diff --git a/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_messages.scss b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_messages.scss new file mode 100644 index 0000000000000000000000000000000000000000..6544227c6466c7ea6eb730da0171ca4412aac4d3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/_nouveau_messages.scss @@ -0,0 +1,409 @@ +// Nouveau Messages styles. +// @version 3.0.0 +// Icon additions to default action star + + +.message-action-star:before, +.message-action-unstar:before, +.message-action-view:before, +.message-action-delete: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; + } + } +} + +// Visual message threads & preview pane styles + +.bp-messages-content { + margin: $marg-med 0; + + .avatar { + + @include box-shadow-none(); + } + + .thread-participants { + list-style: none; + + dd { + margin-left: 0; + } + } + + time { + color: $meta-text; + + @include font-size(12); + } +} + +// The actual messages list +#message-threads { + border-top: 1px solid $light-grey; + clear: both; + list-style: none; + margin: 0; + max-height: 220px; + overflow-x: hidden; + overflow-y: auto; + padding: 0; + width: 100%; + + // The primary list elements + li { + border-bottom: 1px solid $light-grey; + + @include flex-box-dir(); + margin: 0; + overflow: hidden; + padding: $pad-sml 0; + + // the child items + .thread-cb { + + @include center-vert(); + @include box-item-size(1, 2, 5%); + } + + .thread-from, + .thread-to { + + @include box-item-size(1, 2, 20%); + + img.avatar { + float: left; + margin: 0 $marg-sml 0 0; + } + + .user-name { + display: inline-block; + line-height: 1.1; + } + + .num-recipients { + color: $meta-text; + font-weight: 400; + + @include font-size(12); + margin: 0; + } + } + + .thread-content { + + @include box-item-size(1, 2, 60%); + } + + .thread-date { + + @include box-item-size(1, 2, 15%); + } + + // the selected parent li elements & message details + &.selected { + background-color: $off-white; + + .thread-subject { + + .subject { + color: $blue; + } + } + } + + // the unread parent li + &.unread { + font-weight: 700; + } + + .thread-content { + + .excerpt { + color: $meta-text; + + @include font-size(12); + margin: 0; + } + + .thread-from, + .thread-to, + .thread-subject { + + @include responsive-font(16); + } + + .thread-subject { + vertical-align: top; + + .excerpt { + font-weight: 400; + } + + } + } // close thread-content + + .thread-date { + padding-right: 5px; + text-align: right; + } + + } // close li + +} // close message-threads + +.bp-messages-content { + + .actions { + float: right; + max-width: 30%; + + .bp-icons:not(.bp-hide) { + display: inline-block; + margin: 0; + padding: $pad-xsml $pad-sml; + + &:before { + + @include font-size(26); + } + } + } + + // preview pane on main inbox view all message entries + #thread-preview { + border: 1px solid $light-grey; + margin-top: $marg-lrg; + + .preview-message { + overflow: hidden; + } + + .preview-content { + margin: 0.5em; + + .preview-message { + background: $off-white; + margin: $marg-sml 0; + padding: $pad-med $pad-xsml $pad-xsml; + } + + } // close .preview-content + + } // close .thread-preview + + // The single view of messages in a conversation thread + #bp-message-thread-list { + border-top: 1px solid $light-grey; + clear: both; + list-style: none; + padding: $pad-med 0 $pad-xsml; + + li { + padding: $pad-sml; + } + + li:nth-child(2n) { + + .message-content { + background: $off-white; + } + } + + .message-metadata { + border-bottom: 1px solid $bp-border-dark; + + @include box-shadow(-2px 1px 9px 0 #eee); + display: table; + padding: 0.2em; + width: 100%; + + .avatar { + width: 30px; + } + + .user-link { + display: block; + + @include responsive-font(16); + float: left; + } + + time { + color: $meta-text; + + @include font-size(12); + padding: 0 $pad-sml; + } + + button { + padding: 0 $pad-xsml; + } + + button:before { + + @include font-size(20); + } + } + + .message-content { + overflow: hidden; + margin: 1em auto 0; + width: 90%; + } + + img.avatar { + float: left; + margin: 0 $marg-sml 0 0; + } + + .actions { + + a:before { + font-size: 18px; + } + } + } // close #bp-message-thread-list + + form.send-reply { + + .avatar-box { + padding: $pad-sml 0; + } + } + + // Grouped rules for both inbox all messages lists & + // for single view conversation thread + + .preview-pane-header, + .single-message-thread-header { + border-bottom: 1px solid $light-grey; + + &:after { + clear: both; + content: ""; + display: table; + } + } + + .preview-thread-title, + .single-thread-title { + + @include font-size(16); + + .messages-title { + padding-left: $pad-lrg; + } + } + + .thread-participants { + float: left; + margin: $marg-xsml 0; + width: 70%; + + dd, + ul { + margin-bottom: $marg-sml; + } + + ul { + list-style: none; + + &:after { + + clear: both; + content: ""; + display: table; + } + } + + li { + float: left; + margin-left: 5px; + } + + img { + width: 30px; + } + } + + #thread-preview .preview-message, + #bp-message-thread-list li .message-content { + + ul, + ol, + blockquote { + list-style-position: inside; + margin-left: 0; + } + } + + ul#message-threads:empty, + #thread-preview:empty { + display: none; + } + + #thread-preview h2:first-child, + #bp-message-thread-header h2:first-child { + background-color: $light-grey; + color: $bp-text; + font-weight: 700; + margin: 0; + padding: 0.5em; + } + + #message-threads .thread-content a, + #bp-message-thread-list li a.user-link { + border: 0; + text-decoration: none; + } + + // The general form elements for composing messages + .standard-form { + + #subject { + margin-bottom: $marg-lrg; + } + } + +} // close .bp-messages-content + +// Bulk Message styles + +div.bp-navs#subsubnav.bp-messages-filters { + + .user-messages-bulk-actions { + margin-right: 15px; + max-width: 42.5%; + } +} 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 new file mode 100644 index 0000000000000000000000000000000000000000..49e060d094926bf3d74d41a337facb782a26aaf2 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-templates/bp-nouveau/sass/buddypress.scss @@ -0,0 +1,444 @@ +// +// +// Buddypress scss primary scss stylesheet +// +// +// This file compiles to buddypress.css. +// +// Imported into this file are the building block partial files +// that form the base level styles plus any files from the new +// theme/template pack. + + +// Import our partials mixins & variables files + +@import "../common-styles/_bp-variables"; +@import "../common-styles/_bp-mixins"; + + +// Sectional structuring allows us to locate elements +// & to keep a degree of clarity in mind as to BP +// components. Please note that sections do NOT have to +// be used, default modular styles imported may provide +// all the rules needed for the section. +// + +/*-------------------------------------------------------------- +Hello, this is the BuddyPress Nouveau stylesheet. + +@version 3.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 +*------------------------------------------------------------------------------- +*/ + +// Import our generic elements & typography styles + +@import "../common-styles/_bp_generic_and_typography"; + +/** +*------------------------------------------------------------------------------- +* @section 2.0 - Navigation - General +*------------------------------------------------------------------------------- +*/ + + +/** +*---------------------------------------------------------- +* @section 2.1 - Navs Object Nav / Sub Nav (bp-list) +* +* The main navigational elements for all BP screens +*---------------------------------------------------------- +*/ + +// Import our generic navigation styles + +@import "../common-styles/_bp_navigation"; + +// Import our Filter styles + +@import "../common-styles/_bp_filters"; + +/** +*---------------------------------------------------------- +* @section 2.2 - Pagination +*---------------------------------------------------------- +*/ + +// Import our generic pagination styles + +@import "../common-styles/_bp_pagination"; + +/** +*------------------------------------------------------------------------------- +* @section 3.0 - BP Lists / Loops Generic +*------------------------------------------------------------------------------- +*/ + +// Import our generic list styles + +@import "../common-styles/_bp_lists"; + +/** +*---------------------------------------------------------- +* @section 3.1 - Activity Loop +*---------------------------------------------------------- +*/ + +/** +*----------------------------------------------------- +* @section 3.1.1 - Activity Whats New +*----------------------------------------------------- +*/ + +@import "../common-styles/_bp_update_form"; + +/** +*----------------------------------------------------- +* @section 3.1.2 - Activity Entries +*----------------------------------------------------- +*/ + +@import "../common-styles/_bp_activity_entries"; + +/** +*----------------------------------------------------- +* @section 3.1.3 - Activity Comments +*----------------------------------------------------- +*/ + +@import "../common-styles/_bp_activity_comments"; +@import "../common-styles/_bp_comment_form"; + +/** +*---------------------------------------------------------- +* @section 3.2 - Blogs Loop +*---------------------------------------------------------- +*/ + +// Blogs loop + +@import "../common-styles/_bp_blogs_loop"; + +/** +*---------------------------------------------------------- +* @section 3.2 - Groups Loop +*---------------------------------------------------------- +*/ + +// Groups loop + +@import "../common-styles/_bp_groups_loop"; + + +/** +*---------------------------------------------------------- +* @section 3.2 - Members Loop +*---------------------------------------------------------- +*/ + +// Members loop + +@import "../common-styles/_bp_members_loop"; + +/** +*------------------------------------------------------------------------------- +* @section 4.0 - Directories +*------------------------------------------------------------------------------- +*/ + +// Registration index screen (directory) + +@import "../common-styles/_bp_registration.scss"; + +/** +*---------------------------------------------------------- +* @section 4.1 - Groups Creation Steps +*---------------------------------------------------------- +*/ + +// Registration index screen (directory) + +@import "../common-styles/_bp_groups_create.scss"; + +/** +*------------------------------------------------------------------------------- +* @section 5.0 - Single Item screens: Groups, Users +*------------------------------------------------------------------------------- +*/ + +/** +*----------------------------------------------------------- +* @subsection 5.1 - Item Header Global +*----------------------------------------------------------- +*/ + +// Import general global styles for single screen headers + +@import "../common-styles/_bp_item_header_general"; + +// Import Cover Image container defaults + +@import "../common-styles/_bp_cover_image"; + +/** +*----------------------------------------------------- +* @subsection 5.1.1 - item-header Groups +* +* Group Specific Item Header +*----------------------------------------------------- +*/ + +// Single Group specific header rules + +@import "../common-styles/_bp_group_header"; + +/** +*----------------------------------------------------- +* @subsection 5.1.2 - Item Header User Accounts +* +* User Accounts Specific Item Header +*----------------------------------------------------- +*/ + +// Single User specific header rules + +@import "../common-styles/_bp_user_header"; + +/** +*----------------------------------------------------------- +* @subsection 5.2 - Item Body: Global +*----------------------------------------------------------- +*/ + +// Import general global styles for single screen item-body + +@import "../common-styles/_bp_item_body_general"; + +/** +*---------------------------------------------------- +* @subsection 5.2.1 - Item Body Groups +* +* Groups specific item body rules - screens +*---------------------------------------------------- +*/ + +// Import general global styles for single screen item-body + +@import "../common-styles/_bp_groups_item_body"; + +/** +*----------------------------------------- +* @subsection 5.2.1.1 - Management Settings Screens +*----------------------------------------- +*/ + +// Import general global styles for single screen item-body + +@import "../common-styles/_bp_groups_management"; + +/** +*----------------------------------------- +* @subsection 5.2.1.2 - Group Members List +*----------------------------------------- +*/ + +/* +*----------------------------------------- +* @subsection 5.2.1.3 - Group Invites List +*----------------------------------------- +*/ + +// Import Group Invites screens + +//@import "../common-styles/_bp_groups_invites"; + +// Import Nouveau style Group Invites screens + +@import "_nouveau_invites"; + +/* +*----------------------------------------- +* @subsection 5.2.1.4 - Group Activity +*----------------------------------------- +*/ + +@import "../common-styles/_bp_groups_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 +*------------------------------------------- +*/ + +// Import User Profile + +@import "../common-styles/_bp_user_profile"; + +/** +*------------------------------------------- +* @subsection 5.2.2.3 - Groups +*------------------------------------------- +*/ + +/** +*------------------------------------------- +* @subsection 5.2.2.5 - Private Messaging +*------------------------------------------- +*/ + +// Import Messages module +// Nouveau is using custom markup and only needs to load +// it's own partial file for styles. + +// @import "../common-styles/_bp_messages"; + +// Import Nouveau specific Messages module styles + +@import "_nouveau_messages"; + +/** +*------------------------------------------ +* @subsection 5.2.2.6 - Settings +*------------------------------------------ +*/ + +// Import settings screens + +@import "../common-styles/_bp_user_settings"; + +/** +*------------------------------------------------------------------------------- +* @section 6.0 - Forms - General +*------------------------------------------------------------------------------- +*/ + +// Import general forms rules + +@import "../common-styles/_bp_forms"; + + +/** +*---------------------------------------------------------- +* @section 6.1 - Directory Search +* +* The Search form & controls in directory pages +*---------------------------------------------------------- +*/ + +// Import our generic list styles + +@import "../common-styles/_bp_search"; + +/** +*------------------------------------------------------------------------------- +* @section 7.0 - Tables - General +*------------------------------------------------------------------------------- +*/ + +// Import Table defaults rules + +@import "../common-styles/_bp_tables"; + +/** +*------------------------------------------------------------------------------- +* @section 8.0 - Classes - Messages, Ajax, Widgets, Buttons +*------------------------------------------------------------------------------- +*/ +// Import General useful classes: clearfix, screen-reader etc + +@import "../common-styles/_bp_general_classes"; + +// Import Buttons styles + +@import "../common-styles/_bp_buttons"; + +// Import Messages/info dialogues + +@import "../common-styles/_bp_info_messages"; + +// Import BP Widget styles + +@import "../common-styles/_bp_widgets"; + +// Import BP Animations & Transitions - fluffy effects :) + +@import "../common-styles/_bp_animations"; + +// Import BP Tooltips + +@import "../common-styles/_bp_tooltips"; + +/** +*------------------------------------------------------------------------------- +* @section 9.0 - Layout classes +*------------------------------------------------------------------------------- +*/ +// Import Layout classes + +@import "../common-styles/_bp_layouts"; + diff --git a/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php index 8d48cefb0ec996833ccd5203e70e2ce0f9c8310c..d99dae13471783e61667e5f9ff72127ad6fda020 100644 --- a/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php +++ b/wp-content/plugins/buddypress/bp-themes/bp-default/registration/activate.php @@ -29,10 +29,10 @@ <p><?php _e( 'Please provide a valid activation key.', 'buddypress' ); ?></p> - <form action="" method="get" class="standard-form" id="activation-form"> + <form action="" method="post" class="standard-form" id="activation-form"> <label for="key"><?php _e( 'Activation Key:', 'buddypress' ); ?></label> - <input type="text" name="key" id="key" value="" /> + <input type="text" name="key" id="key" value="<?php echo esc_attr( bp_get_current_activation_key() ); ?>" /> <p class="submit"> <input type="submit" name="submit" value="<?php esc_attr_e( 'Activate', 'buddypress' ); ?>" /> diff --git a/wp-content/plugins/buddypress/bp-xprofile/actions/delete-avatar.php b/wp-content/plugins/buddypress/bp-xprofile/actions/delete-avatar.php new file mode 100644 index 0000000000000000000000000000000000000000..719421b5221caa0735690e5b25f039c2438819d6 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/actions/delete-avatar.php @@ -0,0 +1,40 @@ +<?php +/** + * XProfile: Avatar deletion action handler + * + * @package BuddyPress + * @subpackage XProfileActions + * @since 3.0.0 + */ + +/** + * This function runs when an action is set for a screen: + * example.com/members/andy/profile/change-avatar/ [delete-avatar] + * + * The function will delete the active avatar for a user. + * + * @since 1.0.0 + * + */ +function xprofile_action_delete_avatar() { + + if ( ! bp_is_user_change_avatar() || ! bp_is_action_variable( 'delete-avatar', 0 ) ) { + return false; + } + + // Check the nonce. + check_admin_referer( 'bp_delete_avatar_link' ); + + if ( ! bp_is_my_profile() && ! bp_current_user_can( 'bp_moderate' ) ) { + return false; + } + + if ( bp_core_delete_existing_avatar( array( 'item_id' => bp_displayed_user_id() ) ) ) { + bp_core_add_message( __( 'Your profile photo was deleted successfully!', 'buddypress' ) ); + } else { + bp_core_add_message( __( 'There was a problem deleting your profile photo. Please try again.', 'buddypress' ), 'error' ); + } + + bp_core_redirect( wp_get_referer() ); +} +add_action( 'bp_actions', 'xprofile_action_delete_avatar' ); \ No newline at end of file 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 187d20de992bc443a196cc96694c6755ee689764..e41c64266abb9a3f6ed8e9839f0c517a7bd0b311 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-admin.php @@ -124,6 +124,15 @@ function xprofile_admin( $message = '', $type = 'error' ) { */ function xprofile_admin_screen( $message = '', $type = 'error' ) { + // Users admin URL + $url = bp_get_admin_url( 'users.php' ); + + // Add Group + $add_group_url = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'add_group' + ), $url ); + // Validate type. $type = preg_replace( '|[^a-z]|i', '', $type ); @@ -133,11 +142,22 @@ 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> + + <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="users.php?page=bp-profile-setup&mode=add_group"><?php _e( 'Add New Field Group', 'buddypress' ); ?></a> - </h1> + <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; ?> <form action="" id="profile-field-form" method="post"> @@ -178,7 +198,28 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { </ul> - <?php if ( !empty( $groups ) ) : foreach ( $groups as $group ) : ?> + <?php if ( !empty( $groups ) ) : foreach ( $groups as $group ) : + + // Add Field to Group URL + $add_field_url = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'add_field', + 'group_id' => (int) $group->id + ), $url ); + + // Edit Group URL + $edit_group_url = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'edit_group', + 'group_id' => (int) $group->id + ), $url ); + + // Delete Group URL + $delete_group_url = wp_nonce_url( add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'delete_group', + 'group_id' => (int) $group->id + ), $url ), 'bp_xprofile_delete_group' ); ?> <noscript> <h3><?php @@ -190,13 +231,13 @@ function xprofile_admin_screen( $message = '', $type = 'error' ) { <div id="tabs-<?php echo esc_attr( $group->id ); ?>" class="tab-wrapper"> <div class="tab-toolbar"> <div class="tab-toolbar-left"> - <a class="button-primary" href="users.php?page=bp-profile-setup&group_id=<?php echo esc_attr( $group->id ); ?>&mode=add_field"><?php _e( 'Add New Field', 'buddypress' ); ?></a> - <a class="button edit" href="users.php?page=bp-profile-setup&mode=edit_group&group_id=<?php echo esc_attr( $group->id ); ?>"><?php _ex( 'Edit Group', 'Edit Profile Fields Group', 'buddypress' ); ?></a> + <a class="button-primary" href="<?php echo esc_url( $add_field_url ); ?>"><?php _e( 'Add New Field', 'buddypress' ); ?></a> + <a class="button edit" href="<?php echo esc_url( $edit_group_url ); ?>"><?php _ex( 'Edit Group', 'Edit Profile Fields Group', 'buddypress' ); ?></a> <?php if ( $group->can_delete ) : ?> <div class="delete-button"> - <a class="confirm submitdelete deletion ajax-option-delete" href="<?php echo esc_url( wp_nonce_url( 'users.php?page=bp-profile-setup&mode=delete_group&group_id=' . intval( $group->id ), 'bp_xprofile_delete_group' ) ); ?>"><?php _ex( 'Delete Group', 'Delete Profile Fields Group', 'buddypress' ); ?></a> + <a class="confirm submitdelete deletion ajax-option-delete" href="<?php echo esc_url( $delete_group_url ); ?>"><?php _ex( 'Delete Group', 'Delete Profile Fields Group', 'buddypress' ); ?></a> </div> <?php endif; ?> @@ -272,7 +313,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> - <p><a href="users.php?page=bp-profile-setup&mode=add_group"><?php _ex( 'Add New Group', 'Add New Profile Fields Group', 'buddypress' ); ?></a></p> + <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; ?> @@ -608,36 +649,34 @@ function xprofile_admin_field( $admin_field, $admin_group, $class = '' ) { $field = $admin_field; - $field_edit_url = add_query_arg( - array( - 'page' => 'bp-profile-setup', - 'group_id' => (int) $field->group_id, - 'field_id' => (int) $field->id, - 'mode' => 'edit_field' - ), - bp_get_admin_url( 'users.php' ) - ); + // Users admin URL + $url = bp_get_admin_url( 'users.php' ); + // Edit + $field_edit_url = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'edit_field', + 'group_id' => (int) $field->group_id, + 'field_id' => (int) $field->id + ), $url ); + + // Delete if ( $field->can_delete ) { - $field_delete_url = add_query_arg( - array( - 'page' => 'bp-profile-setup', - 'field_id' => (int) $field->id, - 'mode' => 'delete_field' - ), - bp_get_admin_url( 'users.php' ) . '#tabs-' . (int) $field->group_id - ); - } - ?> + $field_delete_url = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'delete_field', + 'field_id' => (int) $field->id + ), $url . '#tabs-' . (int) $field->group_id ); + } ?> <fieldset id="draggable_field_<?php echo esc_attr( $field->id ); ?>" class="sortable<?php echo ' ' . $field->type; if ( !empty( $class ) ) echo ' ' . $class; ?>"> <legend> <span> <?php bp_the_profile_field_name(); ?> - <?php if ( empty( $field->can_delete ) ) : ?><?php esc_html_e( '(Primary)', 'buddypress' ); endif; ?> + <?php if ( empty( $field->can_delete ) ) : ?><?php esc_html_e( '(Primary)', 'buddypress' ); endif; ?> <?php bp_the_profile_field_required_label(); ?> - <?php if ( bp_xprofile_get_meta( $field->id, 'field', 'signup_position' ) ) : ?><?php esc_html_e( '(Sign-up)', 'buddypress' ); endif; ?> + <?php if ( bp_xprofile_get_meta( $field->id, 'field', 'signup_position' ) ) : ?><?php esc_html_e( '(Sign-up)', 'buddypress' ); endif; ?> <?php if ( bp_get_member_types() ) : echo $field->get_member_type_label(); endif; ?> <?php diff --git a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php index ab5153b674e23b09f9e8a9edac290dcc2c899a1e..dc372e77be8dc81841c7ab6d694ab44f1bd55afb 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-cache.php @@ -189,35 +189,6 @@ function xprofile_clear_profile_groups_object_cache( $group_obj ) { add_action( 'xprofile_group_after_delete', 'xprofile_clear_profile_groups_object_cache' ); add_action( 'xprofile_group_after_save', 'xprofile_clear_profile_groups_object_cache' ); -/** - * Clear cached XProfile fullname data for user. - * - * @since 2.1.0 - * - * @param int $user_id ID of user whose fullname cache to delete. - */ -function xprofile_clear_profile_data_object_cache( $user_id = 0 ) { - wp_cache_delete( 'bp_user_fullname_' . $user_id, 'bp' ); -} -add_action( 'xprofile_updated_profile', 'xprofile_clear_profile_data_object_cache' ); - -/** - * Clear the fullname cache when field 1 is updated. - * - * The xprofile_clear_profile_data_object_cache() will make this redundant in most - * cases, except where the field is updated directly with xprofile_set_field_data(). - * - * @since 2.0.0 - * - * @param object $data Data object to clear. - */ -function xprofile_clear_fullname_cache_on_profile_field_edit( $data ) { - if ( 1 == $data->field_id ) { - wp_cache_delete( 'bp_user_fullname_' . $data->user_id, 'bp' ); - } -} -add_action( 'xprofile_data_after_save', 'xprofile_clear_fullname_cache_on_profile_field_edit' ); - /** * Clear caches when a field object is modified. * 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 42af57be2da3398af7e1fdc544bd0dccc69b53f6..dd3f7c567f943335c567073b758606d941698fdd 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-filters.php @@ -288,7 +288,7 @@ function xprofile_filter_format_field_value_by_field_id( $field_value, $field_id */ function xprofile_filter_pre_validate_value_by_field_type( $value, $field, $field_type_obj ) { if ( method_exists( $field_type_obj, 'pre_validate_filter' ) ) { - $value = call_user_func( array( $field_type_obj, 'pre_validate_filter' ), $value ); + $value = call_user_func( array( $field_type_obj, 'pre_validate_filter' ), $value, $field->id ); } return $value; @@ -358,11 +358,27 @@ function xprofile_filter_link_profile_data( $field_value, $field_type = 'textbox } if ( strpos( $field_value, ',' ) !== false ) { + // Comma-separated lists. $list_type = 'comma'; - $values = explode( ',', $field_value ); // Comma-separated lists. + $values = explode( ',', $field_value ); } else { - $list_type = 'semicolon'; - $values = explode( ';', $field_value ); // Semicolon-separated lists. + /* + * Semicolon-separated lists. + * + * bp_xprofile_escape_field_data() runs before this function, which often runs esc_html(). + * In turn, that encodes HTML entities in the string (";" becomes "'"). + * + * Before splitting on the ";" character, decode the HTML entities, and re-encode after. + * This prevents input like "O'Hara" rendering as "O' Hara" (with each of those parts + * having a seperate HTML link). + */ + $list_type = 'semicolon'; + $field_value = wp_specialchars_decode( $field_value, ENT_QUOTES ); + $values = explode( ';', $field_value ); + + array_walk( $values, function( &$value, $key ) use ( $field_type, $field ) { + $value = bp_xprofile_escape_field_data( $value, $field_type, $field->id ); + } ); } if ( ! empty( $values ) ) { 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 cc8fc7090e28c7c393609a7bc1d48962fff70863..3344465ecec9ce5aada850875b1ade61aa815ecc 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-functions.php @@ -158,6 +158,7 @@ function bp_xprofile_get_field_types() { 'selectbox' => 'BP_XProfile_Field_Type_Selectbox', 'textarea' => 'BP_XProfile_Field_Type_Textarea', 'textbox' => 'BP_XProfile_Field_Type_Textbox', + 'telephone' => 'BP_XProfile_Field_Type_Telephone', ); /** @@ -783,15 +784,17 @@ function bp_xprofile_bp_user_query_search( $sql, BP_User_Query $query ) { // Combine the core search (against wp_users) into a single OR clause // with the xprofile_data search. - $search_xprofile = $wpdb->prepare( - "u.{$query->uid_name} IN ( SELECT user_id FROM {$bp->profile->table_name_data} WHERE value LIKE %s OR value LIKE %s )", + $matched_user_ids = $wpdb->get_col( $wpdb->prepare( + "SELECT user_id FROM {$bp->profile->table_name_data} WHERE value LIKE %s OR value LIKE %s", $search_terms_nospace, $search_terms_space - ); + ) ); - $search_core = $sql['where']['search']; - $search_combined = "( {$search_xprofile} OR {$search_core} )"; - $sql['where']['search'] = $search_combined; + if ( ! empty( $matched_user_ids ) ) { + $search_core = $sql['where']['search']; + $search_combined = " ( u.{$query->uid_name} IN (" . implode(',', $matched_user_ids) . ") OR {$search_core} )"; + $sql['where']['search'] = $search_combined; + } return $sql; } @@ -836,9 +839,7 @@ function xprofile_sync_wp_profile( $user_id = 0 ) { bp_update_user_meta( $user_id, 'last_name', $lastname ); wp_update_user( array( 'ID' => $user_id, 'display_name' => $fullname ) ); - wp_cache_delete( 'bp_core_userdata_' . $user_id, 'bp' ); } -add_action( 'xprofile_updated_profile', 'xprofile_sync_wp_profile' ); add_action( 'bp_core_signup_user', 'xprofile_sync_wp_profile' ); add_action( 'bp_core_activated_user', 'xprofile_sync_wp_profile' ); @@ -862,6 +863,22 @@ function xprofile_sync_bp_profile( &$errors, $update, &$user ) { } add_action( 'user_profile_update_errors', 'xprofile_sync_bp_profile', 10, 3 ); +/** + * Update the WP display, last, and first name fields when the xprofile display name field is updated. + * + * @since 3.0.0 + * + * @param BP_XProfile_ProfileData $data Current instance of the profile data being saved. + */ +function xprofile_sync_wp_profile_on_single_field_set( $data ) { + + if ( bp_xprofile_fullname_field_id() !== $data->field_id ) { + return; + } + + xprofile_sync_wp_profile( $data->user_id ); +} +add_action( 'xprofile_data_after_save', 'xprofile_sync_wp_profile_on_single_field_set' ); /** * When a user is deleted, we need to clean up the database and remove all the 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 afe5162ec0f502cd3dbe7d1051b14cbae2fd8dbf..6f5a3c10ac135cb81dad307ff223815e786e62a3 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php +++ b/wp-content/plugins/buddypress/bp-xprofile/bp-xprofile-template.php @@ -21,14 +21,19 @@ defined( 'ABSPATH' ) || exit; * @param array|string $args { * Array of arguments. See BP_XProfile_Group::get() for full description. Those arguments whose defaults differ * from that method are described here: + * @type int $user_id Default: ID of the displayed user. * @type string|array $member_type Default: 'any'. + * @type int|bool $profile_group_id Default: false. * @type bool $hide_empty_groups Default: true. * @type bool $hide_empty_fields Defaults to true on the Dashboard, on a user's Edit Profile page, * or during registration. Otherwise false. - * @type bool $fetch_visibility_level Defaults to true when an admin is viewing a profile, or when a user is - * viewing her own profile, or during registration. Otherwise false. * @type bool $fetch_fields Default: true. * @type bool $fetch_field_data Default: true. + * @type bool $fetch_visibility_level Defaults to true when an admin is viewing a profile, or when a user is + * viewing her own profile, or during registration. Otherwise false. + * @type int|bool $exclude_groups Default: false. + * @type int|bool $exclude_fields Default: false + * @type bool $update_meta_cache Default: true. * } * * @return bool 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 e9bfa443e0d14385b6561777f1a0df71e95243b7..8b619afc9303b7ecf3819065ef8828c45f337f28 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 @@ -67,17 +67,22 @@ class BP_XProfile_Component extends BP_Component { $includes = array( 'cssjs', 'cache', - 'actions', - 'activity', - 'screens', 'caps', 'filters', - 'settings', 'template', 'functions', - 'notifications', ); + // Conditional includes. + if ( bp_is_active( 'activity' ) ) { + $includes[] = 'activity'; + } + if ( bp_is_active( 'notifications' ) ) { + $includes[] = 'notifications'; + } + if ( bp_is_active( 'settings' ) ) { + $includes[] = 'settings'; + } if ( is_admin() ) { $includes[] = 'admin'; } @@ -85,6 +90,47 @@ class BP_XProfile_Component extends BP_Component { parent::includes( $includes ); } + /** + * Late includes method. + * + * Only load up certain code when on specific pages. + * + * @since 3.0.0 + */ + public function late_includes() { + // Bail if PHPUnit is running. + if ( defined( 'BP_TESTS_DIR' ) ) { + return; + } + + // Bail if not on a user page. + if ( ! bp_is_user() ) { + return; + } + + // User nav. + if ( bp_is_profile_component() ) { + require $this->path . 'bp-xprofile/screens/public.php'; + + // Action - Delete avatar. + if ( is_user_logged_in()&& bp_is_user_change_avatar() && bp_is_action_variable( 'delete-avatar', 0 ) ) { + require $this->path . 'bp-xprofile/actions/delete-avatar.php'; + } + + // Sub-nav items. + if ( is_user_logged_in() && + in_array( bp_current_action(), array( 'edit', 'change-avatar', 'change-cover-image' ), true ) + ) { + require $this->path . 'bp-xprofile/screens/' . bp_current_action() . '.php'; + } + } + + // Settings. + if ( is_user_logged_in() && bp_is_user_settings_profile() ) { + require $this->path . 'bp-xprofile/screens/settings-profile.php'; + } + } + /** * Setup globals. * diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php index 689d7f0f82eb61644e19335856173f4782b91d1c..276253005a72552a665b19f257aa5810ec415c15 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php @@ -105,9 +105,8 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { */ do_action( bp_get_the_profile_field_errors_action() ); ?> - <label for="<?php bp_the_profile_field_input_name(); ?>_day" class="<?php echo is_admin() ? 'screen-reader-text' : 'bp-screen-reader-text' ;?>"><?php - /* translators: accessibility text */ - esc_html_e( 'Select day', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_day" class="xprofile-field-label"><?php + esc_html_e( 'Day', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $day_r ); ?>> <?php bp_the_profile_field_options( array( @@ -116,9 +115,8 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { ) ); ?> </select> - <label for="<?php bp_the_profile_field_input_name(); ?>_month" class="<?php echo is_admin() ? 'screen-reader-text' : 'bp-screen-reader-text' ;?>"><?php - /* translators: accessibility text */ - esc_html_e( 'Select month', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_month" class="xprofile-field-label"><?php + esc_html_e( 'Month', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $month_r ); ?>> <?php bp_the_profile_field_options( array( @@ -127,9 +125,8 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { ) ); ?> </select> - <label for="<?php bp_the_profile_field_input_name(); ?>_year" class="<?php echo is_admin() ? 'screen-reader-text' : 'bp-screen-reader-text' ;?>"><?php - /* translators: accessibility text */ - esc_html_e( 'Select year', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_year" class="xprofile-field-label"><?php + esc_html_e( 'Year', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $year_r ); ?>> <?php bp_the_profile_field_options( array( @@ -300,25 +297,22 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { 'name' => bp_get_the_profile_field_input_name() . '_year' ) ); ?> - <label for="<?php bp_the_profile_field_input_name(); ?>_day" class="screen-reader-text"><?php - /* translators: accessibility text */ - esc_html_e( 'Select day', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_day" class="xprofile-field-label"><?php + esc_html_e( 'Day', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $day_r ); ?>> <?php bp_the_profile_field_options( array( 'type' => 'day' ) ); ?> </select> - <label for="<?php bp_the_profile_field_input_name(); ?>_month" class="screen-reader-text"><?php - /* translators: accessibility text */ - esc_html_e( 'Select month', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_month" class="xprofile-field-label"><?php + esc_html_e( 'Month', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $month_r ); ?>> <?php bp_the_profile_field_options( array( 'type' => 'month' ) ); ?> </select> - <label for="<?php bp_the_profile_field_input_name(); ?>_year" class="screen-reader-text"><?php - /* translators: accessibility text */ - esc_html_e( 'Select year', 'buddypress' ); + <label for="<?php bp_the_profile_field_input_name(); ?>_year" class="xprofile-field-label"><?php + esc_html_e( 'Year', 'buddypress' ); ?></label> <select <?php echo $this->get_edit_field_html_elements( $year_r ); ?>> <?php bp_the_profile_field_options( array( 'type' => 'year' ) ); ?> @@ -495,7 +489,7 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { <span class="date-format-label"><?php esc_html_e( 'Custom:', 'buddypress' ); ?></span> </label> <label for="date-format-custom-value" class="screen-reader-text"><?php esc_html_e( 'Enter custom time format', 'buddypress' ); ?></label> - <input type="text" name="field-settings[date_format_custom]" id="date-format-custom-value" class="date-format-custom-value" value="<?php echo esc_attr( $settings['date_format_custom'] ); ?>" aria-describedby="date-format-custom-example" /> <span class="screen-reader-text"><?php esc_html_e( 'Example:', 'buddypress' ); ?></span><span class="date-format-custom-example" id="date-format-custom-sample"><?php if ( $settings['date_format_custom'] ) : ?><?php echo esc_html( date( $settings['date_format_custom'] ) ); endif; ?></span><span class="spinner" id="date-format-custom-spinner" aria-hidden="true"></span> + <input type="text" name="field-settings[date_format_custom]" id="date-format-custom-value" class="date-format-custom-value" value="<?php echo esc_attr( $settings['date_format_custom'] ); ?>" aria-describedby="date-format-custom-example" /> <span class="screen-reader-text"><?php esc_html_e( 'Example:', 'buddypress' ); ?></span><span class="date-format-custom-example" id="date-format-custom-sample"><?php if ( $settings['date_format_custom'] ) : ?><?php echo esc_html( date_i18n( $settings['date_format_custom'] ) ); endif; ?></span><span class="spinner" id="date-format-custom-spinner" aria-hidden="true"></span> <p><a href="https://codex.wordpress.org/Formatting_Date_and_Time"><?php esc_html_e( 'Documentation on date and time formatting', 'buddypress' ); ?></a></p> </div> @@ -608,11 +602,11 @@ class BP_XProfile_Field_Type_Datebox extends BP_XProfile_Field_Type { break; case 'custom' : - $formatted = date( $settings['date_format_custom'], $field_value ); + $formatted = date_i18n( $settings['date_format_custom'], $field_value ); break; default : - $formatted = date( $settings['date_format'], $field_value ); + $formatted = date_i18n( $settings['date_format'], $field_value ); break; } diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php new file mode 100644 index 0000000000000000000000000000000000000000..275bb3abdd97c6d2690d254ff6437371c5034602 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php @@ -0,0 +1,156 @@ +<?php +/** + * BuddyPress XProfile Classes. + * + * @package BuddyPress + * @subpackage XProfileClasses + * @since 3.0.0 + */ + +// Exit if accessed directly. +defined( 'ABSPATH' ) || exit; + +/** + * Telephone number xprofile field type. + * + * @since 3.0.0 + */ +class BP_XProfile_Field_Type_Telephone extends BP_XProfile_Field_Type { + + /** + * Constructor for the telephone number field type. + * + * @since 3.0.0 + */ + public function __construct() { + parent::__construct(); + + $this->category = _x( 'Single Fields', 'xprofile field type category', 'buddypress' ); + $this->name = _x( 'Phone Number', 'xprofile field type', 'buddypress' ); + + $this->set_format( '/^.*$/', 'replace' ); + + /** + * Fires inside __construct() method for BP_XProfile_Field_Type_Telephone class. + * + * @since 3.0.0 + * + * @param BP_XProfile_Field_Type_Telephone $this Current instance of the field type. + */ + do_action( 'bp_xprofile_field_type_telephone', $this ); + } + + /** + * Output the edit field HTML for this field type. + * + * Must be used inside the {@link bp_profile_fields()} template loop. + * + * @since 3.0.0 + * + * @param array $raw_properties Optional key/value array of + * {@link http://dev.w3.org/html5/markup/input.text.html permitted attributes} + * that you want to add. + */ + public function edit_field_html( array $raw_properties = array() ) { + /* + * User_id is a special optional parameter that certain other fields + * types pass to {@link bp_the_profile_field_options()}. + */ + if ( isset( $raw_properties['user_id'] ) ) { + unset( $raw_properties['user_id'] ); + } + + $r = bp_parse_args( $raw_properties, array( + 'type' => 'tel', + 'value' => bp_get_the_profile_field_edit_value(), + ) ); ?> + + <legend id="<?php bp_the_profile_field_input_name(); ?>-1"> + <?php bp_the_profile_field_name(); ?> + <?php bp_the_profile_field_required_label(); ?> + </legend> + + <?php + + /** This action is documented in bp-xprofile/bp-xprofile-classes */ + do_action( bp_get_the_profile_field_errors_action() ); ?> + + <input <?php echo $this->get_edit_field_html_elements( $r ); ?> aria-labelledby="<?php bp_the_profile_field_input_name(); ?>-1" aria-describedby="<?php bp_the_profile_field_input_name(); ?>-3"> + + <?php if ( bp_get_the_profile_field_description() ) : ?> + <p class="description" id="<?php bp_the_profile_field_input_name(); ?>-3"><?php bp_the_profile_field_description(); ?></p> + <?php endif; ?> + + <?php + } + + /** + * Output HTML for this field type on the wp-admin Profile Fields screen. + * + * Must be used inside the {@link bp_profile_fields()} template loop. + * + * @since 3.0.0 + * + * @param array $raw_properties Optional key/value array of permitted attributes that you want to add. + */ + public function admin_field_html( array $raw_properties = array() ) { + $r = bp_parse_args( $raw_properties, array( + 'type' => 'tel', + ) ); ?> + + <label for="<?php bp_the_profile_field_input_name(); ?>" class="screen-reader-text"><?php + /* translators: accessibility text */ + esc_html_e( 'Phone Number', 'buddypress' ); + ?></label> + <input <?php echo $this->get_edit_field_html_elements( $r ); ?>> + + <?php + } + + /** + * This method usually outputs HTML for this field type's children options on the wp-admin Profile Fields + * "Add Field" and "Edit Field" screens, but for this field type, we don't want it, so it's stubbed out. + * + * @since 3.0.0 + * + * @param BP_XProfile_Field $current_field The current profile field on the add/edit screen. + * @param string $control_type Optional. HTML input type used to render the + * current field's child options. + */ + public function admin_new_field_html( BP_XProfile_Field $current_field, $control_type = '' ) {} + + /** + * Format URL values for display. + * + * @since 3.0.0 + * + * @param string $field_value The URL value, as saved in the database. + * @param string|int $field_id Optional. ID of the field. + * + * @return string URL converted to a link. + */ + public static function display_filter( $field_value, $field_id = '' ) { + $url = wp_strip_all_tags( $field_value ); + $parts = parse_url( $url ); + + // Add the tel:// protocol to the field value. + if ( isset( $parts['scheme'] ) ) { + if ( strtolower( $parts['scheme'] ) !== 'tel' ) { + $scheme = preg_quote( $parts['scheme'], '#' ); + $url = preg_replace( '#^' . $scheme . '#i', 'tel', $url ); + } + + $url_text = preg_replace( '#^tel://#i', '', $url ); + + } else { + $url_text = $url; + $url = 'tel://' . $url; + } + + return sprintf( + '<a href="%1$s" rel="nofollow">%2$s</a>', + esc_url( $url, array( 'tel' ) ), + esc_html( $url_text ) + ); + } +} 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 f282a826c2586b0707520172e57e5ea299b2d671..65a970c68aca49724c24dadd705e35e04c1c39fd 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 @@ -510,6 +510,11 @@ abstract class BP_XProfile_Field_Type { if ( bp_get_the_profile_field_is_required() ) { $r['aria-required'] = 'true'; + + // Moderators can bypass field requirements. + if ( ! bp_current_user_can( 'bp_moderate' ) ) { + $r[] = 'required'; + } } /** 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 d4794c55daa2fbb4135f1a463424d779b46d9987..afc10747d44420e7a75cc636a0e75bbd25538525 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 @@ -344,6 +344,16 @@ class BP_XProfile_Field { return false; } + /** + * Fires before the current field instance gets deleted. + * + * @since 3.0.0 + * + * @param BP_XProfile_Field $this Current instance of the field being deleted. Passed by reference. + * @param bool $delete_data Whether or not to delete data. + */ + do_action_ref_array( 'xprofile_field_before_delete', array( &$this, $delete_data ) ); + $bp = buddypress(); $sql = $wpdb->prepare( "DELETE FROM {$bp->profile->table_name_fields} WHERE id = %d OR parent_id = %d", $this->id, $this->id ); @@ -351,11 +361,24 @@ class BP_XProfile_Field { return false; } + // Delete all metadata for this field. + bp_xprofile_delete_meta( $this->id, 'field' ); + // Delete the data in the DB for this field. if ( true === $delete_data ) { BP_XProfile_ProfileData::delete_for_field( $this->id ); } + /** + * Fires after the current field instance gets deleted. + * + * @since 3.0.0 + * + * @param BP_XProfile_Field $this Current instance of the field being deleted. Passed by reference. + * @param bool $delete_data Whether or not to delete data. + */ + do_action_ref_array( 'xprofile_field_after_delete', array( &$this, $delete_data ) ); + return true; } @@ -555,11 +578,13 @@ class BP_XProfile_Field { * Filters the found children for a field. * * @since 1.2.5 + * @since 3.0.0 Added the `$this` parameter. * - * @param object $children Found children for a field. - * @param bool $for_editing Whether or not the field is for editing. + * @param object $children Found children for a field. + * @param bool $for_editing Whether or not the field is for editing. + * @param BP_XProfile_Field $this Field object */ - return apply_filters( 'bp_xprofile_field_get_children', $children, $for_editing ); + return apply_filters( 'bp_xprofile_field_get_children', $children, $for_editing, $this ); } /** @@ -1145,10 +1170,19 @@ class BP_XProfile_Field { * @param string $message Message to display. */ public function render_admin_form( $message = '' ) { + + // Users Admin URL + $users_url = bp_get_admin_url( 'users.php' ); + + // Add New if ( empty( $this->id ) ) { $title = __( 'Add New Field', 'buddypress' ); - $action = "users.php?page=bp-profile-setup&group_id=" . $this->group_id . "&mode=add_field#tabs-" . $this->group_id; - $button = __( 'Save', 'buddypress' ); + $button = __( 'Save', 'buddypress' ); + $action = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'add_field', + 'group_id' => (int) $this->group_id + ), $users_url . '#tabs-' . (int) $this->group_id ); if ( !empty( $_POST['saveField'] ) ) { $this->name = $_POST['title']; @@ -1161,10 +1195,17 @@ class BP_XProfile_Field { $this->order_by = $_POST["sort_order_{$this->type}"]; } } + + // Edit } else { $title = __( 'Edit Field', 'buddypress' ); - $action = "users.php?page=bp-profile-setup&mode=edit_field&group_id=" . $this->group_id . "&field_id=" . $this->id . "#tabs-" . $this->group_id; - $button = __( 'Update', 'buddypress' ); + $button = __( 'Update', 'buddypress' ); + $action = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'edit_field', + 'group_id' => (int) $this->group_id, + 'field_id' => (int) $this->id + ), $users_url . '#tabs-' . (int) $this->group_id ); } ?> <div class="wrap"> @@ -1268,6 +1309,12 @@ class BP_XProfile_Field { */ private function submit_metabox( $button_text = '' ) { + // Setup the URL for deleting + $users_url = bp_get_admin_url( 'users.php' ); + $cancel_url = add_query_arg( array( + 'page' => 'bp-profile-setup' + ), $users_url ); + /** * Fires before XProfile Field submit metabox. * @@ -1305,7 +1352,7 @@ class BP_XProfile_Field { <?php endif; ?> <div id="delete-action"> - <a href="users.php?page=bp-profile-setup" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a> + <a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a> </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 a94d44d69d6e12d37d34b741d6f481767ccdf1ca..c99e6d053603dc3b24e4fa359868596c4976d015 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 @@ -716,17 +716,32 @@ class BP_XProfile_Group { public function render_admin_form() { global $message; + // Users Admin URL + $users_url = bp_get_admin_url( 'users.php' ); + + // URL to cancel to + $cancel_url = add_query_arg( array( + 'page' => 'bp-profile-setup' + ), $users_url ); + // New field group. if ( empty( $this->id ) ) { $title = __( 'Add New Field Group', 'buddypress' ); - $action = add_query_arg( array( 'page' => 'bp-profile-setup', 'mode' => 'add_group' ), 'users.php' ); - $button = __( 'Save', 'buddypress' ); + $button = __( 'Save', 'buddypress' ); + $action = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'add_group' + ), $users_url ); // Existing field group. } else { $title = __( 'Edit Field Group', 'buddypress' ); - $action = add_query_arg( array( 'page' => 'bp-profile-setup', 'mode' => 'edit_group', 'group_id' => $this->id ), 'users.php' ); - $button = __( 'Update', 'buddypress' ); + $button = __( 'Update', 'buddypress' ); + $action = add_query_arg( array( + 'page' => 'bp-profile-setup', + 'mode' => 'edit_group', + 'group_id' => (int) $this->id + ), $users_url ); } ?> <div class="wrap"> @@ -813,7 +828,7 @@ 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="users.php?page=bp-profile-setup" class="deletion"><?php _e( 'Cancel', 'buddypress' ); ?></a> + <a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php _e( 'Cancel', 'buddypress' ); ?></a> </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 62603e7c0987858129b7451be5139444c3922681..9db8bfc3ad9af45c463b22815eddb331d0e87e4f 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 @@ -184,9 +184,47 @@ class BP_XProfile_ProfileData { $bp = buddypress(); - $this->user_id = apply_filters( 'xprofile_data_user_id_before_save', $this->user_id, $this->id ); - $this->field_id = apply_filters( 'xprofile_data_field_id_before_save', $this->field_id, $this->id ); - $this->value = apply_filters( 'xprofile_data_value_before_save', $this->value, $this->id, true, $this ); + /** + * Filters the data's user ID before saving to the database. + * + * @since 1.0.0 + * + * @param int $user_id The user ID. + * @param int $data_id The field data ID. + */ + $this->user_id = apply_filters( 'xprofile_data_user_id_before_save', $this->user_id, $this->id ); + + /** + * Filters the data's field ID before saving to the database. + * + * @since 1.0.0 + * + * @param int $field_id The field ID. + * @param int $data_id The field data ID. + */ + $this->field_id = apply_filters( 'xprofile_data_field_id_before_save', $this->field_id, $this->id ); + + /** + * Filters the data's value before saving to the database. + * + * @since 1.0.0 + * @since 2.1.0 Added `$reserialize` and `$this` parameters. + * + * @param string $field_value The field value. + * @param int $data_id The field data ID. + * @param bool $reserialize Whether to reserialize arrays before returning. Defaults to true. + * @param BP_XProfile_ProfileData $this Current instance of the profile data being saved. + */ + $this->value = apply_filters( 'xprofile_data_value_before_save', $this->value, $this->id, true, $this ); + + /** + * Filters the data's last updated timestamp before saving to the database. + * + * @since 1.0.0 + * + * @param int $last_updated The last updated timestamp. + * @param int $data_id The field data ID. + */ $this->last_updated = apply_filters( 'xprofile_data_last_updated_before_save', bp_core_current_time(), $this->id ); /** diff --git a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-user-admin.php b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-user-admin.php index c290591dc42d910ef21aa29119c141398980340e..f24a4e047ee16e0dbb8149f58107ada12e79fcaf 100644 --- a/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-user-admin.php +++ b/wp-content/plugins/buddypress/bp-xprofile/classes/class-bp-xprofile-user-admin.php @@ -88,7 +88,7 @@ class BP_XProfile_User_Admin { * We cannot simply use add_thickbox() here as WordPress is not playing * nice with Thickbox width/height see https://core.trac.wordpress.org/ticket/17249 * Using media-upload might be interesting in the future for the send to editor stuff - * and we make sure the tb_window is wide enougth + * and we make sure the tb_window is wide enough */ wp_enqueue_style ( 'thickbox' ); wp_enqueue_script( 'media-upload' ); diff --git a/wp-content/plugins/buddypress/bp-xprofile/screens/change-avatar.php b/wp-content/plugins/buddypress/bp-xprofile/screens/change-avatar.php new file mode 100644 index 0000000000000000000000000000000000000000..dc9da918aad09e3e3e47504840856ab7dd1c2602 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/screens/change-avatar.php @@ -0,0 +1,101 @@ +<?php +/** + * XProfile: User's "Profile > Change Avatar" screen handler + * + * @package BuddyPress + * @subpackage XProfileScreens + * @since 3.0.0 + */ + +/** + * Handles the uploading and cropping of a user avatar. Displays the change avatar page. + * + * @since 1.0.0 + * + */ +function xprofile_screen_change_avatar() { + + // Bail if not the correct screen. + if ( ! bp_is_my_profile() && ! bp_current_user_can( 'bp_moderate' ) ) { + return false; + } + + // Bail if there are action variables. + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + $bp = buddypress(); + + if ( ! isset( $bp->avatar_admin ) ) { + $bp->avatar_admin = new stdClass(); + } + + $bp->avatar_admin->step = 'upload-image'; + + if ( !empty( $_FILES ) ) { + + // Check the nonce. + check_admin_referer( 'bp_avatar_upload' ); + + // Pass the file to the avatar upload handler. + if ( bp_core_avatar_handle_upload( $_FILES, 'xprofile_avatar_upload_dir' ) ) { + $bp->avatar_admin->step = 'crop-image'; + + // Make sure we include the jQuery jCrop file for image cropping. + add_action( 'wp_print_scripts', 'bp_core_add_jquery_cropper' ); + } + } + + // If the image cropping is done, crop the image and save a full/thumb version. + if ( isset( $_POST['avatar-crop-submit'] ) ) { + + // Check the nonce. + check_admin_referer( 'bp_avatar_cropstore' ); + + $args = array( + 'item_id' => bp_displayed_user_id(), + 'original_file' => $_POST['image_src'], + 'crop_x' => $_POST['x'], + 'crop_y' => $_POST['y'], + 'crop_w' => $_POST['w'], + 'crop_h' => $_POST['h'] + ); + + if ( ! bp_core_avatar_handle_crop( $args ) ) { + bp_core_add_message( __( 'There was a problem cropping your profile photo.', 'buddypress' ), 'error' ); + } else { + + /** + * Fires right before the redirect, after processing a new avatar. + * + * @since 1.1.0 + * @since 2.3.4 Add two new parameters to inform about the user id and + * about the way the avatar was set (eg: 'crop' or 'camera'). + * + * @param string $item_id Inform about the user id the avatar was set for. + * @param string $value Inform about the way the avatar was set ('crop'). + */ + do_action( 'xprofile_avatar_uploaded', (int) $args['item_id'], 'crop' ); + bp_core_add_message( __( 'Your new profile photo was uploaded successfully.', 'buddypress' ) ); + bp_core_redirect( bp_displayed_user_domain() ); + } + } + + /** + * Fires right before the loading of the XProfile change avatar screen template file. + * + * @since 1.0.0 + */ + do_action( 'xprofile_screen_change_avatar' ); + + /** + * Filters the template to load for the XProfile change avatar screen. + * + * @since 1.0.0 + * + * @param string $template Path to the XProfile change avatar template to load. + */ + bp_core_load_template( apply_filters( 'xprofile_template_change_avatar', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/screens/change-cover-image.php b/wp-content/plugins/buddypress/bp-xprofile/screens/change-cover-image.php new file mode 100644 index 0000000000000000000000000000000000000000..64b1b15d1241f1493dfedf7c1c5f04907e019a37 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/screens/change-cover-image.php @@ -0,0 +1,37 @@ +<?php +/** + * XProfile: User's "Profile > Change Cover Image" screen handler + * + * @package BuddyPress + * @subpackage XProfileScreens + * @since 3.0.0 + */ + +/** + * Displays the change cover image page. + * + * @since 2.4.0 + */ +function xprofile_screen_change_cover_image() { + + // Bail if not the correct screen. + if ( ! bp_is_my_profile() && ! bp_current_user_can( 'bp_moderate' ) ) { + return false; + } + + /** + * Fires right before the loading of the XProfile change cover image screen template file. + * + * @since 2.4.0 + */ + do_action( 'xprofile_screen_change_cover_image' ); + + /** + * Filters the template to load for the XProfile cover image screen. + * + * @since 2.4.0 + * + * @param string $template Path to the XProfile cover image template to load. + */ + bp_core_load_template( apply_filters( 'xprofile_template_cover_image', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/screens/edit.php b/wp-content/plugins/buddypress/bp-xprofile/screens/edit.php new file mode 100644 index 0000000000000000000000000000000000000000..e0b85c0e05dabc99f88828772c9d791f19729462 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/screens/edit.php @@ -0,0 +1,156 @@ +<?php +/** + * XProfile: User's "Profile > Edit" screen handler + * + * @package BuddyPress + * @subpackage XProfileScreens + * @since 3.0.0 + */ + +/** + * Handles the display of the profile edit page by loading the correct template file. + * Also checks to make sure this can only be accessed for the logged in users profile. + * + * @since 1.0.0 + * + */ +function xprofile_screen_edit_profile() { + + if ( ! bp_is_my_profile() && ! bp_current_user_can( 'bp_moderate' ) ) { + return false; + } + + // Make sure a group is set. + if ( ! bp_action_variable( 1 ) ) { + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_profile_slug() . '/edit/group/1' ) ); + } + + // Check the field group exists. + if ( ! bp_is_action_variable( 'group' ) || ! xprofile_get_field_group( bp_action_variable( 1 ) ) ) { + bp_do_404(); + return; + } + + // No errors. + $errors = false; + + // Check to see if any new information has been submitted. + if ( isset( $_POST['field_ids'] ) ) { + + // Check the nonce. + check_admin_referer( 'bp_xprofile_edit' ); + + // Check we have field ID's. + if ( empty( $_POST['field_ids'] ) ) { + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_profile_slug() . '/edit/group/' . bp_action_variable( 1 ) ) ); + } + + // Explode the posted field IDs into an array so we know which + // fields have been submitted. + $posted_field_ids = wp_parse_id_list( $_POST['field_ids'] ); + $is_required = array(); + + // Loop through the posted fields formatting any datebox values then validate the field. + foreach ( (array) $posted_field_ids as $field_id ) { + bp_xprofile_maybe_format_datebox_post_data( $field_id ); + + $is_required[ $field_id ] = xprofile_check_is_required_field( $field_id ) && ! bp_current_user_can( 'bp_moderate' ); + if ( $is_required[$field_id] && empty( $_POST['field_' . $field_id] ) ) { + $errors = true; + } + } + + // There are errors. + if ( !empty( $errors ) ) { + bp_core_add_message( __( 'Your changes have not been saved. Please fill in all required fields, and save your changes again.', 'buddypress' ), 'error' ); + + // No errors. + } else { + + // Reset the errors var. + $errors = false; + + // Now we've checked for required fields, lets save the values. + $old_values = $new_values = array(); + foreach ( (array) $posted_field_ids as $field_id ) { + + // Certain types of fields (checkboxes, multiselects) may come through empty. Save them as an empty array so that they don't get overwritten by the default on the next edit. + $value = isset( $_POST['field_' . $field_id] ) ? $_POST['field_' . $field_id] : ''; + + $visibility_level = !empty( $_POST['field_' . $field_id . '_visibility'] ) ? $_POST['field_' . $field_id . '_visibility'] : 'public'; + + // Save the old and new values. They will be + // passed to the filter and used to determine + // whether an activity item should be posted. + $old_values[ $field_id ] = array( + 'value' => xprofile_get_field_data( $field_id, bp_displayed_user_id() ), + 'visibility' => xprofile_get_field_visibility_level( $field_id, bp_displayed_user_id() ), + ); + + // Update the field data and visibility level. + xprofile_set_field_visibility_level( $field_id, bp_displayed_user_id(), $visibility_level ); + $field_updated = xprofile_set_field_data( $field_id, bp_displayed_user_id(), $value, $is_required[ $field_id ] ); + $value = xprofile_get_field_data( $field_id, bp_displayed_user_id() ); + + $new_values[ $field_id ] = array( + 'value' => $value, + 'visibility' => xprofile_get_field_visibility_level( $field_id, bp_displayed_user_id() ), + ); + + if ( ! $field_updated ) { + $errors = true; + } else { + + /** + * Fires on each iteration of an XProfile field being saved with no error. + * + * @since 1.1.0 + * + * @param int $field_id ID of the field that was saved. + * @param string $value Value that was saved to the field. + */ + do_action( 'xprofile_profile_field_data_updated', $field_id, $value ); + } + } + + /** + * Fires after all XProfile fields have been saved for the current profile. + * + * @since 1.0.0 + * + * @param int $value Displayed user ID. + * @param array $posted_field_ids Array of field IDs that were edited. + * @param bool $errors Whether or not any errors occurred. + * @param array $old_values Array of original values before updated. + * @param array $new_values Array of newly saved values after update. + */ + do_action( 'xprofile_updated_profile', bp_displayed_user_id(), $posted_field_ids, $errors, $old_values, $new_values ); + + // Set the feedback messages. + if ( !empty( $errors ) ) { + bp_core_add_message( __( 'There was a problem updating some of your profile information. Please try again.', 'buddypress' ), 'error' ); + } else { + bp_core_add_message( __( 'Changes saved.', 'buddypress' ) ); + } + + // Redirect back to the edit screen to display the updates and message. + bp_core_redirect( trailingslashit( bp_displayed_user_domain() . bp_get_profile_slug() . '/edit/group/' . bp_action_variable( 1 ) ) ); + } + } + + /** + * Fires right before the loading of the XProfile edit screen template file. + * + * @since 1.0.0 + */ + do_action( 'xprofile_screen_edit_profile' ); + + /** + * Filters the template to load for the XProfile edit screen. + * + * @since 1.0.0 + * + * @param string $template Path to the XProfile edit template to load. + */ + bp_core_load_template( apply_filters( 'xprofile_template_edit_profile', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/screens/public.php b/wp-content/plugins/buddypress/bp-xprofile/screens/public.php new file mode 100644 index 0000000000000000000000000000000000000000..d1b360cc8a00e85e93dc9cc7ea367b2943ed9fb3 --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/screens/public.php @@ -0,0 +1,36 @@ +<?php +/** + * XProfile: User's "Profile" screen handler + * + * @package BuddyPress + * @subpackage XProfileScreens + * @since 3.0.0 + */ + +/** + * Handles the display of the profile page by loading the correct template file. + * + * @since 1.0.0 + * + */ +function xprofile_screen_display_profile() { + $new = isset( $_GET['new'] ) ? $_GET['new'] : ''; + + /** + * Fires right before the loading of the XProfile screen template file. + * + * @since 1.0.0 + * + * @param string $new $_GET parameter holding the "new" parameter. + */ + do_action( 'xprofile_screen_display_profile', $new ); + + /** + * Filters the template to load for the XProfile screen. + * + * @since 1.0.0 + * + * @param string $template Path to the XProfile template to load. + */ + bp_core_load_template( apply_filters( 'xprofile_template_display_profile', 'members/single/home' ) ); +} \ No newline at end of file diff --git a/wp-content/plugins/buddypress/bp-xprofile/screens/settings-profile.php b/wp-content/plugins/buddypress/bp-xprofile/screens/settings-profile.php new file mode 100644 index 0000000000000000000000000000000000000000..c7ae5bb1e66fd51f07f5a37b6fee49b3ec3befff --- /dev/null +++ b/wp-content/plugins/buddypress/bp-xprofile/screens/settings-profile.php @@ -0,0 +1,115 @@ +<?php +/** + * XProfile: User's "Settings > Profile Visibility" screen handler + * + * @package BuddyPress + * @subpackage XProfileScreens + * @since 3.0.0 + */ + +/** + * Show the xprofile settings template. + * + * @since 2.0.0 + */ +function bp_xprofile_screen_settings() { + + // Redirect if no privacy settings page is accessible. + if ( bp_action_variables() || ! bp_is_active( 'xprofile' ) ) { + bp_do_404(); + return; + } + + /** + * Filters the template to load for the XProfile settings screen. + * + * @since 2.0.0 + * + * @param string $template Path to the XProfile change avatar template to load. + */ + bp_core_load_template( apply_filters( 'bp_settings_screen_xprofile', '/members/single/settings/profile' ) ); +} + +/** + * Handles the saving of xprofile field visibilities. + * + * @since 1.9.0 + */ +function bp_xprofile_action_settings() { + + // Bail if not a POST action. + if ( ! bp_is_post_request() ) { + return; + } + + // Bail if no submit action. + if ( ! isset( $_POST['xprofile-settings-submit'] ) ) { + return; + } + + // Bail if not in settings. + if ( ! bp_is_user_settings_profile() ) { + return; + } + + // 404 if there are any additional action variables attached + if ( bp_action_variables() ) { + bp_do_404(); + return; + } + + // Nonce check. + check_admin_referer( 'bp_xprofile_settings' ); + + /** + * Fires before saving xprofile field visibilities. + * + * @since 2.0.0 + */ + do_action( 'bp_xprofile_settings_before_save' ); + + /* Save ******************************************************************/ + + // Only save if there are field ID's being posted. + if ( ! empty( $_POST['field_ids'] ) ) { + + // Get the POST'ed field ID's. + $posted_field_ids = explode( ',', $_POST['field_ids'] ); + + // Backward compatibility: a bug in BP 2.0 caused only a single + // group's field IDs to be submitted. Look for values submitted + // in the POST request that may not appear in 'field_ids', and + // add them to the list of IDs to save. + foreach ( $_POST as $posted_key => $posted_value ) { + preg_match( '/^field_([0-9]+)_visibility$/', $posted_key, $matches ); + if ( ! empty( $matches[1] ) && ! in_array( $matches[1], $posted_field_ids ) ) { + $posted_field_ids[] = $matches[1]; + } + } + + // Save the visibility settings. + foreach ( $posted_field_ids as $field_id ) { + + $visibility_level = 'public'; + + if ( !empty( $_POST['field_' . $field_id . '_visibility'] ) ) { + $visibility_level = $_POST['field_' . $field_id . '_visibility']; + } + + xprofile_set_field_visibility_level( $field_id, bp_displayed_user_id(), $visibility_level ); + } + } + + /* Other *****************************************************************/ + + /** + * Fires after saving xprofile field visibilities. + * + * @since 2.0.0 + */ + do_action( 'bp_xprofile_settings_after_save' ); + + // Redirect to the root domain. + bp_core_redirect( bp_displayed_user_domain() . bp_get_settings_slug() . '/profile' ); +} +add_action( 'bp_actions', 'bp_xprofile_action_settings' ); \ No newline at end of file diff --git a/wp-content/plugins/buddypress/buddypress.pot b/wp-content/plugins/buddypress/buddypress.pot index 4e0f58430f112d1ded35393cc83eac80c801a003..6d855802832d2693b7a6973a1e1d5283b3ebc35c 100644 --- a/wp-content/plugins/buddypress/buddypress.pot +++ b/wp-content/plugins/buddypress/buddypress.pot @@ -1,83 +1,46 @@ -# Copyright (C) 2017 The BuddyPress Community +# Copyright (C) 2018 The BuddyPress Community # This file is distributed under the GPLv2 or later (license.txt). msgid "" msgstr "" -"Project-Id-Version: BuddyPress 2.9.2\n" +"Project-Id-Version: BuddyPress 3.1.0\n" "Report-Msgid-Bugs-To: https://buddypress.trac.wordpress.org\n" -"POT-Creation-Date: 2017-11-02 15:45:40+00:00\n" +"POT-Creation-Date: 2018-06-05 19:33:30+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"PO-Revision-Date: 2017-MO-DA HO:MI+ZONE\n" +"PO-Revision-Date: 2018-MO-DA HO:MI+ZONE\n" "Last-Translator: JOHN JAMES JACOBY <jjj@buddypress.org>\n" "Language-Team: ENGLISH <jjj@buddypress.org>\n" -"X-Generator: grunt-wp-i18n1.0.1\n" +"X-Generator: grunt-wp-i18n1.0.2\n" -#: bp-activity/bp-activity-actions.php:150 +#: bp-activity/actions/delete.php:52 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:249 msgid "Activity deleted successfully" msgstr "" -#: bp-activity/bp-activity-actions.php:152 +#: bp-activity/actions/delete.php:54 msgid "There was an error when deleting that activity" msgstr "" -#: bp-activity/bp-activity-actions.php:221 -msgid "The activity item has been marked as spam and is no longer visible." -msgstr "" - -#: bp-activity/bp-activity-actions.php:292 -#: bp-templates/bp-legacy/buddypress-functions.php:932 -msgid "Please enter some content to post." -msgstr "" - -#: bp-activity/bp-activity-actions.php:322 -msgid "Update Posted!" -msgstr "" - -#: bp-activity/bp-activity-actions.php:324 -msgid "There was an error when posting your update. Please try again." -msgstr "" - -#: bp-activity/bp-activity-actions.php:365 -#: bp-templates/bp-legacy/buddypress-functions.php:1025 -msgid "Please do not leave the comment area blank." -msgstr "" - -#: bp-activity/bp-activity-actions.php:376 -msgid "Reply Posted!" -msgstr "" - -#: bp-activity/bp-activity-actions.php:378 -msgid "There was an error posting that reply. Please try again." -msgstr "" - -#: bp-activity/bp-activity-actions.php:400 +#: bp-activity/actions/favorite.php:25 msgid "Activity marked as favorite." msgstr "" -#: bp-activity/bp-activity-actions.php:402 +#: bp-activity/actions/favorite.php:27 msgid "There was an error marking that activity as a favorite. Please try again." msgstr "" -#: bp-activity/bp-activity-actions.php:424 -msgid "Activity removed as favorite." -msgstr "" - -#: bp-activity/bp-activity-actions.php:426 -msgid "There was an error removing that activity as a favorite. Please try again." -msgstr "" - -#: bp-activity/bp-activity-actions.php:450 +#: bp-activity/actions/feeds.php:28 #. translators: Sitewide activity RSS title - "[Site Name] | Site Wide #. Activity" msgid "%s | Site-Wide Activity" msgstr "" -#: bp-activity/bp-activity-actions.php:453 +#: bp-activity/actions/feeds.php:31 msgid "Activity feed for the entire site." msgstr "" -#: bp-activity/bp-activity-actions.php:476 bp-groups/bp-groups-actions.php:585 +#: bp-activity/actions/feeds.php:54 bp-groups/actions/feed.php:36 #. translators: Personal activity RSS title - "[Site Name] | [User Display #. Name] | Activity" #. translators: Group activity RSS title - "[Site Name] | [Group Name] | @@ -85,50 +48,90 @@ msgstr "" msgid "%1$s | %2$s | Activity" msgstr "" -#: bp-activity/bp-activity-actions.php:479 +#: bp-activity/actions/feeds.php:57 msgid "Activity feed for %s." msgstr "" -#: bp-activity/bp-activity-actions.php:502 +#: bp-activity/actions/feeds.php:80 #. translators: Friends activity RSS title - "[Site Name] | [User Display Name] #. | Friends Activity" msgid "%1$s | %2$s | Friends Activity" msgstr "" -#: bp-activity/bp-activity-actions.php:505 +#: bp-activity/actions/feeds.php:83 msgid "Activity feed for %s's friends." msgstr "" -#: bp-activity/bp-activity-actions.php:532 +#: bp-activity/actions/feeds.php:110 #. translators: Member groups activity RSS title - "[Site Name] | [User Display #. Name] | Groups Activity" msgid "%1$s | %2$s | Group Activity" msgstr "" -#: bp-activity/bp-activity-actions.php:535 +#: bp-activity/actions/feeds.php:113 msgid "Public group activity feed of which %s is a member." msgstr "" -#: bp-activity/bp-activity-actions.php:566 +#: bp-activity/actions/feeds.php:144 #. translators: User mentions activity RSS title - "[Site Name] | [User Display #. Name] | Mentions" msgid "%1$s | %2$s | Mentions" msgstr "" -#: bp-activity/bp-activity-actions.php:569 +#: bp-activity/actions/feeds.php:147 msgid "Activity feed mentioning %s." msgstr "" -#: bp-activity/bp-activity-actions.php:598 +#: bp-activity/actions/feeds.php:176 #. translators: User activity favorites RSS title - "[Site Name] | [User #. Display Name] | Favorites" msgid "%1$s | %2$s | Favorites" msgstr "" -#: bp-activity/bp-activity-actions.php:601 +#: bp-activity/actions/feeds.php:179 msgid "Activity feed of %s's favorites." msgstr "" +#: bp-activity/actions/post.php:60 +#: bp-templates/bp-legacy/buddypress-functions.php:947 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:478 +msgid "Please enter some content to post." +msgstr "" + +#: bp-activity/actions/post.php:90 +msgid "Update Posted!" +msgstr "" + +#: bp-activity/actions/post.php:92 +msgid "There was an error when posting your update. Please try again." +msgstr "" + +#: bp-activity/actions/reply.php:43 +#: bp-templates/bp-legacy/buddypress-functions.php:1039 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:349 +msgid "Please do not leave the comment area blank." +msgstr "" + +#: bp-activity/actions/reply.php:54 +msgid "Reply Posted!" +msgstr "" + +#: bp-activity/actions/reply.php:56 +msgid "There was an error posting that reply. Please try again." +msgstr "" + +#: bp-activity/actions/spam.php:59 +msgid "The activity item has been marked as spam and is no longer visible." +msgstr "" + +#: bp-activity/actions/unfavorite.php:25 +msgid "Activity removed as favorite." +msgstr "" + +#: bp-activity/actions/unfavorite.php:27 +msgid "There was an error removing that activity as a favorite. Please try again." +msgstr "" + #: bp-activity/bp-activity-admin.php:88 msgid "ERROR: Please type a reply." msgstr "" @@ -140,13 +143,13 @@ msgid "" msgstr "" #: bp-activity/bp-activity-admin.php:223 bp-activity/bp-activity-admin.php:277 +#: bp-core/admin/bp-core-admin-functions.php:470 #: bp-core/admin/bp-core-admin-functions.php:488 -#: bp-core/admin/bp-core-admin-functions.php:506 -#: bp-core/admin/bp-core-admin-functions.php:525 -#: bp-core/admin/bp-core-admin-functions.php:544 +#: bp-core/admin/bp-core-admin-functions.php:507 +#: bp-core/admin/bp-core-admin-functions.php:526 #: bp-groups/bp-groups-admin.php:115 bp-groups/bp-groups-admin.php:168 #: bp-members/classes/class-bp-members-admin.php:774 -#: bp-members/classes/class-bp-members-admin.php:1497 +#: bp-members/classes/class-bp-members-admin.php:1521 msgid "Overview" msgstr "" @@ -186,9 +189,8 @@ msgstr "" #: bp-activity/bp-activity-admin.php:235 msgid "" -"<strong>Link</strong> - Used by some types of activity (e.g blog posts and " -"comments, and forum topics and replies) to store a link back to the " -"original content." +"<strong>Link</strong> - Used by some types of activity (blog posts and " +"comments) to store a link back to the original content." msgstr "" #: bp-activity/bp-activity-admin.php:236 @@ -205,13 +207,13 @@ msgid "" msgstr "" #: bp-activity/bp-activity-admin.php:242 bp-activity/bp-activity-admin.php:294 +#: bp-core/admin/bp-core-admin-functions.php:476 #: bp-core/admin/bp-core-admin-functions.php:494 -#: bp-core/admin/bp-core-admin-functions.php:512 -#: bp-core/admin/bp-core-admin-functions.php:531 -#: bp-core/admin/bp-core-admin-functions.php:550 +#: bp-core/admin/bp-core-admin-functions.php:513 +#: bp-core/admin/bp-core-admin-functions.php:532 #: bp-groups/bp-groups-admin.php:123 bp-groups/bp-groups-admin.php:184 #: bp-members/classes/class-bp-members-admin.php:783 -#: bp-members/classes/class-bp-members-admin.php:1518 +#: bp-members/classes/class-bp-members-admin.php:1542 msgid "For more information:" msgstr "" @@ -223,13 +225,13 @@ msgid "" msgstr "" #: bp-activity/bp-activity-admin.php:244 bp-activity/bp-activity-admin.php:295 +#: bp-core/admin/bp-core-admin-functions.php:478 #: bp-core/admin/bp-core-admin-functions.php:496 -#: bp-core/admin/bp-core-admin-functions.php:514 -#: bp-core/admin/bp-core-admin-functions.php:533 -#: bp-core/admin/bp-core-admin-functions.php:552 +#: bp-core/admin/bp-core-admin-functions.php:515 +#: bp-core/admin/bp-core-admin-functions.php:534 #: bp-groups/bp-groups-admin.php:185 #: bp-members/classes/class-bp-members-admin.php:785 -#: bp-members/classes/class-bp-members-admin.php:1519 +#: bp-members/classes/class-bp-members-admin.php:1543 msgid "<a href=\"https://buddypress.org/support/\">Support Forums</a>" msgstr "" @@ -273,192 +275,192 @@ msgid "" "screen to show only related activity items." msgstr "" -#: bp-activity/bp-activity-admin.php:302 +#: bp-activity/bp-activity-admin.php:301 #. translators: accessibility text msgid "Activity list navigation" msgstr "" -#: bp-activity/bp-activity-admin.php:664 +#: bp-activity/bp-activity-admin.php:663 msgid "Editing Activity (ID #%s)" msgstr "" -#: bp-activity/bp-activity-admin.php:675 +#: bp-activity/bp-activity-admin.php:674 msgid "Action" msgstr "" -#: bp-activity/bp-activity-admin.php:679 +#: bp-activity/bp-activity-admin.php:678 #. translators: accessibility text msgid "Edit activity action" msgstr "" -#: bp-activity/bp-activity-admin.php:686 +#: bp-activity/bp-activity-admin.php:685 +#: bp-messages/classes/class-bp-messages-notices-admin.php:209 msgid "Content" msgstr "" -#: bp-activity/bp-activity-admin.php:690 +#: bp-activity/bp-activity-admin.php:689 #. translators: accessibility text msgid "Edit activity content" msgstr "" -#: bp-activity/bp-activity-admin.php:719 +#: bp-activity/bp-activity-admin.php:718 msgid "No activity found with this ID." msgstr "" -#: bp-activity/bp-activity-admin.php:721 bp-groups/bp-groups-admin.php:653 -#: bp-members/classes/class-bp-members-admin.php:1000 +#: bp-activity/bp-activity-admin.php:720 bp-groups/bp-groups-admin.php:665 +#: bp-members/classes/class-bp-members-admin.php:1024 msgid "Go back and try again." msgstr "" -#: bp-activity/bp-activity-admin.php:747 +#: bp-activity/bp-activity-admin.php:746 #: bp-activity/classes/class-bp-activity-list-table.php:690 msgid "View Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:755 +#: bp-activity/bp-activity-admin.php:754 msgid "Approved" msgstr "" -#: bp-activity/bp-activity-admin.php:756 +#: bp-activity/bp-activity-admin.php:755 #: bp-activity/classes/class-bp-activity-list-table.php:606 #: bp-activity/classes/class-bp-akismet.php:205 #: bp-activity/classes/class-bp-akismet.php:234 -#: bp-core/admin/bp-core-admin-functions.php:1033 +#: bp-core/admin/bp-core-admin-functions.php:1015 msgid "Spam" msgstr "" -#: bp-activity/bp-activity-admin.php:762 -#: bp-members/classes/class-bp-members-admin.php:1066 -#: bp-members/classes/class-bp-members-admin.php:1126 +#: bp-activity/bp-activity-admin.php:761 +#: bp-members/classes/class-bp-members-admin.php:1090 +#: bp-members/classes/class-bp-members-admin.php:1150 #. Translators: Publish box date format, see http:php.net/date. msgid "M j, Y @ G:i" msgstr "" -#: bp-activity/bp-activity-admin.php:765 +#: bp-activity/bp-activity-admin.php:764 msgid "Submitted on: %s" msgstr "" -#: bp-activity/bp-activity-admin.php:765 +#: bp-activity/bp-activity-admin.php:764 #: bp-activity/classes/class-bp-activity-list-table.php:599 -#: bp-forums/bp-forums-template.php:2781 #: bp-groups/classes/class-bp-groups-list-table.php:527 msgid "Edit" msgstr "" -#: bp-activity/bp-activity-admin.php:778 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1167 -#: bp-xprofile/classes/class-bp-xprofile-group.php:729 +#: bp-activity/bp-activity-admin.php:777 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1202 +#: bp-xprofile/classes/class-bp-xprofile-group.php:739 msgid "Update" msgstr "" -#: bp-activity/bp-activity-admin.php:800 +#: bp-activity/bp-activity-admin.php:799 #. translators: accessibility text msgid "Link" msgstr "" -#: bp-activity/bp-activity-admin.php:803 +#: bp-activity/bp-activity-admin.php:802 msgid "" -"Activity generated by posts and comments, forum topics and replies, and " -"some plugins, uses the link field for a permalink back to the content item." +"Activity generated by posts and comments uses the link field for a " +"permalink back to the content item." msgstr "" -#: bp-activity/bp-activity-admin.php:820 +#: bp-activity/bp-activity-admin.php:819 #. translators: accessibility text msgid "Author ID" msgstr "" -#: bp-activity/bp-activity-admin.php:890 +#: bp-activity/bp-activity-admin.php:889 msgid "" "This activity item has a type (%s) that is not registered using " "bp_activity_set_action(), so no label is available." msgstr "" -#: bp-activity/bp-activity-admin.php:898 +#: bp-activity/bp-activity-admin.php:897 #. translators: accessibility text msgid "Select activity type" msgstr "" -#: bp-activity/bp-activity-admin.php:919 +#: bp-activity/bp-activity-admin.php:918 msgid "Primary Item ID" msgstr "" -#: bp-activity/bp-activity-admin.php:923 +#: bp-activity/bp-activity-admin.php:922 msgid "Secondary Item ID" msgstr "" -#: bp-activity/bp-activity-admin.php:926 +#: bp-activity/bp-activity-admin.php:925 msgid "" "These identify the object that created this activity. For example, the " "fields could reference a pair of site and comment IDs." msgstr "" -#: bp-activity/bp-activity-admin.php:965 +#: bp-activity/bp-activity-admin.php:964 msgid "%s activity item has been permanently deleted." msgid_plural "%s activity items have been permanently deleted." msgstr[0] "" msgstr[1] "" -#: bp-activity/bp-activity-admin.php:969 +#: bp-activity/bp-activity-admin.php:968 msgid "An error occurred when trying to update activity ID #%s." msgstr "" -#: bp-activity/bp-activity-admin.php:972 +#: bp-activity/bp-activity-admin.php:971 msgid "Errors occurred when trying to update these activity items:" msgstr "" -#: bp-activity/bp-activity-admin.php:978 +#: bp-activity/bp-activity-admin.php:977 #. Translators: This is a bulleted list of item IDs. msgid "#%s" msgstr "" -#: bp-activity/bp-activity-admin.php:987 +#: bp-activity/bp-activity-admin.php:986 msgid "%s activity item has been successfully spammed." msgid_plural "%s activity items have been successfully spammed." msgstr[0] "" msgstr[1] "" -#: bp-activity/bp-activity-admin.php:990 +#: bp-activity/bp-activity-admin.php:989 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:993 +#: bp-activity/bp-activity-admin.php:992 msgid "The activity item has been updated successfully." msgstr "" -#: bp-activity/bp-activity-admin.php:1011 +#: bp-activity/bp-activity-admin.php:1010 msgid "Activity related to ID #%s" msgstr "" -#: bp-activity/bp-activity-admin.php:1017 bp-groups/bp-groups-admin.php:763 -#: bp-members/classes/class-bp-members-admin.php:1940 +#: bp-activity/bp-activity-admin.php:1016 bp-groups/bp-groups-admin.php:776 +#: bp-groups/bp-groups-admin.php:791 +#: bp-members/classes/class-bp-members-admin.php:1964 +#: bp-members/classes/class-bp-members-admin.php:1985 msgid "Search results for “%s”" msgstr "" -#: bp-activity/bp-activity-admin.php:1030 +#: bp-activity/bp-activity-admin.php:1029 msgid "Search all Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:1041 +#: bp-activity/bp-activity-admin.php:1040 msgid "Reply to Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:1044 -#: bp-activity/bp-activity-admin.php:1050 +#: bp-activity/bp-activity-admin.php:1043 +#: bp-activity/bp-activity-admin.php:1049 #: bp-activity/classes/class-bp-activity-list-table.php:593 -#: bp-templates/bp-legacy/buddypress/activity/comment.php:39 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:23 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:191 +#: bp-templates/bp-legacy/buddypress/activity/comment.php:40 #. translators: accessibility text msgid "Reply" msgstr "" -#: bp-activity/bp-activity-admin.php:1049 bp-groups/bp-groups-admin.php:710 -#: bp-members/classes/class-bp-members-admin.php:2140 -#: bp-templates/bp-legacy/buddypress/activity/entry.php:129 -#: bp-templates/bp-legacy/buddypress/forums/index.php:216 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1308 -#: bp-xprofile/classes/class-bp-xprofile-group.php:816 +#: bp-activity/bp-activity-admin.php:1048 bp-groups/bp-groups-admin.php:722 +#: bp-members/classes/class-bp-members-admin.php:2188 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:130 +#: bp-templates/bp-nouveau/includes/activity/functions.php:167 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1355 +#: bp-xprofile/classes/class-bp-xprofile-group.php:831 msgid "Cancel" msgstr "" @@ -466,70 +468,71 @@ msgstr "" msgid "Edit Activity" msgstr "" -#: bp-activity/bp-activity-embeds.php:289 +#: bp-activity/bp-activity-embeds.php:287 #. translators: By [oEmbed author] on [oEmbed provider]. eg. By BuddyPress on #. YouTube. msgid "By %1$s on %2$s" msgstr "" -#: bp-activity/bp-activity-embeds.php:292 +#: bp-activity/bp-activity-embeds.php:290 msgid "View on %s" msgstr "" -#: bp-activity/bp-activity-embeds.php:337 +#: bp-activity/bp-activity-embeds.php:335 msgid "Your browser does not support HTML5 video" msgstr "" -#: bp-activity/bp-activity-embeds.php:344 +#: bp-activity/bp-activity-embeds.php:342 msgid "Your browser does not support HTML5 audio" msgstr "" -#: bp-activity/bp-activity-filters.php:455 +#: bp-activity/bp-activity-filters.php:423 msgid "[Read more]" msgstr "" -#: bp-activity/bp-activity-filters.php:459 +#: bp-activity/bp-activity-filters.php:427 msgid "…" msgstr "" -#: bp-activity/bp-activity-filters.php:665 +#: bp-activity/bp-activity-filters.php:633 msgid "Load Newest" msgstr "" -#: bp-activity/bp-activity-functions.php:1441 +#: bp-activity/bp-activity-functions.php:1447 msgid "Posted a status update" msgstr "" -#: bp-activity/bp-activity-functions.php:1443 +#: bp-activity/bp-activity-functions.php:1449 msgid "Updates" msgstr "" -#: bp-activity/bp-activity-functions.php:1450 +#: bp-activity/bp-activity-functions.php:1456 msgid "Replied to a status update" msgstr "" -#: bp-activity/bp-activity-functions.php:1452 +#: bp-activity/bp-activity-functions.php:1458 msgid "Activity Comments" msgstr "" -#: bp-activity/bp-activity-functions.php:1520 +#: bp-activity/bp-activity-functions.php:1526 msgid "%s posted an update" msgstr "" -#: bp-activity/bp-activity-functions.php:1543 +#: bp-activity/bp-activity-functions.php:1549 msgid "%s posted a new activity comment" msgstr "" -#: bp-activity/bp-activity-functions.php:2584 -#: bp-templates/bp-legacy/buddypress-functions.php:1022 +#: bp-activity/bp-activity-functions.php:2590 +#: bp-templates/bp-legacy/buddypress-functions.php:1036 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:328 msgid "There was an error posting your reply. Please try again." msgstr "" -#: bp-activity/bp-activity-functions.php:2612 +#: bp-activity/bp-activity-functions.php:2618 msgid "The item you were replying to no longer exists." msgstr "" -#: bp-activity/bp-activity-functions.php:3161 +#: bp-activity/bp-activity-functions.php:3227 msgid "Thumbnail" msgstr "" @@ -569,55 +572,65 @@ msgstr "" msgid "%1$s replied to one your activity comments" msgstr "" -#: bp-activity/bp-activity-screens.php:276 -msgid "You do not have access to this activity." -msgstr "" - -#: bp-activity/bp-activity-screens.php:327 +#: bp-activity/bp-activity-notifications.php:365 #: bp-activity/classes/class-bp-activity-oembed-extension.php:138 #: bp-activity/classes/class-bp-activity-theme-compat.php:161 msgid "Activity" msgstr "" -#: bp-activity/bp-activity-screens.php:328 bp-blogs/bp-blogs-template.php:1114 -#: bp-friends/bp-friends-screens.php:116 bp-groups/bp-groups-screens.php:1479 -#: bp-messages/bp-messages-screens.php:228 -#: bp-templates/bp-legacy/buddypress/members/register.php:317 +#: bp-activity/bp-activity-notifications.php:366 +#: bp-blogs/bp-blogs-template.php:1114 +#: bp-friends/bp-friends-notifications.php:252 +#: bp-groups/bp-groups-notifications.php:1085 +#: bp-messages/bp-messages-notifications.php:264 +#: bp-templates/bp-legacy/buddypress/members/register.php:318 +#: bp-templates/bp-nouveau/includes/functions.php:1187 msgid "Yes" msgstr "" -#: bp-activity/bp-activity-screens.php:329 bp-blogs/bp-blogs-template.php:1118 -#: bp-friends/bp-friends-screens.php:117 bp-groups/bp-groups-screens.php:1480 -#: bp-messages/bp-messages-screens.php:229 -#: bp-templates/bp-legacy/buddypress/members/register.php:318 +#: bp-activity/bp-activity-notifications.php:367 +#: bp-blogs/bp-blogs-template.php:1118 +#: bp-friends/bp-friends-notifications.php:253 +#: bp-groups/bp-groups-notifications.php:1086 +#: bp-messages/bp-messages-notifications.php:265 +#: bp-templates/bp-legacy/buddypress/members/register.php:319 +#: bp-templates/bp-nouveau/includes/functions.php:1195 msgid "No" msgstr "" -#: bp-activity/bp-activity-screens.php:337 +#: bp-activity/bp-activity-notifications.php:375 msgid "A member mentions you in an update using \"@%s\"" msgstr "" -#: bp-activity/bp-activity-screens.php:340 -#: bp-activity/bp-activity-screens.php:354 -#: bp-friends/bp-friends-screens.php:127 bp-friends/bp-friends-screens.php:139 -#: bp-groups/bp-groups-screens.php:1490 bp-groups/bp-groups-screens.php:1502 -#: bp-groups/bp-groups-screens.php:1514 bp-groups/bp-groups-screens.php:1526 -#: bp-groups/bp-groups-screens.php:1538 bp-messages/bp-messages-screens.php:239 +#: bp-activity/bp-activity-notifications.php:378 +#: bp-activity/bp-activity-notifications.php:392 +#: bp-friends/bp-friends-notifications.php:263 +#: bp-friends/bp-friends-notifications.php:275 +#: bp-groups/bp-groups-notifications.php:1096 +#: bp-groups/bp-groups-notifications.php:1108 +#: bp-groups/bp-groups-notifications.php:1120 +#: bp-groups/bp-groups-notifications.php:1132 +#: bp-groups/bp-groups-notifications.php:1144 +#: bp-messages/bp-messages-notifications.php:275 #. translators: accessibility text msgid "Yes, send email" msgstr "" -#: bp-activity/bp-activity-screens.php:344 -#: bp-activity/bp-activity-screens.php:358 -#: bp-friends/bp-friends-screens.php:131 bp-friends/bp-friends-screens.php:143 -#: bp-groups/bp-groups-screens.php:1494 bp-groups/bp-groups-screens.php:1506 -#: bp-groups/bp-groups-screens.php:1518 bp-groups/bp-groups-screens.php:1530 -#: bp-groups/bp-groups-screens.php:1542 bp-messages/bp-messages-screens.php:243 +#: bp-activity/bp-activity-notifications.php:382 +#: bp-activity/bp-activity-notifications.php:396 +#: bp-friends/bp-friends-notifications.php:267 +#: bp-friends/bp-friends-notifications.php:279 +#: bp-groups/bp-groups-notifications.php:1100 +#: bp-groups/bp-groups-notifications.php:1112 +#: bp-groups/bp-groups-notifications.php:1124 +#: bp-groups/bp-groups-notifications.php:1136 +#: bp-groups/bp-groups-notifications.php:1148 +#: bp-messages/bp-messages-notifications.php:279 #. translators: accessibility text msgid "No, do not send email" msgstr "" -#: bp-activity/bp-activity-screens.php:351 +#: bp-activity/bp-activity-notifications.php:389 msgid "A member replies to an update or comment you've posted" msgstr "" @@ -634,25 +647,23 @@ msgstr[1] "" #: bp-activity/bp-activity-template.php:1037 #: bp-activity/bp-activity-template.php:1206 #: bp-activity/bp-activity-template.php:1217 -#: bp-activity/classes/class-bp-activity-component.php:359 -#: bp-blogs/classes/class-bp-blogs-component.php:294 -#: bp-core/deprecated/2.1.php:459 bp-forums/bp-forums-loader.php:263 -#: bp-forums/bp-forums-template.php:893 bp-forums/bp-forums-template.php:1224 -#: bp-forums/bp-forums-template.php:2611 -#: bp-friends/classes/class-bp-friends-component.php:269 -#: bp-groups/bp-groups-template.php:1635 bp-groups/bp-groups-template.php:1667 -#: bp-groups/bp-groups-template.php:2434 bp-groups/bp-groups-template.php:2450 -#: bp-groups/bp-groups-template.php:2510 bp-groups/bp-groups-template.php:2526 -#: bp-groups/bp-groups-template.php:3975 bp-groups/bp-groups-template.php:4014 -#: bp-groups/bp-groups-template.php:4055 bp-groups/bp-groups-template.php:5625 -#: bp-groups/classes/class-bp-groups-component.php:817 +#: bp-activity/classes/class-bp-activity-component.php:413 +#: bp-blogs/classes/class-bp-blogs-component.php:332 +#: bp-core/deprecated/2.1.php:459 +#: bp-friends/classes/class-bp-friends-component.php:299 +#: bp-groups/bp-groups-template.php:1631 bp-groups/bp-groups-template.php:1663 +#: bp-groups/bp-groups-template.php:2273 bp-groups/bp-groups-template.php:2289 +#: bp-groups/bp-groups-template.php:2349 bp-groups/bp-groups-template.php:2365 +#: bp-groups/bp-groups-template.php:3754 bp-groups/bp-groups-template.php:3793 +#: bp-groups/bp-groups-template.php:3834 bp-groups/bp-groups-template.php:5415 +#: bp-groups/classes/class-bp-groups-component.php:868 #: bp-members/bp-members-template.php:804 #: bp-members/bp-members-template.php:1558 #: bp-members/bp-members-template.php:1613 -#: bp-members/classes/class-bp-members-component.php:381 +#: bp-members/classes/class-bp-members-component.php:428 #: bp-messages/bp-messages-template.php:726 -#: bp-messages/classes/class-bp-messages-component.php:347 -#: bp-notifications/classes/class-bp-notifications-component.php:263 +#: bp-messages/classes/class-bp-messages-component.php:410 +#: bp-notifications/classes/class-bp-notifications-component.php:293 msgid "Profile picture of %s" msgstr "" @@ -665,7 +676,7 @@ msgid "Group logo" msgstr "" #: bp-activity/bp-activity-template.php:1185 -#: bp-groups/bp-groups-template.php:792 +#: bp-groups/bp-groups-template.php:790 #: bp-groups/classes/class-bp-groups-list-table.php:554 msgid "Group logo of %s" msgstr "" @@ -678,15 +689,15 @@ msgstr "" msgid "View Discussion" msgstr "" -#: bp-activity/bp-activity-template.php:2170 +#: bp-activity/bp-activity-template.php:2172 msgid "" "%1$s no longer accepts arguments. See the inline documentation at %2$s for " "more details." msgstr "" -#: bp-activity/bp-activity-template.php:2640 -#: bp-core/bp-core-attachments.php:724 bp-forums/bp-forums-template.php:2782 -#: bp-groups/classes/class-bp-groups-component.php:694 +#: bp-activity/bp-activity-template.php:2642 +#: bp-core/bp-core-attachments.php:777 +#: bp-groups/classes/class-bp-groups-component.php:745 #: bp-groups/classes/class-bp-groups-list-table.php:371 #: bp-groups/classes/class-bp-groups-list-table.php:530 #: bp-members/classes/class-bp-members-list-table.php:171 @@ -696,44 +707,45 @@ msgstr "" #: bp-messages/bp-messages-template.php:1039 #: bp-notifications/bp-notifications-template.php:784 #: bp-notifications/bp-notifications-template.php:1034 -#: bp-templates/bp-legacy/buddypress/activity/comment.php:45 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:147 -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:44 +#: 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:45 #: bp-xprofile/classes/class-bp-xprofile-field-type.php:405 msgid "Delete" msgstr "" -#: bp-activity/bp-activity-template.php:2745 -#: bp-core/admin/bp-core-admin-functions.php:1039 +#: bp-activity/bp-activity-template.php:2747 +#: bp-core/admin/bp-core-admin-functions.php:1021 #: bp-core/admin/bp-core-admin-slugs.php:148 #: bp-core/admin/bp-core-admin-slugs.php:219 #: bp-groups/classes/class-bp-groups-list-table.php:533 #: bp-members/bp-members-template.php:1048 #: bp-templates/bp-legacy/buddypress-functions.php:305 +#: bp-templates/bp-nouveau/buddypress-functions.php:423 msgid "View" msgstr "" -#: bp-activity/bp-activity-template.php:2854 +#: bp-activity/bp-activity-template.php:2856 msgid "Clear Filter" msgstr "" -#: bp-activity/bp-activity-template.php:3164 +#: bp-activity/bp-activity-template.php:3166 msgid "a user" msgstr "" -#: bp-activity/bp-activity-template.php:3221 +#: bp-activity/bp-activity-template.php:3223 msgid "Public Message" msgstr "" -#: bp-activity/bp-activity-template.php:3813 +#: bp-activity/bp-activity-template.php:3815 msgid "Site Wide Activity RSS Feed" msgstr "" #: bp-activity/classes/class-bp-activity-activity.php:365 #: bp-activity/classes/class-bp-activity-template.php:144 -#: bp-groups/bp-groups-functions.php:236 bp-groups/bp-groups-functions.php:667 +#: bp-groups/bp-groups-functions.php:245 bp-groups/bp-groups-functions.php:695 #: bp-groups/classes/class-bp-groups-group-members-template.php:99 -#: bp-groups/classes/class-bp-groups-group.php:1041 +#: bp-groups/classes/class-bp-groups-group.php:1051 #: bp-groups/classes/class-bp-groups-invite-template.php:84 #: bp-groups/classes/class-bp-groups-membership-requests-template.php:91 #: bp-groups/classes/class-bp-groups-template.php:134 @@ -746,11 +758,11 @@ msgid "" msgstr "" #: bp-activity/classes/class-bp-activity-component.php:30 -#: bp-core/bp-core-functions.php:2490 +#: bp-core/bp-core-functions.php:2480 msgid "Activity Streams" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:131 +#: bp-activity/classes/class-bp-activity-component.php:185 msgid "Search Activity..." msgstr "" @@ -791,13 +803,13 @@ msgstr "" #: bp-activity/classes/class-bp-activity-list-table.php:344 #: bp-activity/classes/class-bp-activity-list-table.php:604 -#: bp-core/admin/bp-core-admin-functions.php:1027 +#: bp-core/admin/bp-core-admin-functions.php:1009 msgid "Not Spam" msgstr "" #: bp-activity/classes/class-bp-activity-list-table.php:345 #: bp-activity/classes/class-bp-activity-list-table.php:609 -#: bp-groups/bp-groups-admin.php:709 +#: bp-groups/bp-groups-admin.php:721 msgid "Delete Permanently" msgstr "" @@ -829,6 +841,7 @@ msgstr "" #: bp-activity/classes/class-bp-activity-list-table.php:609 #: bp-core/bp-core-cssjs.php:165 +#: bp-templates/bp-nouveau/buddypress-functions.php:416 msgid "Are you sure?" msgstr "" @@ -867,32 +880,36 @@ msgstr "" msgid "History" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:432 +#: bp-activity/classes/class-bp-akismet.php:445 msgid "%s reported this activity as spam" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:449 +#: bp-activity/classes/class-bp-akismet.php:462 msgid "%s reported this activity as not spam" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:473 +#: bp-activity/classes/class-bp-akismet.php:486 msgid "Akismet caught this item as spam" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:478 +#: bp-activity/classes/class-bp-akismet.php:491 msgid "Akismet cleared this item" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:483 +#: bp-activity/classes/class-bp-akismet.php:496 msgid "" "Akismet was unable to check this item (response: %s), will automatically " "retry again later." msgstr "" -#: bp-activity/classes/class-bp-akismet.php:588 +#: bp-activity/classes/class-bp-akismet.php:601 msgid "Activity History" msgstr "" +#: bp-activity/screens/permalink.php:149 +msgid "You do not have access to this activity." +msgstr "" + #: bp-blogs/bp-blogs-activity.php:25 msgid "New site created" msgstr "" @@ -906,7 +923,6 @@ msgid "New post published" msgstr "" #: bp-blogs/bp-blogs-activity.php:79 -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:53 msgid "Posts" msgstr "" @@ -961,15 +977,19 @@ msgid "Site icon for %s" msgstr "" #: bp-blogs/bp-blogs-template.php:624 -#: bp-core/classes/class-bp-core-user.php:177 +#: bp-core/classes/class-bp-core-user.php:172 #: bp-groups/bp-groups-widgets.php:72 #: bp-groups/classes/class-bp-groups-invite-template.php:240 #: bp-groups/classes/class-bp-groups-widget.php:147 #: bp-members/bp-members-template.php:963 #: bp-members/bp-members-template.php:1695 -#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:66 -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:62 -#: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:71 +#: 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 +#. translators: %s = last activity timestamp (e.g. "active 1 hour ago") msgid "active %s" msgstr "" @@ -1052,9 +1072,10 @@ msgid "<a href=\"%1$s\">Log in</a> as \"%2$s\" using your existing password." msgstr "" #: bp-blogs/bp-blogs-template.php:1269 bp-blogs/bp-blogs-template.php:1355 -#: bp-blogs/classes/class-bp-blogs-component.php:264 +#: 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:3206 +#: bp-core/bp-core-template.php:3131 +#: bp-templates/bp-nouveau/includes/blogs/functions.php:51 msgid "Create a Site" msgstr "" @@ -1070,11 +1091,11 @@ msgstr "" msgid "%s's Recent Comments" msgstr "" -#: bp-blogs/bp-blogs-template.php:1315 bp-core/deprecated/1.5.php:426 -#: bp-forums/bp-forums-template.php:2925 bp-groups/bp-groups-template.php:5282 +#: bp-blogs/bp-blogs-template.php:1315 bp-core/deprecated/1.5.php:413 +#: bp-groups/bp-groups-template.php:5074 #: bp-members/bp-members-template.php:1273 #: bp-messages/bp-messages-template.php:859 -#: bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php:14 +#: bp-templates/bp-legacy/buddypress/common/search/dir-search-form.php:15 msgid "Search" msgstr "" @@ -1096,19 +1117,20 @@ msgstr "" msgid "Search sites..." msgstr "" -#: bp-blogs/classes/class-bp-blogs-component.php:185 +#: bp-blogs/classes/class-bp-blogs-component.php:223 #. translators: %s: Site count for the current user msgid "Sites %s" msgstr "" -#: bp-blogs/classes/class-bp-blogs-component.php:202 -#: bp-blogs/classes/class-bp-blogs-component.php:254 -#: bp-blogs/classes/class-bp-blogs-component.php:285 +#: bp-blogs/classes/class-bp-blogs-component.php:240 +#: bp-blogs/classes/class-bp-blogs-component.php:292 +#: bp-blogs/classes/class-bp-blogs-component.php:323 #: bp-core/deprecated/2.1.php:62 +#: bp-templates/bp-nouveau/includes/blogs/functions.php:38 msgid "My Sites" msgstr "" -#: bp-blogs/classes/class-bp-blogs-component.php:246 +#: bp-blogs/classes/class-bp-blogs-component.php:284 #: bp-blogs/classes/class-bp-blogs-theme-compat.php:113 #: bp-blogs/classes/class-bp-blogs-theme-compat.php:177 msgid "Sites" @@ -1136,123 +1158,119 @@ msgid "Max posts to show:" msgstr "" #: bp-core/admin/bp-core-admin-components.php:24 -#: bp-core/admin/bp-core-admin-settings.php:301 +#: bp-core/admin/bp-core-admin-settings.php:267 #: bp-core/admin/bp-core-admin-slugs.php:24 +#: bp-core/classes/class-bp-admin.php:732 msgid "BuddyPress Settings" msgstr "" #: bp-core/admin/bp-core-admin-components.php:26 -#: bp-core/admin/bp-core-admin-functions.php:431 +#: bp-core/admin/bp-core-admin-functions.php:422 msgid "Components" msgstr "" #: bp-core/admin/bp-core-admin-components.php:32 -#: bp-core/admin/bp-core-admin-settings.php:312 +#: bp-core/admin/bp-core-admin-settings.php:278 #: bp-core/admin/bp-core-admin-slugs.php:32 -#: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:67 +#: 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:2474 +#: bp-core/bp-core-functions.php:2464 msgid "Extended Profiles" msgstr "" #: bp-core/admin/bp-core-admin-components.php:68 -#: bp-core/bp-core-functions.php:2475 +#: bp-core/bp-core-functions.php:2465 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:2478 +#: bp-core/bp-core-functions.php:2468 msgid "Account Settings" msgstr "" #: bp-core/admin/bp-core-admin-components.php:72 -#: bp-core/bp-core-functions.php:2479 +#: bp-core/bp-core-functions.php:2469 msgid "" "Allow your users to modify their account and notification settings directly " "from within their profiles." msgstr "" #: bp-core/admin/bp-core-admin-components.php:75 -#: bp-core/bp-core-functions.php:2494 bp-core/deprecated/2.1.php:530 -#: bp-notifications/classes/class-bp-notifications-component.php:258 -#: bp-templates/bp-legacy/buddypress/members/single/notifications/read.php:15 +#: bp-core/bp-core-functions.php:2484 bp-core/deprecated/2.1.php:530 +#: bp-notifications/classes/class-bp-notifications-component.php:288 +#: bp-templates/bp-legacy/buddypress/members/single/notifications/read.php:16 #. translators: accessibility text msgid "Notifications" msgstr "" #: bp-core/admin/bp-core-admin-components.php:76 -#: bp-core/bp-core-functions.php:2495 +#: bp-core/bp-core-functions.php:2485 msgid "" "Notify members of relevant activity with a toolbar bubble and/or via email, " "and allow them to customize their notification settings." msgstr "" -#: bp-core/admin/bp-core-admin-components.php:154 +#: bp-core/admin/bp-core-admin-components.php:149 #. translators: accessibility text msgid "Filter components list" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:159 +#: bp-core/admin/bp-core-admin-components.php:154 msgid "Active <span class=\"count\">(%s)</span>" msgid_plural "Active <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" -#: bp-core/admin/bp-core-admin-components.php:160 +#: bp-core/admin/bp-core-admin-components.php:155 msgid "Inactive <span class=\"count\">(%s)</span>" msgid_plural "Inactive <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" -#: bp-core/admin/bp-core-admin-components.php:161 +#: bp-core/admin/bp-core-admin-components.php:156 msgid "Must-Use <span class=\"count\">(%s)</span>" msgid_plural "Must-Use <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" -#: bp-core/admin/bp-core-admin-components.php:162 +#: bp-core/admin/bp-core-admin-components.php:157 msgid "Retired <span class=\"count\">(%s)</span>" msgid_plural "Retired <span class=\"count\">(%s)</span>" msgstr[0] "" msgstr[1] "" -#: bp-core/admin/bp-core-admin-components.php:167 +#: bp-core/admin/bp-core-admin-components.php:162 #. translators: accessibility text msgid "Components list" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:175 -#: bp-core/admin/bp-core-admin-components.php:241 +#: bp-core/admin/bp-core-admin-components.php:171 +#: bp-core/admin/bp-core-admin-components.php:234 #. translators: accessibility text -msgid "Bulk selection is disabled" +msgid "Enable or disable all optional components in bulk" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:177 -#: bp-core/admin/bp-core-admin-components.php:243 +#: bp-core/admin/bp-core-admin-components.php:173 +#: bp-core/admin/bp-core-admin-components.php:236 msgid "Component" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:178 -#: bp-core/admin/bp-core-admin-components.php:244 +#: bp-core/admin/bp-core-admin-components.php:174 +#: bp-core/admin/bp-core-admin-components.php:237 msgid "Description" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:201 +#: bp-core/admin/bp-core-admin-components.php:197 #. translators: accessibility text msgid "Select %s" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:207 -#. translators: accessibility text -msgid "%s is a required component" -msgstr "" - -#: bp-core/admin/bp-core-admin-components.php:230 +#: bp-core/admin/bp-core-admin-components.php:222 msgid "No components found." msgstr "" @@ -1286,7 +1304,7 @@ msgstr "" #: bp-members/classes/class-bp-members-list-table.php:315 #: bp-members/classes/class-bp-members-ms-list-table.php:308 #: bp-messages/bp-messages-template.php:1276 -#: bp-templates/bp-legacy/buddypress/members/activate.php:59 +#: bp-templates/bp-legacy/buddypress/members/activate.php:60 msgid "Activate" msgstr "" @@ -1297,72 +1315,68 @@ msgstr "" msgid "Register" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:305 +#: bp-core/admin/bp-core-admin-functions.php:296 msgid "" "The following active BuddyPress Components do not have associated WordPress " "Pages: %s." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:309 -#: bp-core/admin/bp-core-admin-functions.php:339 -#: bp-core/admin/bp-core-admin-settings.php:274 +#: bp-core/admin/bp-core-admin-functions.php:300 +#: bp-core/admin/bp-core-admin-functions.php:330 msgid "Repair" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:335 +#: bp-core/admin/bp-core-admin-functions.php:326 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:435 -#: bp-core/admin/bp-core-admin-slugs.php:26 -msgid "Pages" -msgstr "" - -#: bp-core/admin/bp-core-admin-functions.php:439 -#: bp-core/admin/bp-core-admin-settings.php:303 +#: bp-core/admin/bp-core-admin-functions.php:426 +#: bp-core/admin/bp-core-admin-settings.php:269 #: bp-core/bp-core-template.php:120 msgid "Options" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:452 -#: bp-forums/bp-forums-loader.php:159 bp-forums/bp-forums-loader.php:214 -#: bp-forums/bp-forums-loader.php:258 bp-forums/bp-forums-screens.php:301 -#: bp-forums/bp-forums-screens.php:303 bp-forums/deprecated/1.6.php:39 -#: bp-forums/deprecated/1.7.php:101 -msgid "Forums" +#: bp-core/admin/bp-core-admin-functions.php:430 +#: bp-core/admin/bp-core-admin-slugs.php:26 +msgid "Pages" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:495 +#: bp-core/admin/bp-core-admin-functions.php:434 +#: bp-core/classes/class-bp-admin.php:734 +msgid "Credits" +msgstr "" + +#: bp-core/admin/bp-core-admin-functions.php:477 msgid "" "<a " -"href=\"https://codex.buddypress.org/getting-started/configure-components/\">" -"Managing Components</a>" +"href=\"https://codex.buddypress.org/getting-started/configure-components/\"" +">Managing Components</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:513 +#: bp-core/admin/bp-core-admin-functions.php:495 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:514 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:551 +#: bp-core/admin/bp-core-admin-functions.php:533 msgid "" "<a " "href=\"https://codex.buddypress.org/administrator-guide/extended-profiles/\"" ">Managing Profile Fields</a>" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:575 +#: bp-core/admin/bp-core-admin-functions.php:557 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 " @@ -1371,26 +1385,26 @@ msgid "" "using the site." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:579 +#: bp-core/admin/bp-core-admin-functions.php:561 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:583 +#: bp-core/admin/bp-core-admin-functions.php:565 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:587 +#: bp-core/admin/bp-core-admin-functions.php:569 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:587 +#: bp-core/admin/bp-core-admin-functions.php:569 msgid "Note: Any fields in the first group will appear on the signup page." msgstr "" @@ -1398,70 +1412,70 @@ msgstr "" msgid "BuddyPress" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:780 -#: bp-core/admin/bp-core-admin-functions.php:789 +#: bp-core/admin/bp-core-admin-functions.php:762 +#: bp-core/admin/bp-core-admin-functions.php:771 msgid "Logged-In" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:783 -#: bp-core/admin/bp-core-admin-functions.php:798 +#: bp-core/admin/bp-core-admin-functions.php:765 +#: bp-core/admin/bp-core-admin-functions.php:780 msgid "Logged-Out" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:790 +#: bp-core/admin/bp-core-admin-functions.php:772 msgid "" "<em>Logged-In</em> links are relative to the current user, and are not " "visible to visitors who are not logged in." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:799 +#: bp-core/admin/bp-core-admin-functions.php:781 msgid "<em>Logged-Out</em> links are not visible to users who are logged in." msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:828 +#: bp-core/admin/bp-core-admin-functions.php:810 msgid "Select All" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:831 +#: bp-core/admin/bp-core-admin-functions.php:813 msgid "Add to Menu" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:866 +#: bp-core/admin/bp-core-admin-functions.php:848 msgid "" -"Are your emails in the wrong language? Go to <a href=\"%s\">BuddyPress " -"Tools and run the \"reinstall emails\"</a> tool." +"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 "" -#: bp-core/admin/bp-core-admin-functions.php:886 +#: bp-core/admin/bp-core-admin-functions.php:868 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:929 +#: bp-core/admin/bp-core-admin-functions.php:911 msgid "Choose when this email will be sent." msgstr "" +#: bp-core/admin/bp-core-admin-functions.php:924 #: bp-core/admin/bp-core-admin-functions.php:942 -#: bp-core/admin/bp-core-admin-functions.php:960 #. translators: accessibility text msgid "Plain text email content" msgstr "" -#: bp-core/admin/bp-core-admin-functions.php:963 +#: bp-core/admin/bp-core-admin-functions.php:945 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:1091 -#: bp-members/bp-members-actions.php:55 +#: bp-core/admin/bp-core-admin-functions.php:1073 +#: 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:1093 +#: bp-core/admin/bp-core-admin-functions.php:1075 msgid "User removed from spam." msgstr "" @@ -1486,7 +1500,7 @@ msgid "Allow Akismet to scan for activity stream spam" msgstr "" #: bp-core/admin/bp-core-admin-settings.php:115 -msgid "Allow activity stream commenting on blog and forum posts" +msgid "Allow activity stream commenting on posts and comments" msgstr "" #: bp-core/admin/bp-core-admin-settings.php:129 @@ -1521,14 +1535,6 @@ msgstr "" msgid "Allow customizable cover images for groups" msgstr "" -#: bp-core/admin/bp-core-admin-settings.php:275 -msgid "File does not exist" -msgstr "" - -#: bp-core/admin/bp-core-admin-settings.php:279 -msgid "Absolute path to your bbPress configuration file." -msgstr "" - #: bp-core/admin/bp-core-admin-slugs.php:121 msgid "Directories" msgstr "" @@ -1568,7 +1574,7 @@ msgstr "" #: bp-core/admin/bp-core-admin-tools.php:22 #: bp-core/admin/bp-core-admin-tools.php:407 #: bp-core/admin/bp-core-admin-tools.php:410 -#: bp-core/classes/class-bp-admin.php:296 +#: bp-core/classes/class-bp-admin.php:291 msgid "BuddyPress Tools" msgstr "" @@ -1656,8 +1662,8 @@ msgid "Determining last activity dates for each user… %s" msgstr "" #: bp-core/admin/bp-core-admin-tools.php:378 -#: bp-core/classes/class-bp-admin.php:273 -#: bp-core/classes/class-bp-admin.php:274 +#: bp-core/classes/class-bp-admin.php:268 +#: bp-core/classes/class-bp-admin.php:269 msgid "Tools" msgstr "" @@ -1678,7 +1684,7 @@ msgid "" "the \"Repopulate site tracking records\" option." msgstr "" -#: bp-core/bp-core-admin.php:25 +#: bp-core/bp-core-admin.php:25 bp-core/classes/class-bp-admin.php:574 msgid "Maintenance Release" msgid_plural "Maintenance Releases" msgstr[0] "" @@ -1703,7 +1709,7 @@ msgid_plural "<strong>Version %1$s</strong> addressed some security issues." msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-admin.php:37 +#: bp-core/bp-core-admin.php:37 bp-core/classes/class-bp-admin.php:579 #. translators: 1: BuddyPress version number, 2: plural number of bugs. msgid "<strong>Version %1$s</strong> addressed %2$s bug." msgid_plural "<strong>Version %1$s</strong> addressed %2$s bugs." @@ -1740,161 +1746,161 @@ msgstr "" msgid "My Account" msgstr "" -#: bp-core/bp-core-adminbar.php:62 +#: bp-core/bp-core-adminbar.php:60 msgid "" "The BuddyBar is no longer supported. Please migrate to the WordPress " "toolbar as soon as possible." msgstr "" -#: bp-core/bp-core-attachments.php:597 +#: bp-core/bp-core-attachments.php:650 msgid "You have attempted to queue too many files." msgstr "" -#: bp-core/bp-core-attachments.php:598 +#: bp-core/bp-core-attachments.php:651 msgid "%s exceeds the maximum upload size for this site." msgstr "" -#: bp-core/bp-core-attachments.php:599 +#: bp-core/bp-core-attachments.php:652 msgid "This file is empty. Please try another." msgstr "" -#: bp-core/bp-core-attachments.php:600 +#: bp-core/bp-core-attachments.php:653 msgid "This file type is not allowed. Please try another." msgstr "" -#: bp-core/bp-core-attachments.php:601 +#: bp-core/bp-core-attachments.php:654 msgid "This file is not an image. Please try another." msgstr "" -#: bp-core/bp-core-attachments.php:602 +#: bp-core/bp-core-attachments.php:655 msgid "Memory exceeded. Please try another smaller file." msgstr "" -#: bp-core/bp-core-attachments.php:603 +#: bp-core/bp-core-attachments.php:656 msgid "This is larger than the maximum size. Please try another." msgstr "" -#: bp-core/bp-core-attachments.php:604 +#: bp-core/bp-core-attachments.php:657 msgid "An error occurred. Please try again later." msgstr "" -#: bp-core/bp-core-attachments.php:605 +#: bp-core/bp-core-attachments.php:658 msgid "There was a configuration error. Please contact the server administrator." msgstr "" -#: bp-core/bp-core-attachments.php:606 +#: bp-core/bp-core-attachments.php:659 msgid "You may only upload 1 file." msgstr "" -#: bp-core/bp-core-attachments.php:607 +#: bp-core/bp-core-attachments.php:660 msgid "HTTP error." msgstr "" -#: bp-core/bp-core-attachments.php:608 bp-core/bp-core-avatars.php:1061 +#: bp-core/bp-core-attachments.php:661 bp-core/bp-core-avatars.php:1059 msgid "Upload failed." msgstr "" -#: bp-core/bp-core-attachments.php:609 +#: bp-core/bp-core-attachments.php:662 msgid "Please try uploading this file with the %1$sbrowser uploader%2$s." msgstr "" -#: bp-core/bp-core-attachments.php:610 +#: bp-core/bp-core-attachments.php:663 msgid "" "%s exceeds the maximum upload size for the multi-file uploader when used in " "your browser." msgstr "" -#: bp-core/bp-core-attachments.php:611 +#: bp-core/bp-core-attachments.php:664 msgid "IO error." msgstr "" -#: bp-core/bp-core-attachments.php:612 +#: bp-core/bp-core-attachments.php:665 msgid "Security error." msgstr "" -#: bp-core/bp-core-attachments.php:613 +#: bp-core/bp-core-attachments.php:666 msgid "File canceled." msgstr "" -#: bp-core/bp-core-attachments.php:614 +#: bp-core/bp-core-attachments.php:667 msgid "Upload stopped." msgstr "" -#: bp-core/bp-core-attachments.php:615 +#: bp-core/bp-core-attachments.php:668 msgid "Dismiss" msgstr "" -#: bp-core/bp-core-attachments.php:616 +#: bp-core/bp-core-attachments.php:669 msgid "Crunching…" msgstr "" -#: bp-core/bp-core-attachments.php:617 +#: bp-core/bp-core-attachments.php:670 msgid "Make sure to upload a unique file" msgstr "" -#: bp-core/bp-core-attachments.php:618 +#: bp-core/bp-core-attachments.php:671 msgid "“%s” has failed to upload." msgstr "" -#: bp-core/bp-core-attachments.php:619 +#: bp-core/bp-core-attachments.php:672 msgid "" "If you'd like to delete the existing profile photo but not upload a new " "one, please use the delete tab." msgstr "" -#: bp-core/bp-core-attachments.php:721 +#: bp-core/bp-core-attachments.php:774 msgid "Upload" msgstr "" -#: bp-core/bp-core-attachments.php:729 +#: bp-core/bp-core-attachments.php:782 msgid "Take Photo" msgstr "" -#: bp-core/bp-core-attachments.php:733 +#: bp-core/bp-core-attachments.php:786 msgid "Please allow us to access to your camera." msgstr "" -#: bp-core/bp-core-attachments.php:734 +#: bp-core/bp-core-attachments.php:787 msgid "Please wait as we access your camera." msgstr "" -#: bp-core/bp-core-attachments.php:735 +#: bp-core/bp-core-attachments.php:788 msgid "Camera loaded. Click on the \"Capture\" button to take your photo." msgstr "" -#: bp-core/bp-core-attachments.php:736 +#: bp-core/bp-core-attachments.php:789 msgid "" "It looks like you do not have a webcam or we were unable to get permission " "to use your webcam. Please upload a photo instead." msgstr "" -#: bp-core/bp-core-attachments.php:737 +#: bp-core/bp-core-attachments.php:790 msgid "Your browser is not supported. Please upload a photo instead." msgstr "" -#: bp-core/bp-core-attachments.php:738 +#: bp-core/bp-core-attachments.php:791 msgid "Video error. Please upload a photo instead." msgstr "" -#: bp-core/bp-core-attachments.php:739 +#: bp-core/bp-core-attachments.php:792 msgid "Your profile photo is ready. Click on the \"Save\" button to use this photo." msgstr "" -#: bp-core/bp-core-attachments.php:740 +#: bp-core/bp-core-attachments.php:793 msgid "No photo was captured. Click on the \"Capture\" button to take your photo." msgstr "" -#: bp-core/bp-core-attachments.php:787 +#: bp-core/bp-core-attachments.php:840 msgid "" "For better results, make sure to upload an image that is larger than %1$spx " "wide, and %2$spx tall." msgstr "" -#: bp-core/bp-core-attachments.php:1296 bp-core/bp-core-avatars.php:903 +#: bp-core/bp-core-attachments.php:1342 bp-core/bp-core-avatars.php:902 msgid "Upload Failed! Error was: %s" msgstr "" -#: bp-core/bp-core-attachments.php:1301 +#: bp-core/bp-core-attachments.php:1346 msgid "There was a problem uploading the cover image." msgstr "" @@ -1902,18 +1908,21 @@ msgstr "" msgid "Profile Photo" msgstr "" -#: bp-core/bp-core-avatars.php:931 +#: bp-core/bp-core-avatars.php:930 msgid "Upload failed! Error was: %s" msgstr "" -#: bp-core/bp-core-avatars.php:937 +#: bp-core/bp-core-avatars.php:936 msgid "" "You have selected an image that is smaller than recommended. For best " "results, upload a picture larger than %d x %d pixels." msgstr "" -#: bp-core/bp-core-buddybar.php:676 bp-core/bp-core-buddybar.php:692 -#: bp-core/bp-core-buddybar.php:712 +#: bp-core/bp-core-buddybar.php:680 bp-core/bp-core-buddybar.php:696 +msgid "You do not have access to that page." +msgstr "" + +#: bp-core/bp-core-buddybar.php:716 msgid "You do not have access to this page." msgstr "" @@ -1932,220 +1941,203 @@ msgstr "" msgid "You must log in to access the page you requested." msgstr "" -#: bp-core/bp-core-customizer-email.php:32 +#: 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:277 +#: bp-core/bp-core-customizer-email.php:271 msgid "Email background color" msgstr "" -#: bp-core/bp-core-customizer-email.php:284 +#: bp-core/bp-core-customizer-email.php:278 msgid "Header background color" msgstr "" -#: bp-core/bp-core-customizer-email.php:291 +#: bp-core/bp-core-customizer-email.php:285 msgid "Applied to links and other decorative areas." msgstr "" -#: bp-core/bp-core-customizer-email.php:292 +#: bp-core/bp-core-customizer-email.php:286 msgid "Highlight color" msgstr "" -#: bp-core/bp-core-customizer-email.php:299 -#: bp-core/bp-core-customizer-email.php:328 -#: bp-core/bp-core-customizer-email.php:365 +#: bp-core/bp-core-customizer-email.php:293 +#: bp-core/bp-core-customizer-email.php:322 +#: bp-core/bp-core-customizer-email.php:359 msgid "Text color" msgstr "" -#: bp-core/bp-core-customizer-email.php:306 -#: bp-core/bp-core-customizer-email.php:335 -#: bp-core/bp-core-customizer-email.php:372 +#: bp-core/bp-core-customizer-email.php:300 +#: bp-core/bp-core-customizer-email.php:329 +#: bp-core/bp-core-customizer-email.php:366 msgid "Text size" msgstr "" -#: bp-core/bp-core-customizer-email.php:320 -#: bp-core/bp-core-customizer-email.php:358 +#: bp-core/bp-core-customizer-email.php:314 +#: bp-core/bp-core-customizer-email.php:352 msgid "Background color" msgstr "" -#: bp-core/bp-core-customizer-email.php:349 +#: bp-core/bp-core-customizer-email.php:343 msgid "Change the email footer here" msgstr "" -#: bp-core/bp-core-customizer-email.php:350 +#: bp-core/bp-core-customizer-email.php:344 msgid "Footer text" msgstr "" -#: bp-core/bp-core-filters.php:408 bp-core/bp-core-filters.php:441 +#: bp-core/bp-core-filters.php:405 bp-core/bp-core-filters.php:438 msgid "[User Set]" msgstr "" -#: bp-core/bp-core-filters.php:584 +#: bp-core/bp-core-filters.php:581 msgid "Page %s" msgstr "" -#: bp-core/bp-core-functions.php:1167 +#: bp-core/bp-core-functions.php:1186 msgid "sometime" msgstr "" -#: bp-core/bp-core-functions.php:1176 +#: bp-core/bp-core-functions.php:1195 msgid "right now" msgstr "" -#: bp-core/bp-core-functions.php:1185 +#: bp-core/bp-core-functions.php:1204 msgid "%s ago" msgstr "" -#: bp-core/bp-core-functions.php:1246 +#: bp-core/bp-core-functions.php:1265 msgid "%s year" msgid_plural "%s years" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1249 bp-core/bp-core-functions.php:1283 +#: bp-core/bp-core-functions.php:1268 bp-core/bp-core-functions.php:1302 msgid "%s month" msgid_plural "%s months" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1252 bp-core/bp-core-functions.php:1286 +#: bp-core/bp-core-functions.php:1271 bp-core/bp-core-functions.php:1305 msgid "%s week" msgid_plural "%s weeks" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1255 bp-core/bp-core-functions.php:1289 +#: bp-core/bp-core-functions.php:1274 bp-core/bp-core-functions.php:1308 msgid "%s day" msgid_plural "%s days" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1258 bp-core/bp-core-functions.php:1292 +#: bp-core/bp-core-functions.php:1277 bp-core/bp-core-functions.php:1311 msgid "%s hour" msgid_plural "%s hours" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1261 bp-core/bp-core-functions.php:1295 +#: bp-core/bp-core-functions.php:1280 bp-core/bp-core-functions.php:1314 msgid "%s minute" msgid_plural "%s minutes" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1264 bp-core/bp-core-functions.php:1298 +#: bp-core/bp-core-functions.php:1283 bp-core/bp-core-functions.php:1317 msgid "%s second" msgid_plural "%s seconds" msgstr[0] "" msgstr[1] "" -#: bp-core/bp-core-functions.php:1562 +#: bp-core/bp-core-functions.php:1581 msgid "Not recently active" msgstr "" -#: bp-core/bp-core-functions.php:2456 bp-core/classes/class-bp-core.php:31 +#: bp-core/bp-core-functions.php:2450 bp-core/classes/class-bp-core.php:31 msgid "BuddyPress Core" msgstr "" -#: bp-core/bp-core-functions.php:2457 +#: bp-core/bp-core-functions.php:2451 msgid "It‘s what makes <del>time travel</del> BuddyPress possible!" msgstr "" -#: bp-core/bp-core-functions.php:2460 +#: bp-core/bp-core-functions.php:2454 msgid "Community Members" msgstr "" -#: bp-core/bp-core-functions.php:2461 +#: bp-core/bp-core-functions.php:2455 msgid "Everything in a BuddyPress community revolves around its members." msgstr "" -#: bp-core/bp-core-functions.php:2467 -#: bp-templates/bp-legacy/buddypress/groups/create.php:194 -msgid "Group Forums" -msgstr "" - -#: bp-core/bp-core-functions.php:2468 -msgid "BuddyPress Forums are retired. Use %s." -msgstr "" - -#: bp-core/bp-core-functions.php:2482 +#: bp-core/bp-core-functions.php:2472 msgid "Friend Connections" msgstr "" -#: bp-core/bp-core-functions.php:2483 +#: bp-core/bp-core-functions.php:2473 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:2486 +#: bp-core/bp-core-functions.php:2476 msgid "Private Messaging" msgstr "" -#: bp-core/bp-core-functions.php:2487 +#: bp-core/bp-core-functions.php:2477 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:2491 +#: bp-core/bp-core-functions.php:2481 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:2498 +#: bp-core/bp-core-functions.php:2488 msgid "User Groups" msgstr "" -#: bp-core/bp-core-functions.php:2499 +#: bp-core/bp-core-functions.php:2489 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:2502 -msgid "Group Forums (Legacy)" -msgstr "" - -#: bp-core/bp-core-functions.php:2503 -msgid "Group forums allow for focused, bulletin-board style conversations." -msgstr "" - -#: bp-core/bp-core-functions.php:2506 +#: bp-core/bp-core-functions.php:2492 msgid "Site Tracking" msgstr "" -#: bp-core/bp-core-functions.php:2507 +#: bp-core/bp-core-functions.php:2493 msgid "Record activity for new posts and comments from your site." msgstr "" -#: bp-core/bp-core-functions.php:2513 +#: bp-core/bp-core-functions.php:2499 msgid "Record activity for new sites, posts, and comments across your network." msgstr "" -#: bp-core/bp-core-functions.php:2577 +#: bp-core/bp-core-functions.php:2563 #: 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:1366 msgid "Log Out" msgstr "" -#: bp-core/bp-core-functions.php:2642 +#: bp-core/bp-core-functions.php:2628 #: bp-core/classes/class-bp-core-login-widget.php:116 #: bp-core/deprecated/2.1.php:190 msgid "Log In" msgstr "" -#: bp-core/bp-core-functions.php:3357 +#: bp-core/bp-core-functions.php:3354 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] {{poster.name}} replied to one of your updates" msgstr "" -#: bp-core/bp-core-functions.php:3359 +#: bp-core/bp-core-functions.php:3356 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} replied to one of your updates:\n" @@ -2156,7 +2148,7 @@ msgid "" "on the conversation." msgstr "" -#: bp-core/bp-core-functions.php:3361 +#: bp-core/bp-core-functions.php:3358 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} replied to one of your updates:\n" @@ -2167,12 +2159,12 @@ msgid "" "{{{thread.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3365 +#: bp-core/bp-core-functions.php:3362 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] {{poster.name}} replied to one of your comments" msgstr "" -#: bp-core/bp-core-functions.php:3367 +#: bp-core/bp-core-functions.php:3364 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} replied to one of your comments:\n" @@ -2183,7 +2175,7 @@ msgid "" "on the conversation." msgstr "" -#: bp-core/bp-core-functions.php:3369 +#: bp-core/bp-core-functions.php:3366 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} replied to one of your comments:\n" @@ -2194,12 +2186,12 @@ msgid "" "{{{thread.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3373 +#: bp-core/bp-core-functions.php:3370 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] {{poster.name}} mentioned you in a status update" msgstr "" -#: bp-core/bp-core-functions.php:3375 +#: bp-core/bp-core-functions.php:3372 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} mentioned you in a status update:\n" @@ -2210,7 +2202,7 @@ msgid "" "up on the conversation." msgstr "" -#: bp-core/bp-core-functions.php:3377 +#: bp-core/bp-core-functions.php:3374 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} mentioned you in a status update:\n" @@ -2221,12 +2213,12 @@ msgid "" "{{{mentioned.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3381 +#: bp-core/bp-core-functions.php:3378 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] {{poster.name}} mentioned you in an update" msgstr "" -#: bp-core/bp-core-functions.php:3383 +#: bp-core/bp-core-functions.php:3380 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} mentioned you in the group \"{{group.name}}\":\n" @@ -2237,7 +2229,7 @@ msgid "" "up on the conversation." msgstr "" -#: bp-core/bp-core-functions.php:3385 +#: bp-core/bp-core-functions.php:3382 #. translators: do not remove {} brackets or translate its contents. msgid "" "{{poster.name}} mentioned you in the group \"{{group.name}}\":\n" @@ -2248,12 +2240,12 @@ msgid "" "{{{mentioned.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3389 +#: bp-core/bp-core-functions.php:3386 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] Activate your account" msgstr "" -#: bp-core/bp-core-functions.php:3391 +#: bp-core/bp-core-functions.php:3388 #. translators: do not remove {} brackets or translate its contents. msgid "" "Thanks for registering!\n" @@ -2262,7 +2254,7 @@ msgid "" "href=\"{{{activate.url}}}\">{{{activate.url}}}</a>" msgstr "" -#: bp-core/bp-core-functions.php:3393 +#: bp-core/bp-core-functions.php:3390 #. translators: do not remove {} brackets or translate its contents. msgid "" "Thanks for registering!\n" @@ -2271,12 +2263,12 @@ msgid "" "{{{activate.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3397 +#: bp-core/bp-core-functions.php:3394 #. translators: do not remove {} brackets or translate its contents. msgid "[{{{site.name}}}] Activate {{{user-site.url}}}" msgstr "" -#: bp-core/bp-core-functions.php:3399 +#: bp-core/bp-core-functions.php:3396 #. translators: do not remove {} brackets or translate its contents. msgid "" "Thanks for registering!\n" @@ -2288,7 +2280,7 @@ msgid "" "href=\"{{{user-site.url}}}\">{{{user-site.url}}}</a>." msgstr "" -#: bp-core/bp-core-functions.php:3401 +#: bp-core/bp-core-functions.php:3398 #. translators: do not remove {} brackets or translate its contents. msgid "" "Thanks for registering!\n" @@ -2590,82 +2582,82 @@ msgid "" "request." msgstr "" -#: bp-core/bp-core-functions.php:3564 bp-core/bp-core-functions.php:3572 +#: bp-core/bp-core-functions.php:3564 msgid "A group's details were updated." msgstr "" -#: bp-core/bp-core-functions.php:3567 bp-core/bp-core-functions.php:3575 +#: bp-core/bp-core-functions.php:3567 msgid "You will no longer receive emails when one of your groups is updated." msgstr "" -#: bp-core/bp-core-functions.php:3580 +#: bp-core/bp-core-functions.php:3572 msgid "A member has sent a group invitation to the recipient." msgstr "" -#: bp-core/bp-core-functions.php:3583 +#: bp-core/bp-core-functions.php:3575 msgid "You will no longer receive emails when you are invited to join a group." msgstr "" -#: bp-core/bp-core-functions.php:3588 bp-core/bp-core-functions.php:3596 +#: bp-core/bp-core-functions.php:3580 msgid "Recipient's status within a group has changed." msgstr "" -#: bp-core/bp-core-functions.php:3591 bp-core/bp-core-functions.php:3599 +#: bp-core/bp-core-functions.php:3583 msgid "You will no longer receive emails when you have been promoted in a group." msgstr "" -#: bp-core/bp-core-functions.php:3604 +#: bp-core/bp-core-functions.php:3588 msgid "A member has requested permission to join a group." msgstr "" -#: bp-core/bp-core-functions.php:3607 +#: bp-core/bp-core-functions.php:3591 msgid "" "You will no longer receive emails when someone requests to be a member of " "your group." msgstr "" -#: bp-core/bp-core-functions.php:3612 +#: bp-core/bp-core-functions.php:3596 msgid "Recipient has received a private message." msgstr "" -#: bp-core/bp-core-functions.php:3615 +#: bp-core/bp-core-functions.php:3599 msgid "You will no longer receive emails when someone sends you a message." msgstr "" -#: bp-core/bp-core-functions.php:3620 +#: bp-core/bp-core-functions.php:3604 msgid "Recipient has changed their email address." msgstr "" -#: bp-core/bp-core-functions.php:3625 +#: bp-core/bp-core-functions.php:3609 msgid "Recipient had requested to join a group, which was accepted." msgstr "" -#: bp-core/bp-core-functions.php:3628 bp-core/bp-core-functions.php:3636 +#: bp-core/bp-core-functions.php:3612 bp-core/bp-core-functions.php:3620 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:3633 +#: bp-core/bp-core-functions.php:3617 msgid "Recipient had requested to join a group, which was rejected." msgstr "" -#: bp-core/bp-core-functions.php:3681 bp-core/bp-core-functions.php:3687 -#: bp-core/bp-core-functions.php:3692 +#: bp-core/bp-core-functions.php:3665 bp-core/bp-core-functions.php:3671 +#: bp-core/bp-core-functions.php:3676 msgid "Something has gone wrong." msgstr "" -#: bp-core/bp-core-functions.php:3682 bp-core/bp-core-functions.php:3688 +#: bp-core/bp-core-functions.php:3666 bp-core/bp-core-functions.php:3672 msgid "" "Please log in and go to your settings to unsubscribe from notification " "emails." msgstr "" -#: bp-core/bp-core-functions.php:3693 +#: bp-core/bp-core-functions.php:3677 msgid "Please go to your notifications settings to unsubscribe from emails." msgstr "" -#: bp-core/bp-core-functions.php:3721 +#: bp-core/bp-core-functions.php:3705 msgid "" "You can change this or any other email notification preferences in your " "email settings." @@ -2680,20 +2672,22 @@ msgid "%s Directory" msgstr "" #: bp-core/bp-core-template.php:199 bp-core/bp-core-template.php:218 -#: bp-core/classes/class-bp-core-user.php:174 -#: bp-core/classes/class-bp-core-user.php:175 -#: bp-core/classes/class-bp-core-user.php:176 +#: bp-core/classes/class-bp-core-user.php:169 +#: bp-core/classes/class-bp-core-user.php:170 +#: bp-core/classes/class-bp-core-user.php:171 #: bp-groups/classes/class-bp-groups-invite-template.php:234 #: bp-groups/classes/class-bp-groups-invite-template.php:235 #: bp-groups/classes/class-bp-groups-invite-template.php:236 +#: bp-templates/bp-nouveau/includes/activity/functions.php:90 +#. translators: %s = member name msgid "Profile photo of %s" msgstr "" -#: bp-core/bp-core-template.php:680 +#: bp-core/bp-core-template.php:676 msgid "Search anything..." msgstr "" -#: bp-core/bp-core-template.php:880 +#: bp-core/bp-core-template.php:883 msgid " […]" msgstr "" @@ -2701,392 +2695,284 @@ msgstr "" msgid "Community" msgstr "" -#: bp-core/bp-core-template.php:3194 +#: bp-core/bp-core-template.php:3119 #: bp-members/classes/class-bp-registration-theme-compat.php:100 msgid "Create an Account" msgstr "" -#: bp-core/bp-core-template.php:3198 +#: bp-core/bp-core-template.php:3123 #: bp-members/classes/class-bp-registration-theme-compat.php:108 msgid "Activate Your Account" msgstr "" -#: bp-core/bp-core-template.php:3202 bp-groups/bp-groups-template.php:3615 +#: bp-core/bp-core-template.php:3127 bp-groups/bp-groups-template.php:3394 +#: bp-templates/bp-nouveau/includes/groups/functions.php:530 msgid "Create a Group" msgstr "" -#: bp-core/classes/class-bp-admin.php:202 -#: bp-core/classes/class-bp-admin.php:203 -#: bp-core/classes/class-bp-admin.php:211 -#: bp-core/classes/class-bp-admin.php:212 -msgid "Welcome to BuddyPress" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:232 +#: bp-core/classes/class-bp-admin.php:217 msgid "BuddyPress Help" msgstr "" -#: bp-core/classes/class-bp-admin.php:233 +#: bp-core/classes/class-bp-admin.php:218 msgid "Help" msgstr "" -#: bp-core/classes/class-bp-admin.php:242 +#: bp-core/classes/class-bp-admin.php:227 msgid "BuddyPress Components" msgstr "" -#: bp-core/classes/class-bp-admin.php:251 -#: bp-core/classes/class-bp-admin.php:252 +#: bp-core/classes/class-bp-admin.php:236 +#: bp-core/classes/class-bp-admin.php:237 msgid "BuddyPress Pages" msgstr "" -#: bp-core/classes/class-bp-admin.php:260 -#: bp-core/classes/class-bp-admin.php:261 +#: bp-core/classes/class-bp-admin.php:245 +#: bp-core/classes/class-bp-admin.php:246 msgid "BuddyPress Options" msgstr "" -#: bp-core/classes/class-bp-admin.php:284 -#: bp-core/classes/class-bp-admin.php:285 +#: bp-core/classes/class-bp-admin.php:255 +#: bp-core/classes/class-bp-admin.php:256 +msgid "BuddyPress Credits" +msgstr "" + +#: bp-core/classes/class-bp-admin.php:279 +#: bp-core/classes/class-bp-admin.php:280 msgid "Available Tools" msgstr "" -#: bp-core/classes/class-bp-admin.php:377 +#: bp-core/classes/class-bp-admin.php:369 msgid "Main Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:380 -#: bp-core/classes/class-bp-admin.php:390 +#: bp-core/classes/class-bp-admin.php:372 +#: bp-core/classes/class-bp-admin.php:382 msgid "Toolbar" msgstr "" -#: bp-core/classes/class-bp-admin.php:395 +#: bp-core/classes/class-bp-admin.php:387 msgid "Account Deletion" msgstr "" -#: bp-core/classes/class-bp-admin.php:399 +#: bp-core/classes/class-bp-admin.php:391 msgid "Template Pack" msgstr "" -#: bp-core/classes/class-bp-admin.php:410 +#: bp-core/classes/class-bp-admin.php:402 msgid "Profile Photo Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:415 +#: bp-core/classes/class-bp-admin.php:407 msgid "Cover Image Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:420 +#: bp-core/classes/class-bp-admin.php:412 msgid "Profile Syncing" msgstr "" -#: bp-core/classes/class-bp-admin.php:429 +#: bp-core/classes/class-bp-admin.php:421 msgid "Groups Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:432 +#: bp-core/classes/class-bp-admin.php:424 msgid "Group Creation" msgstr "" -#: bp-core/classes/class-bp-admin.php:436 +#: bp-core/classes/class-bp-admin.php:428 msgid "Group Photo Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:441 +#: bp-core/classes/class-bp-admin.php:433 msgid "Group Cover Image Uploads" msgstr "" -#: bp-core/classes/class-bp-admin.php:451 -msgid "Legacy Group Forums" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:454 -msgid "bbPress Configuration" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:463 +#: bp-core/classes/class-bp-admin.php:443 msgid "Activity Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:466 -msgid "Blog & Forum Comments" +#: bp-core/classes/class-bp-admin.php:446 +msgid "Post Comments" msgstr "" -#: bp-core/classes/class-bp-admin.php:470 +#: bp-core/classes/class-bp-admin.php:450 msgid "Activity auto-refresh" msgstr "" -#: bp-core/classes/class-bp-admin.php:475 +#: bp-core/classes/class-bp-admin.php:455 msgid "Akismet" msgstr "" -#: bp-core/classes/class-bp-admin.php:493 -msgid "About BuddyPress" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:517 -#: bp-groups/classes/class-bp-groups-component.php:658 +#: bp-core/classes/class-bp-admin.php:503 +#: bp-groups/classes/class-bp-groups-component.php:709 #: bp-settings/classes/class-bp-settings-component.php:28 -#: bp-settings/classes/class-bp-settings-component.php:101 -#: bp-settings/classes/class-bp-settings-component.php:180 +#: bp-settings/classes/class-bp-settings-component.php:141 +#: bp-settings/classes/class-bp-settings-component.php:220 msgid "Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:518 -msgid "About" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:570 -msgid "Getting Started with BuddyPress" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:573 -msgid "Configure BuddyPress" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:576 -msgid "Set Up Components" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:579 -msgid "Assign Components to Pages" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:582 -msgid "Customize Settings" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:585 -msgid "Get Started" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:588 -msgid "Administration Tools" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:591 -msgid "Add User Profile Fields" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:593 -msgid "Manage User Signups" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:595 -msgid "Moderate Activity Streams" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:598 -msgid "Manage Groups" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:600 -msgid "Repair Data" +#: bp-core/classes/class-bp-admin.php:564 +msgid "Close pop-up" msgstr "" -#: bp-core/classes/class-bp-admin.php:605 -msgid "Community and Support" +#: bp-core/classes/class-bp-admin.php:596 +msgid "" +"A bold reimagining of our legacy templates, Nouveau is our celebration of " +"<a href=\"%s\">10 years of BuddyPress</a>! Nouveau delivers modern markup " +"with fresh JavaScript-powered templates, and full integration with " +"WordPress' Customizer, allowing more out-of-the-box control of your " +"BuddyPress content than ever before." msgstr "" -#: bp-core/classes/class-bp-admin.php:606 +#: bp-core/classes/class-bp-admin.php:601 msgid "" -"Looking for help? The <a href=\"https://codex.buddypress.org/\">BuddyPress " -"Codex</a> has you covered." +"Nouveau provides vertical and horizontal layout options for BuddyPress " +"navigation, and for the component directories, you can choose between a " +"grid layout, and a classic flat list." msgstr "" -#: bp-core/classes/class-bp-admin.php:607 +#: bp-core/classes/class-bp-admin.php:605 msgid "" -"Can’t find what you need? Stop by <a " -"href=\"https://buddypress.org/support/\">our support forums</a>, where " -"active BuddyPress users and developers are waiting to share tips and more." +"Nouveau is fully compatible with WordPress. Existing BuddyPress themes have " +"been written for our legacy template pack, and until they are updated, " +"resolve any compatibility issues by choosing the legacy template pack " +"option in <a href=\"%s\">Settings > BuddyPress</a>." msgstr "" #: bp-core/classes/class-bp-admin.php:617 -msgid "For Developers & Site Builders" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:621 -msgid "Edit Group Slug" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:622 msgid "" -"Allow administrators to change group names and permalinks. Navigate to the " -"Groups screen in the wp-admin dashboard, click on the Edit link under the " -"Group name, and adjust as needed." +"<a href=\"%s\">WP-CLI</a> is the command-line interface for WordPress. You " +"can update plugins, configure multisite installs, and much more, without " +"using a web browser. With this version of BuddyPress, you can now manage " +"your BuddyPress content from WP-CLI." msgstr "" -#: bp-core/classes/class-bp-admin.php:627 -msgid "Improve accessibility of Extended Profile Fields" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:628 +#: bp-core/classes/class-bp-admin.php:624 msgid "" -"Related form fields are grouped together in fieldsets and all interactive " -"form controls are associated with necessary ARIA states and properties." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:633 -msgid "Send group invitation only once per user" +"Site Notices are a feature within the Private Messaging component that " +"allows community managers to share important messages with all members of " +"their community. With Nouveau, the management interface for Site Notices " +"has been removed from the front-end theme templates." msgstr "" -#: bp-core/classes/class-bp-admin.php:634 +#: bp-core/classes/class-bp-admin.php:630 msgid "" -"Prevent duplicate group invitations from being sent to a user by " -"double-checking if a group invitation has already been sent to that user." +"Explore the new management interface at <a href=\"%s\">Users > Site " +"Notices</a>." msgstr "" -#: bp-core/classes/class-bp-admin.php:639 -msgid "Tooltips Usable for All Devices" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:641 +#: bp-core/classes/class-bp-admin.php:638 msgid "" -"Replaced HTML title attributes with tooltips which provide additional " -"information and visual cues where needed on mouse hover and keyboard focus " -"events." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:649 -msgid "More under the hood …" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:652 -msgid "Better support for private message thread links in emails" +"A new telephone number field type has been added to the Extended Profiles " +"component, with support for all international number formats. With a modern " +"web browser, your members can use this field type to touch-to-dial a number " +"directly." msgstr "" -#: bp-core/classes/class-bp-admin.php:653 +#: bp-core/classes/class-bp-admin.php:641 msgid "" -"Redirect non-authenticated users to the login screen and authenticated " -"users to the message linked." +"With every BuddyPress version, we strive to make performance improvements " +"alongside new features and fixes; this version is no exception. Memory use " +"has been optimised — within active components, we now only load each " +"individual code file when it's needed, not before." msgstr "" -#: bp-core/classes/class-bp-admin.php:656 -msgid "Compatibility with Bootstrap themes" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:657 +#: bp-core/classes/class-bp-admin.php:645 msgid "" -"Removed issues with BuddyPress-generated content being hidden in the Groups " -"loop and Activity comments in Bootstrap themes." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:661 -msgid "Improve profile image uploads" +"Most notably, the <a href=\"%s\">Legacy Forums component has been " +"removed</a> after 9 years of service. If your site was using Legacy Forums, " +"you need to <a href=\"%s\">migrate to the bbPress plugin</a>." msgstr "" -#: bp-core/classes/class-bp-admin.php:662 +#: bp-core/classes/class-bp-admin.php:655 msgid "" -"Fixed issues with uploading in iOS Safari and uploading files with " -"non-ASCII filenames." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:668 -msgid "URL compatibility for LightSpeed Servers" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:671 -#. translators: %s: trailingslashit() -msgid "Audited and changed template link functions to use %s where necessary." +"To read the full list of features, fixes, and changes in this version of " +"BuddyPress, <a href=\"%s\">visit Trac</a>." msgstr "" -#: bp-core/classes/class-bp-admin.php:676 -msgid "Template Packs UI in BuddyPress > Settings." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:677 +#: bp-core/classes/class-bp-admin.php:665 msgid "" -"Register your new BuddyPress theme package and allow the user to select " -"which template pack to use." +" How are you using BuddyPress? Receiving your feedback and suggestions for " +"future versions of BuddyPress genuinely motivates and encourages our " +"contributors. Please <a href=\"%s\">share your feedback</a> about this " +"version of BuddyPress on our website. " msgstr "" -#: bp-core/classes/class-bp-admin.php:683 -#. translators: %s: bp_group_link() -msgid "New template function %s" +#: bp-core/classes/class-bp-admin.php:670 +msgid "Thank you for using BuddyPress! 😊" msgstr "" -#: bp-core/classes/class-bp-admin.php:686 -msgid "Output a group name as a text hyperlink where appropriate." -msgstr "" +#: bp-core/classes/class-bp-admin.php:680 +msgid "Built by <a href=\"%s\">%s volunteer</a>." +msgid_plural "Built by <a href=\"%s\">%s volunteers</a>." +msgstr[0] "" +msgstr[1] "" -#: bp-core/classes/class-bp-admin.php:720 -msgid "BuddyPress is created by a worldwide network of friendly folks like these." +#: bp-core/classes/class-bp-admin.php:736 +msgid "Meet the contributors behind BuddyPress:" msgstr "" -#: bp-core/classes/class-bp-admin.php:722 +#: bp-core/classes/class-bp-admin.php:738 msgid "Project Leaders" msgstr "" -#: bp-core/classes/class-bp-admin.php:727 +#: bp-core/classes/class-bp-admin.php:743 msgid "Project Lead" msgstr "" -#: bp-core/classes/class-bp-admin.php:732 -#: bp-core/classes/class-bp-admin.php:737 +#: bp-core/classes/class-bp-admin.php:748 msgid "Lead Developer" msgstr "" -#: bp-core/classes/class-bp-admin.php:741 -msgid "BuddyPress Team" +#: bp-core/classes/class-bp-admin.php:753 +msgid "Release Lead" msgstr "" -#: bp-core/classes/class-bp-admin.php:746 -msgid "2.9 Release Lead" +#: bp-core/classes/class-bp-admin.php:757 +msgid "BuddyPress Team" msgstr "" -#: bp-core/classes/class-bp-admin.php:751 -#: bp-core/classes/class-bp-admin.php:756 -#: bp-core/classes/class-bp-admin.php:766 -#: bp-core/classes/class-bp-admin.php:771 -#: bp-core/classes/class-bp-admin.php:791 -#: bp-core/classes/class-bp-admin.php:796 -#: bp-core/classes/class-bp-admin.php:801 +#: bp-core/classes/class-bp-admin.php:762 +#: bp-core/classes/class-bp-admin.php:767 +#: bp-core/classes/class-bp-admin.php:772 +#: bp-core/classes/class-bp-admin.php:782 +#: bp-core/classes/class-bp-admin.php:787 +#: bp-core/classes/class-bp-admin.php:807 +#: bp-core/classes/class-bp-admin.php:812 +#: bp-core/classes/class-bp-admin.php:817 +#: bp-core/classes/class-bp-admin.php:822 msgid "Core Developer" msgstr "" -#: bp-core/classes/class-bp-admin.php:761 +#: bp-core/classes/class-bp-admin.php:777 msgid "Navigator" msgstr "" -#: bp-core/classes/class-bp-admin.php:776 -#: bp-core/classes/class-bp-admin.php:781 -#: bp-core/classes/class-bp-admin.php:786 +#: bp-core/classes/class-bp-admin.php:792 +#: bp-core/classes/class-bp-admin.php:797 +#: bp-core/classes/class-bp-admin.php:802 +#: bp-core/classes/class-bp-admin.php:827 msgid "Community Support" msgstr "" -#: bp-core/classes/class-bp-admin.php:805 -msgid "🌟Recent Rockstars🌟" +#: bp-core/classes/class-bp-admin.php:831 +msgid "Recent Rockstars" msgstr "" -#: bp-core/classes/class-bp-admin.php:825 +#: bp-core/classes/class-bp-admin.php:855 msgid "Contributors to BuddyPress %s" msgstr "" -#: bp-core/classes/class-bp-admin.php:875 -msgid "💖With our thanks to these Open Source projects💖" +#: bp-core/classes/class-bp-admin.php:916 +msgid "With our thanks to these Open Source projects" msgstr "" -#: bp-core/classes/class-bp-admin.php:903 -msgid "" -"Thank you for installing BuddyPress! BuddyPress adds community features to " -"WordPress. Member Profiles, Activity Streams, Direct Messaging, " -"Notifications, and more!" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:904 -msgid "" -"Thank you for updating! BuddyPress %s has many new improvements that you " -"will enjoy." -msgstr "" - -#: bp-core/classes/class-bp-admin.php:908 -msgid "Welcome to BuddyPress %s" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:937 -msgid "What’s New" +#: bp-core/classes/class-bp-admin.php:930 +msgid "Contributor Emeriti" msgstr "" -#: bp-core/classes/class-bp-admin.php:939 -msgid "Credits" +#: bp-core/classes/class-bp-admin.php:935 +msgid "Project Founder" msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:40 @@ -3101,42 +2987,42 @@ msgstr[0] "" msgstr[1] "" #: bp-core/classes/class-bp-attachment-avatar.php:378 -#: bp-xprofile/bp-xprofile-screens.php:250 +#: bp-xprofile/screens/change-avatar.php:67 msgid "There was a problem cropping your profile photo." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:379 -#: bp-xprofile/bp-xprofile-screens.php:264 +#: bp-xprofile/screens/change-avatar.php:81 msgid "Your new profile photo was uploaded successfully." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:380 -#: bp-xprofile/bp-xprofile-actions.php:42 +#: bp-xprofile/actions/delete-avatar.php:35 msgid "There was a problem deleting your profile photo. Please try again." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:381 -#: bp-xprofile/bp-xprofile-actions.php:40 +#: bp-xprofile/actions/delete-avatar.php:33 msgid "Your profile photo was deleted successfully!" msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:396 -#: bp-groups/bp-groups-screens.php:1055 +#: bp-groups/screens/single/admin/group-avatar.php:78 msgid "There was a problem cropping the group profile photo." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:397 -#: bp-groups/bp-groups-actions.php:388 +#: bp-groups/actions/create.php:287 msgid "The group profile photo was uploaded successfully." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:398 -#: bp-groups/bp-groups-screens.php:1012 +#: bp-groups/screens/single/admin/group-avatar.php:35 msgid "There was a problem deleting the group profile photo. Please try again." msgstr "" #: bp-core/classes/class-bp-attachment-avatar.php:399 -#: bp-groups/bp-groups-screens.php:1010 +#: bp-groups/screens/single/admin/group-avatar.php:33 msgid "The group profile photo was deleted successfully!" msgstr "" @@ -3144,27 +3030,27 @@ msgstr "" msgid "That image is too big. Please upload one smaller than %s" msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:243 +#: bp-core/classes/class-bp-attachment-cover-image.php:210 msgid "Your new cover image was uploaded successfully." msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:244 +#: bp-core/classes/class-bp-attachment-cover-image.php:211 msgid "There was a problem deleting your cover image. Please try again." msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:245 +#: bp-core/classes/class-bp-attachment-cover-image.php:212 msgid "Your cover image was deleted successfully!" msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:261 +#: bp-core/classes/class-bp-attachment-cover-image.php:228 msgid "The group cover image was uploaded successfully." msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:262 +#: bp-core/classes/class-bp-attachment-cover-image.php:229 msgid "There was a problem deleting the group cover image. Please try again." msgstr "" -#: bp-core/classes/class-bp-attachment-cover-image.php:263 +#: bp-core/classes/class-bp-attachment-cover-image.php:230 msgid "The group cover image was deleted successfully!" msgstr "" @@ -3245,7 +3131,8 @@ msgstr "" #: bp-core/classes/class-bp-core-login-widget.php:108 #: bp-members/classes/class-bp-members-list-table.php:150 #: bp-members/classes/class-bp-members-ms-list-table.php:137 -#: bp-templates/bp-legacy/buddypress/members/register.php:84 +#: bp-templates/bp-legacy/buddypress/members/register.php:85 +#: bp-templates/bp-nouveau/includes/functions.php:1137 msgid "Username" msgstr "" @@ -3263,13 +3150,11 @@ msgstr "" #: bp-members/classes/class-bp-core-recently-active-widget.php:143 #: bp-members/classes/class-bp-core-whos-online-widget.php:142 #: bp-messages/classes/class-bp-messages-sitewide-notices-widget.php:116 -#: bp-templates/bp-legacy/buddypress/forums/index.php:179 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:74 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:106 +#: bp-templates/bp-nouveau/includes/activity/widgets.php:183 msgid "Title:" msgstr "" -#: bp-core/classes/class-bp-core-user.php:191 +#: bp-core/classes/class-bp-core-user.php:186 #: bp-groups/classes/class-bp-groups-invite-template.php:244 msgid "%d group" msgid_plural "%d groups" @@ -3277,40 +3162,44 @@ msgstr[0] "" msgstr[1] "" #: bp-core/deprecated/1.5.php:146 -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:61 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:28 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:62 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:29 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/profile-wp.php:16 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:35 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:36 +#: bp-templates/bp-nouveau/includes/members/functions.php:470 msgid "Name" msgstr "" #: bp-core/deprecated/1.5.php:162 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:44 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:45 +#: bp-templates/bp-nouveau/includes/members/functions.php:471 msgid "About Me" msgstr "" #: bp-core/deprecated/1.5.php:171 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:53 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:54 +#: bp-templates/bp-nouveau/includes/members/functions.php:472 msgid "Website" msgstr "" #: bp-core/deprecated/1.5.php:180 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:62 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:63 msgid "Jabber" msgstr "" #: bp-core/deprecated/1.5.php:189 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:71 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:72 msgid "AOL Messenger" msgstr "" #: bp-core/deprecated/1.5.php:198 -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:80 +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:81 msgid "Yahoo Messenger" msgstr "" @@ -3330,25 +3219,27 @@ msgid "" msgstr "" #: bp-core/deprecated/1.6.php:127 bp-core/deprecated/1.6.php:148 -#: bp-groups/bp-groups-template.php:5306 bp-groups/bp-groups-template.php:5329 +#: bp-groups/bp-groups-template.php:5098 bp-groups/bp-groups-template.php:5121 msgid "Recently Active" msgstr "" #: bp-core/deprecated/1.6.php:128 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:4582 +#: bp-groups/bp-groups-template.php:4361 #: bp-groups/classes/class-bp-groups-widget.php:121 #: bp-groups/classes/class-bp-groups-widget.php:226 #: bp-members/classes/class-bp-core-members-widget.php:111 #: bp-members/classes/class-bp-core-members-widget.php:229 -#: bp-templates/bp-legacy/buddypress/blogs/index.php:99 -#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:21 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:100 +#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:22 +#: bp-templates/bp-nouveau/includes/blogs/functions.php:107 +#: bp-templates/bp-nouveau/includes/members/functions.php:112 msgid "Newest" msgstr "" #: bp-core/deprecated/1.6.php:129 bp-core/deprecated/1.6.php:154 -#: bp-groups/bp-groups-template.php:5311 bp-groups/bp-groups-template.php:5344 +#: bp-groups/bp-groups-template.php:5103 bp-groups/bp-groups-template.php:5136 msgid "Alphabetically" msgstr "" @@ -3405,13 +3296,13 @@ msgid "Edit Details" msgstr "" #: bp-core/deprecated/2.1.php:369 -#: bp-templates/bp-legacy/buddypress/groups/create.php:102 +#: bp-templates/bp-legacy/buddypress/groups/create.php:103 #. translators: accessibility text msgid "Group Settings" msgstr "" #: bp-core/deprecated/2.1.php:373 -#: bp-groups/classes/class-bp-groups-component.php:830 +#: bp-groups/classes/class-bp-groups-component.php:881 msgid "Group Profile Photo" msgstr "" @@ -3420,7 +3311,7 @@ msgid "Manage Invitations" msgstr "" #: bp-core/deprecated/2.1.php:383 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:11 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:12 msgid "Manage Members" msgstr "" @@ -3428,9 +3319,10 @@ msgstr "" msgid "Membership Requests" msgstr "" -#: bp-core/deprecated/2.1.php:391 bp-groups/bp-groups-admin.php:1024 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:11 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:38 +#: bp-core/deprecated/2.1.php:391 bp-groups/bp-groups-admin.php:1054 +#: 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:356 msgid "Delete Group" msgstr "" @@ -3458,443 +3350,129 @@ msgstr "" msgid "No new notifications." msgstr "" -#: bp-core/deprecated/2.8.php:138 +#: bp-core/deprecated/2.8.php:143 msgid "A BuddyPress update is available, but your system is not compatible." msgstr "" -#: bp-core/deprecated/2.8.php:139 bp-core/deprecated/2.8.php:194 +#: bp-core/deprecated/2.8.php:144 bp-core/deprecated/2.8.php:198 #: bp-loader.php:64 msgid "See <a href=\"%s\">the Codex guide</a> for more information." msgstr "" -#: bp-core/deprecated/2.8.php:193 +#: bp-core/deprecated/2.8.php:197 msgid "Your site is not ready for BuddyPress 2.8." msgstr "" -#: bp-core/deprecated/2.8.php:194 +#: bp-core/deprecated/2.8.php:198 msgid "" "Your site is currently running PHP version %s, while BuddyPress 2.8 will " "require version 5.3+." msgstr "" -#: bp-forums/bp-forums-loader.php:33 -msgid "Discussion Forums" +#: bp-core/deprecated/3.0.php:138 +#: bp-members/classes/class-bp-members-admin.php:359 +msgid "User removed as spammer." msgstr "" -#: bp-forums/bp-forums-loader.php:79 -msgid "Search Forums..." +#: bp-core/deprecated/3.0.php:174 +msgid "%s has been deleted from the system." msgstr "" -#: bp-forums/bp-forums-loader.php:169 bp-forums/bp-forums-loader.php:222 -msgid "Topics Started" +#: bp-core/deprecated/3.0.php:176 +msgid "There was an error deleting %s from the system. Please try again." msgstr "" -#: bp-forums/bp-forums-loader.php:180 -msgid "Replied To" +#: bp-friends/actions/add-friend.php:33 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:195 +msgid "Friendship could not be requested." msgstr "" -#: bp-forums/bp-forums-loader.php:230 -msgid "Replies" +#: bp-friends/actions/add-friend.php:35 +msgid "Friendship requested" msgstr "" -#: bp-forums/bp-forums-loader.php:238 -msgid "Favorite Topics" +#: bp-friends/actions/add-friend.php:39 +msgid "You are already friends with this user" msgstr "" -#: bp-forums/bp-forums-screens.php:28 bp-forums/bp-forums-screens.php:275 -msgid "The forums component has not been set up yet." +#: bp-friends/actions/add-friend.php:41 +msgid "You already have a pending friendship request with this user" msgstr "" -#: bp-forums/bp-forums-screens.php:56 bp-groups/bp-groups-screens.php:526 -msgid "Please provide a title for your forum topic." +#: bp-friends/actions/remove-friend.php:33 +#: bp-templates/bp-legacy/buddypress-functions.php:1420 +msgid "Friendship could not be canceled." msgstr "" -#: bp-forums/bp-forums-screens.php:58 bp-groups/bp-groups-screens.php:528 -msgid "Forum posts cannot be empty. Please enter some text." +#: bp-friends/actions/remove-friend.php:35 +msgid "Friendship canceled" msgstr "" -#: bp-forums/bp-forums-screens.php:65 bp-groups/bp-groups-screens.php:540 -msgid "There was an error when creating the topic" +#: bp-friends/actions/remove-friend.php:39 +msgid "You are not yet friends with this user" msgstr "" -#: bp-forums/bp-forums-screens.php:68 bp-groups/bp-groups-screens.php:543 -msgid "The topic was created successfully" +#: bp-friends/actions/remove-friend.php:41 +msgid "You have a pending friendship request with this user" msgstr "" -#: bp-forums/bp-forums-screens.php:76 bp-forums/bp-forums-screens.php:81 -msgid "Please pick the group forum where you would like to post this topic." +#: bp-friends/bp-friends-activity.php:104 +msgid "Friendships accepted" msgstr "" -#: bp-forums/bp-forums-screens.php:301 bp-groups/bp-groups-template.php:3429 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:30 -msgid "New Topic" +#: bp-friends/bp-friends-activity.php:106 +#: bp-friends/bp-friends-activity.php:115 +#: bp-friends/classes/class-bp-friends-component.php:294 +msgid "Friendships" msgstr "" -#: bp-forums/bp-forums-template.php:930 bp-forums/bp-forums-template.php:1111 -#: bp-forums/bp-forums-template.php:2646 -#: bp-messages/bp-messages-template.php:1703 -#: bp-messages/bp-messages-template.php:1959 -#: bp-messages/classes/class-bp-messages-thread.php:861 -msgid "Deleted User" +#: bp-friends/bp-friends-activity.php:113 +msgid "New friendships" msgstr "" -#: bp-forums/bp-forums-template.php:1169 -msgid "Group logo for %s" +#: bp-friends/bp-friends-activity.php:120 +msgid "New friendship created" msgstr "" -#: bp-forums/bp-forums-template.php:1454 bp-groups/bp-groups-template.php:2179 -msgid "%d post" -msgid_plural "%d posts" -msgstr[0] "" -msgstr[1] "" - -#: bp-forums/bp-forums-template.php:1725 -msgid "Edit Topic" +#: bp-friends/bp-friends-activity.php:144 +#: bp-friends/bp-friends-activity.php:178 +msgid "%1$s and %2$s are now friends" msgstr "" -#: bp-forums/bp-forums-template.php:1729 -msgid "Sticky Topic" +#: bp-friends/bp-friends-notifications.php:41 +msgid "%d friends accepted your friendship requests" msgstr "" -#: bp-forums/bp-forums-template.php:1731 -msgid "Un-stick Topic" +#: bp-friends/bp-friends-notifications.php:44 +msgid "%s accepted your friendship request" msgstr "" -#: bp-forums/bp-forums-template.php:1734 -msgid "Open Topic" +#: bp-friends/bp-friends-notifications.php:57 +msgid "You have %d pending friendship requests" msgstr "" -#: bp-forums/bp-forums-template.php:1736 -msgid "Close Topic" +#: bp-friends/bp-friends-notifications.php:60 +msgid "You have a friendship request from %s" msgstr "" -#: bp-forums/bp-forums-template.php:1738 -msgid "Delete Topic" +#: bp-friends/bp-friends-template.php:84 +#: bp-templates/bp-nouveau/includes/activity/functions.php:240 +#: bp-templates/bp-nouveau/includes/groups/functions.php:139 +#: bp-templates/bp-nouveau/includes/members/functions.php:62 +msgid "My Friends" msgstr "" -#: bp-forums/bp-forums-template.php:2048 -msgid " matching tag \"%s\"" +#: bp-friends/bp-friends-template.php:84 +#: bp-friends/classes/class-bp-core-friends-widget.php:67 +msgid "%s's Friends" msgstr "" -#: bp-forums/bp-forums-template.php:2051 -msgid "Viewing 1 topic" +#: bp-friends/bp-friends-template.php:84 +msgid "See All" msgstr "" -#: bp-forums/bp-forums-template.php:2053 -msgid "Viewing %1$s - %2$s of %3$s topic" -msgid_plural "Viewing %1$s - %2$s of %3$s topics" -msgstr[0] "" -msgstr[1] "" - -#: bp-forums/bp-forums-template.php:2867 -msgid "Viewing 1 post" -msgstr "" - -#: bp-forums/bp-forums-template.php:2869 -msgid "Viewing %1$s - %2$s of %3$s post" -msgid_plural "Viewing %1$s - %2$s of %3$s posts" -msgstr[0] "" -msgstr[1] "" - -#: bp-forums/deprecated/1.6.php:30 bp-forums/deprecated/1.6.php:130 -msgid "Configure bbPress" -msgstr "" - -#: bp-forums/deprecated/1.6.php:33 bp-forums/deprecated/1.6.php:133 -msgid "Install bbPress" -msgstr "" - -#: bp-forums/deprecated/1.6.php:44 -msgid "Settings Saved." -msgstr "" - -#: bp-forums/deprecated/1.6.php:65 -msgid "(Installed)" -msgstr "" - -#: bp-forums/deprecated/1.6.php:65 bp-forums/deprecated/1.6.php:215 -msgid "Forums for Groups" -msgstr "" - -#: bp-forums/deprecated/1.6.php:67 bp-forums/deprecated/1.6.php:217 -msgid "" -"Give each individual group its own discussion forum. Choose this if you'd " -"like to keep your members' conversations separated into distinct areas." -msgstr "" - -#: bp-forums/deprecated/1.6.php:69 bp-forums/deprecated/1.6.php:219 -msgid "" -"Note: This component is retired and will not be receiving any updates in " -"the future. Only use this component if your current site relies on it." -msgstr "" - -#: bp-forums/deprecated/1.6.php:71 bp-forums/deprecated/1.6.php:221 -msgid "Features" -msgstr "" - -#: bp-forums/deprecated/1.6.php:73 bp-forums/deprecated/1.6.php:223 -msgid "Group Integration" -msgstr "" - -#: bp-forums/deprecated/1.6.php:74 bp-forums/deprecated/1.6.php:224 -msgid "Member Profile Integration" -msgstr "" - -#: bp-forums/deprecated/1.6.php:75 bp-forums/deprecated/1.6.php:225 -msgid "Activity Stream Integration" -msgstr "" - -#: bp-forums/deprecated/1.6.php:76 bp-forums/deprecated/1.6.php:226 -msgid "@ Mention Integration" -msgstr "" - -#: bp-forums/deprecated/1.6.php:80 -msgid "Uninstall Group Forums" -msgstr "" - -#: bp-forums/deprecated/1.6.php:85 bp-forums/deprecated/1.6.php:236 -msgid "New! bbPress" -msgstr "" - -#: bp-forums/deprecated/1.6.php:86 bp-forums/deprecated/1.6.php:237 -msgid "" -"bbPress is a brand-new forum plugin from one of the lead developers of " -"BuddyPress." -msgstr "" - -#: bp-forums/deprecated/1.6.php:88 bp-forums/deprecated/1.6.php:239 -msgid "" -"It boasts a bunch of cool features that the BP Legacy Discussion Forums " -"does not have including:" -msgstr "" - -#: bp-forums/deprecated/1.6.php:91 bp-forums/deprecated/1.6.php:242 -msgid "Non-group specific forum creation" -msgstr "" - -#: bp-forums/deprecated/1.6.php:92 bp-forums/deprecated/1.6.php:243 -msgid "Moderation via the WP admin dashboard" -msgstr "" - -#: bp-forums/deprecated/1.6.php:93 bp-forums/deprecated/1.6.php:244 -msgid "Topic splitting" -msgstr "" - -#: bp-forums/deprecated/1.6.php:94 bp-forums/deprecated/1.6.php:245 -msgid "Revisions" -msgstr "" - -#: bp-forums/deprecated/1.6.php:95 bp-forums/deprecated/1.6.php:246 -msgid "Spam management" -msgstr "" - -#: bp-forums/deprecated/1.6.php:96 bp-forums/deprecated/1.6.php:247 -msgid "Subscriptions" -msgstr "" - -#: bp-forums/deprecated/1.6.php:97 bp-forums/deprecated/1.6.php:248 -msgid "And more!" -msgstr "" - -#: bp-forums/deprecated/1.6.php:100 bp-forums/deprecated/1.6.php:251 -msgid "" -"If you decide to use bbPress, you will need to deactivate the legacy group " -"forum component. For more info, <a href=\"%s\">read this codex article</a>." -msgstr "" - -#: bp-forums/deprecated/1.6.php:141 -#. translators: %s: bb-config.php -msgid "The %s file was not found at that location. Please try again." -msgstr "" - -#: bp-forums/deprecated/1.6.php:144 -msgid "Forums were set up correctly using your existing bbPress install!" -msgstr "" - -#: bp-forums/deprecated/1.6.php:146 -#. translators: %s: bb-config.php -msgid "" -"BuddyPress will now use its internal copy of bbPress to run the forums on " -"your site. If you wish, you can remove your old bbPress installation files, " -"as long as you keep the %s file in the same location." -msgstr "" - -#: bp-forums/deprecated/1.6.php:151 -msgid "Existing bbPress Installation" -msgstr "" - -#: bp-forums/deprecated/1.6.php:153 -#. translators: %s: bb-config.php -msgid "" -"BuddyPress can make use of your existing bbPress install. Just provide the " -"location of your %s file, and BuddyPress will do the rest." -msgstr "" - -#: bp-forums/deprecated/1.6.php:155 -#. translators: %s: bb-config.php -msgid "%s file location:" -msgstr "" - -#: bp-forums/deprecated/1.6.php:156 bp-forums/deprecated/1.6.php:193 -msgid "Complete Installation" -msgstr "" - -#: bp-forums/deprecated/1.6.php:174 -#. translators: %s: bb-config.php -msgid "" -"All done! Configuration settings have been saved to the %s file in the root " -"of your WordPress install." -msgstr "" - -#: bp-forums/deprecated/1.6.php:181 -#. translators: %s: bb-config.php -msgid "" -"A configuration file could not be created. No problem, but you will need to " -"save the text shown below into a file named %s in the root directory of " -"your WordPress installation before you can start using the forum " -"functionality." -msgstr "" - -#: bp-forums/deprecated/1.6.php:190 -msgid "New bbPress Installation" -msgstr "" - -#: bp-forums/deprecated/1.6.php:191 -msgid "" -"You've decided to set up a new installation of bbPress for forum management " -"in BuddyPress. This is very simple and is usually just a one click\n" -"\t\t\t\tprocess. When you're ready, hit the link below." -msgstr "" - -#: bp-forums/deprecated/1.6.php:203 -msgid "" -"bbPress files were not found. To install the forums component you must " -"download a copy of bbPress and make sure it is in the folder: \"%s\"" -msgstr "" - -#: bp-forums/deprecated/1.6.php:230 -msgid "Install Group Forums" -msgstr "" - -#: bp-forums/deprecated/1.6.php:231 -msgid "Use Existing Installation" -msgstr "" - -#: bp-forums/deprecated/1.7.php:24 -msgid "Forums (Legacy)" -msgstr "" - -#: bp-friends/bp-friends-actions.php:40 -msgid "Friendship could not be requested." -msgstr "" - -#: bp-friends/bp-friends-actions.php:42 -msgid "Friendship requested" -msgstr "" - -#: bp-friends/bp-friends-actions.php:46 -msgid "You are already friends with this user" -msgstr "" - -#: bp-friends/bp-friends-actions.php:48 -msgid "You already have a pending friendship request with this user" -msgstr "" - -#: bp-friends/bp-friends-actions.php:80 -#: bp-templates/bp-legacy/buddypress-functions.php:1400 -msgid "Friendship could not be canceled." -msgstr "" - -#: bp-friends/bp-friends-actions.php:82 -msgid "Friendship canceled" -msgstr "" - -#: bp-friends/bp-friends-actions.php:86 -msgid "You are not yet friends with this user" -msgstr "" - -#: bp-friends/bp-friends-actions.php:88 -msgid "You have a pending friendship request with this user" -msgstr "" - -#: bp-friends/bp-friends-activity.php:104 -msgid "Friendships accepted" -msgstr "" - -#: bp-friends/bp-friends-activity.php:106 -#: bp-friends/bp-friends-activity.php:115 -#: bp-friends/classes/class-bp-friends-component.php:264 -msgid "Friendships" -msgstr "" - -#: bp-friends/bp-friends-activity.php:113 -msgid "New friendships" -msgstr "" - -#: bp-friends/bp-friends-activity.php:120 -msgid "New friendship created" -msgstr "" - -#: bp-friends/bp-friends-activity.php:144 -#: bp-friends/bp-friends-activity.php:178 -msgid "%1$s and %2$s are now friends" -msgstr "" - -#: bp-friends/bp-friends-notifications.php:41 -msgid "%d friends accepted your friendship requests" -msgstr "" - -#: bp-friends/bp-friends-notifications.php:44 -msgid "%s accepted your friendship request" -msgstr "" - -#: bp-friends/bp-friends-notifications.php:57 -msgid "You have %d pending friendship requests" -msgstr "" - -#: bp-friends/bp-friends-notifications.php:60 -msgid "You have a friendship request from %s" -msgstr "" - -#: bp-friends/bp-friends-screens.php:52 -msgid "Friendship accepted" -msgstr "" - -#: bp-friends/bp-friends-screens.php:54 -msgid "Friendship could not be accepted" -msgstr "" - -#: bp-friends/bp-friends-screens.php:63 -msgid "Friendship rejected" -msgstr "" - -#: bp-friends/bp-friends-screens.php:65 -msgid "Friendship could not be rejected" -msgstr "" - -#: bp-friends/bp-friends-screens.php:74 -msgid "Friendship request withdrawn" -msgstr "" - -#: bp-friends/bp-friends-screens.php:76 -msgid "Friendship request could not be withdrawn" -msgstr "" - -#: bp-friends/bp-friends-template.php:84 -msgid "My Friends" -msgstr "" - -#: bp-friends/bp-friends-template.php:84 -#: bp-friends/classes/class-bp-core-friends-widget.php:67 -msgid "%s's Friends" -msgstr "" - -#: bp-friends/bp-friends-template.php:84 -msgid "See All" -msgstr "" - -#: bp-friends/bp-friends-template.php:104 -msgid "You haven't added any friend connections yet." +#: bp-friends/bp-friends-template.php:104 +msgid "You haven't added any friend connections yet." msgstr "" #: bp-friends/bp-friends-template.php:104 @@ -3918,7 +3496,7 @@ msgid "%d friends" msgstr "" #: bp-friends/bp-friends-template.php:371 -#: bp-templates/bp-legacy/buddypress-functions.php:1412 +#: bp-templates/bp-legacy/buddypress-functions.php:1432 msgid "Cancel Friendship Request" msgstr "" @@ -3931,8 +3509,8 @@ msgid "Cancel Friendship" msgstr "" #: bp-friends/bp-friends-template.php:419 -#: bp-templates/bp-legacy/buddypress-functions.php:1402 -#: bp-templates/bp-legacy/buddypress-functions.php:1420 +#: bp-templates/bp-legacy/buddypress-functions.php:1422 +#: bp-templates/bp-legacy/buddypress-functions.php:1440 msgid "Add Friend" msgstr "" @@ -3958,7 +3536,7 @@ msgstr "" #: bp-groups/classes/class-bp-groups-widget.php:227 #: bp-members/classes/class-bp-core-members-widget.php:113 #: bp-members/classes/class-bp-core-members-widget.php:230 -#: bp-members/classes/class-bp-members-admin.php:1056 +#: bp-members/classes/class-bp-members-admin.php:1080 msgid "Active" msgstr "" @@ -3972,7 +3550,8 @@ msgid "Popular" msgstr "" #: bp-friends/classes/class-bp-core-friends-widget.php:139 -#: bp-templates/bp-legacy/buddypress/members/members-loop.php:142 +#: bp-templates/bp-legacy/buddypress/members/members-loop.php:143 +#: bp-templates/bp-nouveau/includes/functions.php:1013 msgid "Sorry, no members were found." msgstr "" @@ -3989,78 +3568,105 @@ msgstr "" msgid "Default friends to show:" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:104 +#: bp-friends/classes/class-bp-friends-component.php:134 msgid "Search Friends..." msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:145 +#: bp-friends/classes/class-bp-friends-component.php:175 #. translators: %s: Friend count for the current user msgid "Friends %s" msgstr "" -#: bp-groups/bp-groups-actions.php:54 +#: bp-friends/screens/requests.php:21 +msgid "Friendship accepted" +msgstr "" + +#: bp-friends/screens/requests.php:23 +msgid "Friendship could not be accepted" +msgstr "" + +#: bp-friends/screens/requests.php:32 +msgid "Friendship rejected" +msgstr "" + +#: bp-friends/screens/requests.php:34 +msgid "Friendship could not be rejected" +msgstr "" + +#: bp-friends/screens/requests.php:43 +msgid "Friendship request withdrawn" +msgstr "" + +#: bp-friends/screens/requests.php:45 +msgid "Friendship request could not be withdrawn" +msgstr "" + +#: bp-groups/actions/access.php:34 msgid "You do not have access to this group." msgstr "" -#: bp-groups/bp-groups-actions.php:65 +#: bp-groups/actions/access.php:45 msgid "You are not an admin of this group." msgstr "" -#: bp-groups/bp-groups-actions.php:125 +#: bp-groups/actions/create.php:27 msgid "Sorry, you are not allowed to create groups." msgstr "" -#: bp-groups/bp-groups-actions.php:150 bp-groups/bp-groups-actions.php:184 -#: bp-groups/bp-groups-actions.php:208 +#: bp-groups/actions/create.php:52 bp-groups/actions/create.php:86 +#: bp-groups/actions/create.php:105 msgid "There was an error saving group details. Please try again." msgstr "" -#: bp-groups/bp-groups-actions.php:164 +#: bp-groups/actions/create.php:66 msgid "Only the group creator may continue editing this group." msgstr "" -#: bp-groups/bp-groups-actions.php:177 +#: bp-groups/actions/create.php:79 msgid "Please fill in all of the required fields" msgstr "" -#: bp-groups/bp-groups-actions.php:330 bp-groups/bp-groups-screens.php:682 +#: bp-groups/actions/create.php:229 +#: bp-groups/screens/single/send-invites.php:86 msgid "Invite successfully removed" msgstr "" -#: bp-groups/bp-groups-actions.php:334 bp-groups/bp-groups-screens.php:693 +#: bp-groups/actions/create.php:233 +#: bp-groups/screens/single/send-invites.php:97 msgid "There was an error removing the invite" msgstr "" -#: bp-groups/bp-groups-actions.php:375 +#: bp-groups/actions/create.php:274 msgid "" "There was an error saving the group profile photo, please try uploading " "again." msgstr "" -#: bp-groups/bp-groups-actions.php:428 bp-groups/bp-groups-actions.php:435 +#: bp-groups/actions/feed.php:39 +msgid "Activity feed for the group, %s." +msgstr "" + +#: bp-groups/actions/join.php:34 bp-groups/actions/join.php:41 msgid "There was an error joining the group." msgstr "" -#: bp-groups/bp-groups-actions.php:437 +#: bp-groups/actions/join.php:43 msgid "You joined the group!" msgstr "" -#: bp-groups/bp-groups-actions.php:484 bp-groups/bp-groups-screens.php:1181 +#: bp-groups/actions/leave-group.php:41 +#: bp-groups/screens/single/admin/manage-members.php:65 msgid "This group must have at least one admin" msgstr "" -#: bp-groups/bp-groups-actions.php:486 +#: bp-groups/actions/leave-group.php:43 msgid "There was an error leaving the group." msgstr "" -#: bp-groups/bp-groups-actions.php:488 bp-groups/bp-groups-functions.php:524 +#: bp-groups/actions/leave-group.php:45 bp-groups/bp-groups-functions.php:526 msgid "You successfully left the group." msgstr "" -#: bp-groups/bp-groups-actions.php:588 -msgid "Activity feed for the group, %s." -msgstr "" - #: bp-groups/bp-groups-activity.php:33 msgid "Created a group" msgstr "" @@ -4085,47 +3691,31 @@ msgstr "" msgid "Group Updates" msgstr "" -#: bp-groups/bp-groups-activity.php:64 -msgid "New group forum topic" -msgstr "" - -#: bp-groups/bp-groups-activity.php:66 -msgid "Forum Topics" -msgstr "" - -#: bp-groups/bp-groups-activity.php:73 -msgid "New group forum post" -msgstr "" - -#: bp-groups/bp-groups-activity.php:75 -msgid "Forum Replies" -msgstr "" - -#: bp-groups/bp-groups-activity.php:104 +#: bp-groups/bp-groups-activity.php:81 msgid "%1$s created the group %2$s" msgstr "" -#: bp-groups/bp-groups-activity.php:132 bp-groups/bp-groups-activity.php:438 +#: bp-groups/bp-groups-activity.php:109 bp-groups/bp-groups-activity.php:457 msgid "%1$s joined the group %2$s" msgstr "" -#: bp-groups/bp-groups-activity.php:179 +#: bp-groups/bp-groups-activity.php:156 msgid "%1$s updated details for the group %2$s" msgstr "" -#: bp-groups/bp-groups-activity.php:183 +#: bp-groups/bp-groups-activity.php:160 msgid "%1$s changed the name and description of the group %2$s" msgstr "" -#: bp-groups/bp-groups-activity.php:187 +#: bp-groups/bp-groups-activity.php:164 msgid "%1$s changed the name of the group %2$s from \"%3$s\" to \"%4$s\"" msgstr "" -#: bp-groups/bp-groups-activity.php:191 +#: bp-groups/bp-groups-activity.php:168 msgid "%1$s changed the description of the group %2$s from \"%3$s\" to \"%4$s\"" msgstr "" -#: bp-groups/bp-groups-activity.php:194 +#: bp-groups/bp-groups-activity.php:171 msgid "%1$s changed the permalink of the group %2$s." msgstr "" @@ -4180,317 +3770,316 @@ msgid "" "the group(s)." msgstr "" -#: bp-groups/bp-groups-admin.php:192 +#: bp-groups/bp-groups-admin.php:191 #. translators: accessibility text msgid "Groups list navigation" msgstr "" -#: bp-groups/bp-groups-admin.php:202 +#: bp-groups/bp-groups-admin.php:200 msgid "Start typing a username to add a new member." msgstr "" -#: bp-groups/bp-groups-admin.php:203 +#: bp-groups/bp-groups-admin.php:201 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:527 +#: bp-groups/bp-groups-admin.php:525 msgid "You cannot remove all administrators from a group." msgstr "" -#: bp-groups/bp-groups-admin.php:532 +#: bp-groups/bp-groups-admin.php:530 msgid "Group name, slug, and description are all required fields." msgstr "" -#: bp-groups/bp-groups-admin.php:534 +#: bp-groups/bp-groups-admin.php:532 msgid "An error occurred when trying to update your group details." msgstr "" -#: bp-groups/bp-groups-admin.php:538 +#: bp-groups/bp-groups-admin.php:536 msgid "The group has been updated successfully." msgstr "" -#: bp-groups/bp-groups-admin.php:542 +#: bp-groups/bp-groups-admin.php:540 msgid "The following users could not be added to the group: %s" msgstr "" -#: bp-groups/bp-groups-admin.php:546 +#: bp-groups/bp-groups-admin.php:544 msgid "The following users were successfully added to the group: %s" msgstr "" -#: bp-groups/bp-groups-admin.php:551 +#: bp-groups/bp-groups-admin.php:549 msgid "An error occurred when trying to modify the following members: %s" msgstr "" -#: bp-groups/bp-groups-admin.php:556 +#: bp-groups/bp-groups-admin.php:554 msgid "The following members were successfully modified: %s" msgstr "" -#: bp-groups/bp-groups-admin.php:583 bp-groups/bp-groups-adminbar.php:45 +#: bp-groups/bp-groups-admin.php:583 bp-groups/bp-groups-admin.php:593 +#: bp-groups/bp-groups-adminbar.php:45 msgid "Edit Group" msgstr "" -#: bp-groups/bp-groups-admin.php:586 bp-groups/bp-groups-admin.php:759 +#: bp-groups/bp-groups-admin.php:586 bp-groups/bp-groups-admin.php:596 +#: bp-groups/bp-groups-admin.php:772 bp-groups/bp-groups-admin.php:787 msgid "Add New" msgstr "" -#: bp-groups/bp-groups-admin.php:605 +#: bp-groups/bp-groups-admin.php:617 msgid "Name and Description" msgstr "" -#: bp-groups/bp-groups-admin.php:609 +#: bp-groups/bp-groups-admin.php:621 #. translators: accessibility text msgid "Group Name" msgstr "" -#: bp-groups/bp-groups-admin.php:613 +#: bp-groups/bp-groups-admin.php:625 msgid "Permalink:" msgstr "" -#: bp-groups/bp-groups-admin.php:617 +#: bp-groups/bp-groups-admin.php:629 msgid "Visit Group" msgstr "" -#: bp-groups/bp-groups-admin.php:622 +#: bp-groups/bp-groups-admin.php:634 #. translators: accessibility text msgid "Group Description" msgstr "" -#: bp-groups/bp-groups-admin.php:651 +#: bp-groups/bp-groups-admin.php:663 msgid "No group found with this ID." msgstr "" -#: bp-groups/bp-groups-admin.php:698 +#: bp-groups/bp-groups-admin.php:710 msgid "Delete Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:699 +#: bp-groups/bp-groups-admin.php:711 msgid "You are about to delete the following groups:" msgstr "" -#: bp-groups/bp-groups-admin.php:707 -#: bp-members/classes/class-bp-members-admin.php:2135 +#: bp-groups/bp-groups-admin.php:719 +#: bp-members/classes/class-bp-members-admin.php:2183 msgid "This action cannot be undone." msgstr "" -#: bp-groups/bp-groups-admin.php:736 +#: bp-groups/bp-groups-admin.php:748 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:756 +#: bp-groups/bp-groups-admin.php:769 bp-groups/bp-groups-admin.php:784 #: bp-groups/classes/class-bp-groups-widget.php:75 #: bp-groups/classes/class-bp-groups-widget.php:204 msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:776 +#: bp-groups/bp-groups-admin.php:806 msgid "Search all Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:799 -#: bp-templates/bp-legacy/buddypress/groups/create.php:201 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:27 +#: bp-groups/bp-groups-admin.php:829 msgid "Enable discussion forum" msgstr "" -#: bp-groups/bp-groups-admin.php:805 +#: bp-groups/bp-groups-admin.php:835 msgid "Privacy" msgstr "" -#: bp-groups/bp-groups-admin.php:807 bp-groups/bp-groups-template.php:1282 +#: bp-groups/bp-groups-admin.php:837 bp-groups/bp-groups-template.php:1280 #: bp-groups/classes/class-bp-groups-list-table.php:601 msgid "Public" msgstr "" -#: bp-groups/bp-groups-admin.php:808 bp-groups/bp-groups-template.php:1284 +#: bp-groups/bp-groups-admin.php:838 bp-groups/bp-groups-template.php:1282 #: bp-groups/classes/class-bp-groups-list-table.php:604 msgid "Private" msgstr "" -#: bp-groups/bp-groups-admin.php:809 +#: bp-groups/bp-groups-admin.php:839 #: bp-groups/classes/class-bp-groups-list-table.php:607 msgid "Hidden" msgstr "" -#: bp-groups/bp-groups-admin.php:815 +#: bp-groups/bp-groups-admin.php:845 msgid "Who can invite others to this group?" msgstr "" -#: bp-groups/bp-groups-admin.php:817 -#: bp-templates/bp-legacy/buddypress/groups/create.php:182 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:104 +#: bp-groups/bp-groups-admin.php:847 +#: 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:818 -#: bp-templates/bp-legacy/buddypress/groups/create.php:184 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:106 +#: bp-groups/bp-groups-admin.php:848 +#: 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:819 -#: bp-templates/bp-legacy/buddypress/groups/create.php:186 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:108 +#: bp-groups/bp-groups-admin.php:849 +#: 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:838 +#: bp-groups/bp-groups-admin.php:868 #. translators: accessibility text msgid "Add new members" msgstr "" -#: bp-groups/bp-groups-admin.php:840 +#: bp-groups/bp-groups-admin.php:870 msgid "Enter a comma-separated list of user logins." msgstr "" -#: bp-groups/bp-groups-admin.php:903 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:25 +#: bp-groups/bp-groups-admin.php:933 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:26 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:18 msgid "Administrators" msgstr "" -#: bp-groups/bp-groups-admin.php:904 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:118 +#: bp-groups/bp-groups-admin.php:934 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:119 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:49 msgid "Moderators" msgstr "" -#: bp-groups/bp-groups-admin.php:905 bp-groups/bp-groups-template.php:4561 -#: bp-groups/classes/class-bp-groups-component.php:680 +#: bp-groups/bp-groups-admin.php:935 bp-groups/bp-groups-template.php:4340 +#: bp-groups/classes/class-bp-groups-component.php:731 #: bp-members/classes/class-bp-core-members-widget.php:249 #: bp-members/classes/class-bp-members-component.php:38 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:213 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:214 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:79 +#: bp-templates/bp-nouveau/includes/customizer.php:263 #. translators: accessibility text msgid "Members" msgstr "" -#: bp-groups/bp-groups-admin.php:906 +#: bp-groups/bp-groups-admin.php:936 msgid "Banned Members" msgstr "" -#: bp-groups/bp-groups-admin.php:943 +#: bp-groups/bp-groups-admin.php:973 #. translators: accessibility text msgid "Select group role for member" msgstr "" -#: bp-groups/bp-groups-admin.php:946 +#: bp-groups/bp-groups-admin.php:976 msgid "Roles" msgstr "" -#: bp-groups/bp-groups-admin.php:947 +#: bp-groups/bp-groups-admin.php:977 msgid "Administrator" msgstr "" -#: bp-groups/bp-groups-admin.php:948 +#: bp-groups/bp-groups-admin.php:978 msgid "Moderator" msgstr "" -#: bp-groups/bp-groups-admin.php:949 +#: bp-groups/bp-groups-admin.php:979 #: bp-members/classes/class-bp-members-admin.php:819 msgid "Member" msgstr "" -#: bp-groups/bp-groups-admin.php:951 +#: bp-groups/bp-groups-admin.php:981 msgid "Banned" msgstr "" -#: bp-groups/bp-groups-admin.php:954 -#: bp-members/classes/class-bp-members-admin.php:1507 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:85 -#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:21 +#: bp-groups/bp-groups-admin.php:984 +#: bp-members/classes/class-bp-members-admin.php:1531 +#: 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:955 +#: bp-groups/bp-groups-admin.php:985 msgid "Remove" msgstr "" -#: bp-groups/bp-groups-admin.php:957 +#: bp-groups/bp-groups-admin.php:987 msgid "Ban" msgstr "" -#: bp-groups/bp-groups-admin.php:999 +#: bp-groups/bp-groups-admin.php:1029 msgid "No members of this type" msgstr "" -#: bp-groups/bp-groups-admin.php:1028 +#: bp-groups/bp-groups-admin.php:1058 #: bp-groups/classes/class-bp-group-extension.php:522 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:52 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:123 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:92 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:126 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:107 -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:46 -#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:39 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:53 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:110 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:108 +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:47 +#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:40 +#: bp-templates/bp-nouveau/includes/functions.php:1258 +#: bp-templates/bp-nouveau/includes/functions.php:1289 +#: bp-templates/bp-nouveau/includes/functions.php:1300 +#: bp-templates/bp-nouveau/includes/functions.php:1311 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:348 msgid "Save Changes" msgstr "" -#: bp-groups/bp-groups-admin.php:1058 +#: bp-groups/bp-groups-admin.php:1088 #. translators: accessibility text msgid "Select group type" msgstr "" -#: bp-groups/bp-groups-admin.php:1068 +#: bp-groups/bp-groups-admin.php:1098 msgid "(Not available on the front end)" msgstr "" -#: bp-groups/bp-groups-admin.php:1163 +#: bp-groups/bp-groups-admin.php:1193 msgid "«" msgstr "" -#: bp-groups/bp-groups-admin.php:1164 +#: bp-groups/bp-groups-admin.php:1194 msgid "»" msgstr "" -#: bp-groups/bp-groups-admin.php:1170 bp-groups/bp-groups-template.php:4408 +#: bp-groups/bp-groups-admin.php:1200 bp-groups/bp-groups-template.php:4187 #: bp-members/bp-members-template.php:500 msgid "Viewing 1 member" msgstr "" -#: bp-groups/bp-groups-admin.php:1239 +#: bp-groups/bp-groups-admin.php:1269 #. Translators: 1: user_login, 2: user_email. msgid "%1$s (%2$s)" msgstr "" -#: bp-groups/bp-groups-admin.php:1335 +#: bp-groups/bp-groups-admin.php:1365 msgid "There was an error while changing group type. Please try again." msgstr "" -#: bp-groups/bp-groups-admin.php:1338 +#: bp-groups/bp-groups-admin.php:1368 msgid "Group type was changed successfully." msgstr "" -#: bp-groups/bp-groups-forums.php:148 bp-groups/bp-groups-forums.php:444 -msgid "%1$s replied to the forum topic %2$s in the group %3$s" -msgstr "" - -#: bp-groups/bp-groups-forums.php:275 -msgid "%1$s started the forum topic %2$s in the group %3$s" -msgstr "" - -#: bp-groups/bp-groups-forums.php:373 -msgid "%1$s edited the forum topic %2$s in the group %3$s" -msgstr "" - -#: bp-groups/bp-groups-functions.php:170 +#: bp-groups/bp-groups-functions.php:179 #: bp-groups/classes/class-bp-groups-member.php:347 msgid "Group Admin" msgstr "" -#: bp-groups/bp-groups-functions.php:515 +#: bp-groups/bp-groups-functions.php:517 msgid "As the only admin, you cannot leave the group." msgstr "" -#: bp-groups/bp-groups-functions.php:1287 +#: bp-groups/bp-groups-functions.php:1315 msgid "%1$s posted an update in the group %2$s" msgstr "" -#: bp-groups/bp-groups-functions.php:2242 +#: bp-groups/bp-groups-functions.php:2309 msgid "Group type already exists." msgstr "" -#: bp-groups/bp-groups-functions.php:2269 +#: bp-groups/bp-groups-functions.php:2336 msgid "You may not register a group type with this name." msgstr "" @@ -4550,484 +4139,263 @@ msgstr "" msgid "You have an invitation to the group: %s" msgstr "" -#: bp-groups/bp-groups-screens.php:83 -msgid "Group invite could not be accepted" +#: bp-groups/bp-groups-template.php:235 +msgid "Group Types:" msgstr "" -#: bp-groups/bp-groups-screens.php:88 -msgid "Group invite accepted. Visit %s." +#: bp-groups/bp-groups-template.php:684 +msgid "Public Group" msgstr "" -#: bp-groups/bp-groups-screens.php:110 -msgid "Group invite could not be rejected" +#: bp-groups/bp-groups-template.php:686 +msgid "Hidden Group" msgstr "" -#: bp-groups/bp-groups-screens.php:112 -msgid "Group invite rejected" +#: bp-groups/bp-groups-template.php:688 +msgid "Private Group" msgstr "" -#: bp-groups/bp-groups-screens.php:221 -msgid "It looks like you've already said that!" +#: bp-groups/bp-groups-template.php:690 +msgid "Group" msgstr "" -#: bp-groups/bp-groups-screens.php:224 -msgid "There was an error when replying to that topic" +#: bp-groups/bp-groups-template.php:942 +msgid "not yet active" msgstr "" -#: bp-groups/bp-groups-screens.php:226 -msgid "Your reply was posted successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:247 -msgid "There was an error when making that topic a sticky" -msgstr "" - -#: bp-groups/bp-groups-screens.php:249 -msgid "The topic was made sticky successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:269 -msgid "There was an error when unsticking that topic" -msgstr "" - -#: bp-groups/bp-groups-screens.php:271 -msgid "The topic was unstuck successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:291 -msgid "There was an error when closing that topic" -msgstr "" - -#: bp-groups/bp-groups-screens.php:293 -msgid "The topic was closed successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:313 -msgid "There was an error when opening that topic" -msgstr "" - -#: bp-groups/bp-groups-screens.php:315 -msgid "The topic was opened successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:352 -msgid "There was an error deleting the topic" -msgstr "" - -#: bp-groups/bp-groups-screens.php:354 -msgid "The topic was deleted successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:385 -msgid "There was an error when editing that topic" -msgstr "" - -#: bp-groups/bp-groups-screens.php:387 -msgid "The topic was edited successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:433 -msgid "There was an error deleting that post" -msgstr "" - -#: bp-groups/bp-groups-screens.php:435 -msgid "The post was deleted successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:466 -msgid "There was an error when editing that post" -msgstr "" - -#: bp-groups/bp-groups-screens.php:468 -msgid "The post was edited successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:492 bp-groups/bp-groups-screens.php:518 -msgid "You have been banned from this group." -msgstr "" - -#: bp-groups/bp-groups-screens.php:532 -msgid "This group does not have a forum setup yet." -msgstr "" - -#: bp-groups/bp-groups-screens.php:631 -msgid "Group invites sent." -msgstr "" - -#: bp-groups/bp-groups-screens.php:687 -msgid "You are not allowed to send or remove invites" -msgstr "" - -#: bp-groups/bp-groups-screens.php:690 -msgid "The member requested to join the group" -msgstr "" - -#: bp-groups/bp-groups-screens.php:720 -msgid "Group invite accepted" -msgstr "" - -#: bp-groups/bp-groups-screens.php:722 -msgid "There was an error accepting the group invitation. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:734 -msgid "There was an error sending your group membership request. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:736 -msgid "" -"Your membership request was sent to the group administrator successfully. " -"You will be notified when the group administrator responds to your request." -msgstr "" - -#: bp-groups/bp-groups-screens.php:844 -msgid "Groups must have a name and a description. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:852 -msgid "There was an error updating group details. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:854 -msgid "Group details were successfully updated." -msgstr "" - -#: bp-groups/bp-groups-screens.php:950 -msgid "There was an error updating group settings. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:952 -msgid "Group settings were successfully updated." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1067 -msgid "The new group profile photo was uploaded successfully." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1152 -msgid "There was an error when promoting that user. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1154 -msgid "User promoted successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1185 -msgid "There was an error when demoting that user. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1187 -msgid "User demoted successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1211 -msgid "There was an error when banning that user. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1213 -msgid "User banned successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1237 -msgid "There was an error when unbanning that user. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1239 -msgid "User ban removed successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1263 -msgid "There was an error removing that user from the group. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1265 -msgid "User removed successfully" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1329 -msgid "There was an error accepting the membership request. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1331 -msgid "Group membership request accepted" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1340 -msgid "There was an error rejecting the membership request. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1342 -msgid "Group membership request rejected" -msgstr "" - -#: bp-groups/bp-groups-screens.php:1411 -msgid "There was an error deleting the group. Please try again." -msgstr "" - -#: bp-groups/bp-groups-screens.php:1413 -msgid "The group was deleted successfully." -msgstr "" - -#: bp-groups/bp-groups-template.php:235 -msgid "Group Types:" -msgstr "" - -#: bp-groups/bp-groups-template.php:686 -msgid "Public Group" -msgstr "" - -#: bp-groups/bp-groups-template.php:688 -msgid "Hidden Group" -msgstr "" - -#: bp-groups/bp-groups-template.php:690 -msgid "Private Group" -msgstr "" - -#: bp-groups/bp-groups-template.php:692 -msgid "Group" -msgstr "" - -#: bp-groups/bp-groups-template.php:944 -msgid "not yet active" -msgstr "" - -#: bp-groups/bp-groups-template.php:1570 +#: bp-groups/bp-groups-template.php:1568 msgid "Group creator profile photo of %s" msgstr "" -#: bp-groups/bp-groups-template.php:1640 +#: bp-groups/bp-groups-template.php:1636 msgid "No Admins" msgstr "" -#: bp-groups/bp-groups-template.php:1676 +#: bp-groups/bp-groups-template.php:1672 msgid "No Mods" msgstr "" -#: bp-groups/bp-groups-template.php:1816 +#: bp-groups/bp-groups-template.php:1812 msgid "Filter Groups" msgstr "" -#: bp-groups/bp-groups-template.php:1916 +#: bp-groups/bp-groups-template.php:1912 msgid "Viewing 1 group" msgstr "" -#: bp-groups/bp-groups-template.php:1918 +#: bp-groups/bp-groups-template.php:1914 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] "" -#: bp-groups/bp-groups-template.php:2018 +#: bp-groups/bp-groups-template.php:2014 +#: bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php:40 +#. translators: %s = number of members msgid "%s member" msgid_plural "%s members" msgstr[0] "" msgstr[1] "" -#: bp-groups/bp-groups-template.php:2113 -msgid "%d topic" -msgstr "" - -#: bp-groups/bp-groups-template.php:2115 -msgid "%d topics" -msgstr "" - -#: bp-groups/bp-groups-template.php:2181 -msgid "%d posts" -msgstr "" - -#: bp-groups/bp-groups-template.php:2441 bp-groups/bp-groups-template.php:2517 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:74 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:168 +#: bp-groups/bp-groups-template.php:2280 bp-groups/bp-groups-template.php:2356 +#: 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:35 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:65 msgid "Demote to Member" msgstr "" -#: bp-groups/bp-groups-template.php:2454 bp-groups/bp-groups-template.php:2530 -#: bp-groups/bp-groups-template.php:4294 +#: bp-groups/bp-groups-template.php:2293 bp-groups/bp-groups-template.php:2369 +#: bp-groups/bp-groups-template.php:4073 msgid "joined %s" msgstr "" -#: bp-groups/bp-groups-template.php:2477 +#: bp-groups/bp-groups-template.php:2316 msgid "This group has no administrators" msgstr "" -#: bp-groups/bp-groups-template.php:2516 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:167 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:276 +#: bp-groups/bp-groups-template.php:2355 +#: 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:64 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:884 msgid "Promote to Admin" msgstr "" -#: bp-groups/bp-groups-template.php:2550 +#: bp-groups/bp-groups-template.php:2389 msgid "This group has no moderators" msgstr "" -#: bp-groups/bp-groups-template.php:2911 +#: bp-groups/bp-groups-template.php:2746 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:3498 -#: bp-templates/bp-legacy/buddypress-functions.php:1501 -#: bp-templates/bp-legacy/buddypress-functions.php:1514 +#: bp-groups/bp-groups-template.php:3277 +#: bp-templates/bp-legacy/buddypress-functions.php:1521 +#: bp-templates/bp-legacy/buddypress-functions.php:1534 msgid "Leave Group" msgstr "" -#: bp-groups/bp-groups-template.php:3519 -#: bp-templates/bp-legacy/buddypress-functions.php:1535 +#: bp-groups/bp-groups-template.php:3298 +#: bp-templates/bp-legacy/buddypress-functions.php:1555 msgid "Join Group" msgstr "" -#: bp-groups/bp-groups-template.php:3537 +#: bp-groups/bp-groups-template.php:3316 msgid "Accept Invitation" msgstr "" -#: bp-groups/bp-groups-template.php:3552 -#: bp-templates/bp-legacy/buddypress-functions.php:1524 +#: bp-groups/bp-groups-template.php:3331 +#: bp-templates/bp-legacy/buddypress-functions.php:1544 msgid "Request Sent" msgstr "" -#: bp-groups/bp-groups-template.php:3567 -#: bp-templates/bp-legacy/buddypress-functions.php:1537 +#: bp-groups/bp-groups-template.php:3346 +#: bp-templates/bp-legacy/buddypress-functions.php:1557 msgid "Request Membership" msgstr "" -#: bp-groups/bp-groups-template.php:3712 +#: bp-groups/bp-groups-template.php:3491 msgid "This group is not currently accessible." msgstr "" -#: bp-groups/bp-groups-template.php:3723 +#: bp-groups/bp-groups-template.php:3502 msgid "" "You must accept your pending invitation before you can access this private " "group." msgstr "" -#: bp-groups/bp-groups-template.php:3725 +#: bp-groups/bp-groups-template.php:3504 msgid "" "This is a private group and you must request group membership in order to " "join." msgstr "" -#: bp-groups/bp-groups-template.php:3728 +#: bp-groups/bp-groups-template.php:3507 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:3731 +#: bp-groups/bp-groups-template.php:3510 msgid "" "This is a private group. Your membership request is awaiting approval from " "the group administrator." msgstr "" -#: bp-groups/bp-groups-template.php:3739 +#: bp-groups/bp-groups-template.php:3518 msgid "This is a hidden group and only invited members can join." msgstr "" -#: bp-groups/bp-groups-template.php:4410 bp-members/bp-members-template.php:502 +#: bp-groups/bp-groups-template.php:4189 bp-members/bp-members-template.php:502 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:4538 -#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:10 -#: bp-templates/bp-legacy/buddypress/groups/single/admin.php:10 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:24 +#: bp-groups/bp-groups-template.php:4317 +#: 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:4580 +#: bp-groups/bp-groups-template.php:4359 #: bp-notifications/bp-notifications-template.php:1000 -#: bp-templates/bp-legacy/buddypress/blogs/index.php:96 -#: bp-templates/bp-legacy/buddypress/forums/index.php:94 -#: bp-templates/bp-legacy/buddypress/groups/index.php:92 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:50 -#: bp-templates/bp-legacy/buddypress/members/index.php:91 -#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:18 -#: bp-templates/bp-legacy/buddypress/members/single/forums.php:17 -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:19 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:19 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:97 +#: bp-templates/bp-legacy/buddypress/groups/index.php:93 +#: bp-templates/bp-legacy/buddypress/members/index.php:92 +#: 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:2041 msgid "Order By:" msgstr "" -#: bp-groups/bp-groups-template.php:4583 +#: bp-groups/bp-groups-template.php:4362 +#: bp-templates/bp-nouveau/includes/members/functions.php:113 msgid "Oldest" msgstr "" -#: bp-groups/bp-groups-template.php:4586 +#: bp-groups/bp-groups-template.php:4365 +#: bp-templates/bp-nouveau/includes/members/functions.php:117 msgid "Group Activity" msgstr "" -#: bp-groups/bp-groups-template.php:4589 +#: bp-groups/bp-groups-template.php:4368 #: bp-groups/classes/class-bp-groups-widget.php:127 #: bp-groups/classes/class-bp-groups-widget.php:229 -#: bp-templates/bp-legacy/buddypress/blogs/index.php:100 -#: bp-templates/bp-legacy/buddypress/groups/index.php:98 -#: bp-templates/bp-legacy/buddypress/members/index.php:97 -#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:22 -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:23 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:24 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:101 +#: bp-templates/bp-legacy/buddypress/groups/index.php:99 +#: bp-templates/bp-legacy/buddypress/members/index.php:98 +#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:23 +#: 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:588 +#: 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:5011 +#: bp-groups/bp-groups-template.php:4790 msgid "Group photo" msgstr "" -#: bp-groups/bp-groups-template.php:5307 bp-groups/bp-groups-template.php:5332 +#: bp-groups/bp-groups-template.php:5099 bp-groups/bp-groups-template.php:5124 msgid "Recently Joined" msgstr "" -#: bp-groups/bp-groups-template.php:5308 bp-groups/bp-groups-template.php:5335 +#: bp-groups/bp-groups-template.php:5100 bp-groups/bp-groups-template.php:5127 msgid "Most Popular" msgstr "" -#: bp-groups/bp-groups-template.php:5309 bp-groups/bp-groups-template.php:5338 +#: bp-groups/bp-groups-template.php:5101 bp-groups/bp-groups-template.php:5130 msgid "Administrator Of" msgstr "" -#: bp-groups/bp-groups-template.php:5310 bp-groups/bp-groups-template.php:5341 +#: bp-groups/bp-groups-template.php:5102 bp-groups/bp-groups-template.php:5133 msgid "Moderator Of" msgstr "" -#: bp-groups/bp-groups-template.php:5368 +#: bp-groups/bp-groups-template.php:5160 msgid "Viewing groups of the type: %s" msgstr "" -#: bp-groups/bp-groups-template.php:5452 +#: bp-groups/bp-groups-template.php:5244 msgid "Group avatar" msgstr "" -#: bp-groups/bp-groups-template.php:5715 +#: bp-groups/bp-groups-template.php:5505 msgid "requested %s" msgstr "" -#: bp-groups/bp-groups-template.php:5786 +#: bp-groups/bp-groups-template.php:5576 msgid "Viewing 1 request" msgstr "" -#: bp-groups/bp-groups-template.php:5788 +#: bp-groups/bp-groups-template.php:5578 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:6055 +#: bp-groups/bp-groups-template.php:5845 msgid "Viewing 1 invitation" msgstr "" -#: bp-groups/bp-groups-template.php:6057 +#: bp-groups/bp-groups-template.php:5847 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:6078 +#: bp-groups/bp-groups-template.php:5868 msgid "Group Activity RSS Feed" msgstr "" -#: bp-groups/bp-groups-template.php:6360 +#: bp-groups/bp-groups-template.php:6150 msgid "%s group" msgid_plural "%s groups" msgstr[0] "" @@ -5042,39 +4410,40 @@ msgstr "" msgid "No groups matched the current filter." msgstr "" -#: bp-groups/classes/class-bp-group-extension.php:858 +#: bp-groups/classes/class-bp-group-extension.php:864 msgid "You do not have access to this content." msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:490 -#: bp-groups/classes/class-bp-groups-component.php:523 +#: bp-groups/classes/class-bp-groups-component.php:560 +#: bp-groups/classes/class-bp-groups-component.php:593 +#: bp-templates/bp-nouveau/includes/groups/classes.php:229 msgid "Memberships" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:501 +#: bp-groups/classes/class-bp-groups-component.php:571 msgid "Invitations" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:652 +#: bp-groups/classes/class-bp-groups-component.php:703 msgid "Details" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:665 +#: bp-groups/classes/class-bp-groups-component.php:716 msgid "Photo" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:673 -#: bp-templates/bp-legacy/buddypress/groups/create.php:314 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php:11 +#: bp-groups/classes/class-bp-groups-component.php:724 +#: bp-templates/bp-legacy/buddypress/groups/create.php:296 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php:12 #. translators: accessibility text msgid "Cover Image" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:687 +#: bp-groups/classes/class-bp-groups-component.php:738 msgid "Requests" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:834 +#: bp-groups/classes/class-bp-groups-component.php:885 msgid "No Group Profile Photo" msgstr "" @@ -5125,7 +4494,7 @@ msgid "No Group Type" msgstr "" #: bp-groups/classes/class-bp-groups-list-table.php:788 -#: bp-members/classes/class-bp-members-admin.php:2188 +#: bp-members/classes/class-bp-members-admin.php:2236 #: bp-xprofile/classes/class-bp-xprofile-user-admin.php:388 msgid "Change" msgstr "" @@ -5154,206 +4523,316 @@ msgstr "" msgid "Default groups to show:" msgstr "" -#: bp-loader.php:62 -msgid "Your site does not support BuddyPress." +#: bp-groups/screens/single/admin/delete-group.php:43 +msgid "There was an error deleting the group. Please try again." msgstr "" -#: bp-loader.php:64 -#. translators: 1: current PHP version, 2: required PHP version -msgid "" -"Your site is currently running PHP version %1$s, while BuddyPress requires " -"version %2$s or greater." +#: bp-groups/screens/single/admin/delete-group.php:45 +msgid "The group was deleted successfully." msgstr "" -#: bp-loader.php:65 -msgid "Please update your server or deactivate BuddyPress." +#: bp-groups/screens/single/admin/edit-details.php:34 +msgid "Groups must have a name and a description. Please try again." msgstr "" -#: bp-members/bp-members-actions.php:57 -#: bp-members/classes/class-bp-members-admin.php:359 -msgid "User removed as spammer." +#: bp-groups/screens/single/admin/edit-details.php:42 +msgid "There was an error updating group details. Please try again." msgstr "" -#: bp-members/bp-members-actions.php:95 -msgid "%s has been deleted from the system." +#: bp-groups/screens/single/admin/edit-details.php:44 +msgid "Group details were successfully updated." msgstr "" -#: bp-members/bp-members-actions.php:97 -msgid "There was an error deleting %s from the system. Please try again." +#: bp-groups/screens/single/admin/group-avatar.php:90 +msgid "The new group profile photo was uploaded successfully." msgstr "" -#: bp-members/bp-members-activity.php:24 -msgid "New member registered" +#: bp-groups/screens/single/admin/group-settings.php:70 +msgid "There was an error updating group settings. Please try again." msgstr "" -#: bp-members/bp-members-activity.php:26 -msgid "New Members" +#: bp-groups/screens/single/admin/group-settings.php:72 +msgid "Group settings were successfully updated." msgstr "" -#: bp-members/bp-members-activity.php:50 -msgid "%s became a registered member" +#: bp-groups/screens/single/admin/manage-members.php:36 +msgid "There was an error when promoting that user. Please try again." msgstr "" -#: bp-members/bp-members-adminbar.php:41 -msgid "Edit My Profile" +#: bp-groups/screens/single/admin/manage-members.php:38 +msgid "User promoted successfully" msgstr "" -#: bp-members/bp-members-adminbar.php:55 -msgid "Log in" +#: bp-groups/screens/single/admin/manage-members.php:69 +msgid "There was an error when demoting that user. Please try again." msgstr "" -#: bp-members/bp-members-adminbar.php:95 -msgid "Edit Member" +#: bp-groups/screens/single/admin/manage-members.php:71 +msgid "User demoted successfully" msgstr "" -#: bp-members/bp-members-adminbar.php:104 -#: bp-members/classes/class-bp-members-admin.php:436 -#: bp-members/classes/class-bp-members-admin.php:437 -#: bp-members/classes/class-bp-members-admin.php:473 -#: bp-members/classes/class-bp-members-admin.php:474 -#: bp-xprofile/bp-xprofile-template.php:1243 -msgid "Edit Profile" +#: bp-groups/screens/single/admin/manage-members.php:95 +msgid "There was an error when banning that user. Please try again." msgstr "" -#: bp-members/bp-members-adminbar.php:113 -#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:482 -msgid "Edit Profile Photo" +#: bp-groups/screens/single/admin/manage-members.php:97 +msgid "User banned successfully" msgstr "" -#: bp-members/bp-members-adminbar.php:123 -msgid "Edit Cover Image" +#: bp-groups/screens/single/admin/manage-members.php:121 +msgid "There was an error when unbanning that user. Please try again." msgstr "" -#: bp-members/bp-members-adminbar.php:143 -#: bp-settings/classes/class-bp-settings-component.php:148 -#: bp-settings/classes/class-bp-settings-component.php:209 -#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:43 -msgid "Delete Account" +#: bp-groups/screens/single/admin/manage-members.php:123 +msgid "User ban removed successfully" msgstr "" -#: bp-members/bp-members-functions.php:1206 -msgid "" -"User last_activity data is no longer stored in usermeta. Use " -"bp_get_user_last_activity() instead." +#: bp-groups/screens/single/admin/manage-members.php:147 +msgid "There was an error removing that user from the group. Please try again." msgstr "" -#: bp-members/bp-members-functions.php:1236 -msgid "" -"User last_activity data is no longer stored in usermeta. Use " -"bp_update_user_last_activity() instead." +#: bp-groups/screens/single/admin/manage-members.php:149 +msgid "User removed successfully" msgstr "" -#: bp-members/bp-members-functions.php:1451 -#: bp-members/bp-members-functions.php:2499 -msgid "<strong>ERROR</strong>: Your account has been marked as a spammer." +#: bp-groups/screens/single/admin/membership-requests.php:38 +msgid "There was an error accepting the membership request. Please try again." msgstr "" -#: bp-members/bp-members-functions.php:1672 -msgid "Please check your email address." +#: bp-groups/screens/single/admin/membership-requests.php:40 +msgid "Group membership request accepted" msgstr "" -#: bp-members/bp-members-functions.php:1676 -#: bp-members/bp-members-functions.php:1680 -msgid "Sorry, that email address is not allowed!" +#: bp-groups/screens/single/admin/membership-requests.php:49 +msgid "There was an error rejecting the membership request. Please try again." msgstr "" -#: bp-members/bp-members-functions.php:1684 -msgid "Sorry, that email address is already used!" +#: bp-groups/screens/single/admin/membership-requests.php:51 +msgid "Group membership request rejected" msgstr "" -#: bp-members/bp-members-functions.php:1724 -msgid "Please enter a username" +#: bp-groups/screens/single/request-membership.php:28 +msgid "Group invite accepted" msgstr "" -#: bp-members/bp-members-functions.php:1730 -msgid "That username is not allowed" +#: bp-groups/screens/single/request-membership.php:30 +msgid "There was an error accepting the group invitation. Please try again." msgstr "" -#: bp-members/bp-members-functions.php:1735 -msgid "Usernames can contain only letters, numbers, ., -, and @" +#: bp-groups/screens/single/request-membership.php:42 +msgid "There was an error sending your group membership request. Please try again." msgstr "" -#: bp-members/bp-members-functions.php:1740 -msgid "Username must be at least 4 characters" +#: bp-groups/screens/single/request-membership.php:44 +msgid "" +"Your membership request was sent to the group administrator successfully. " +"You will be notified when the group administrator responds to your request." msgstr "" -#: bp-members/bp-members-functions.php:1745 -msgid "Sorry, usernames may not contain the character \"_\"!" +#: bp-groups/screens/single/send-invites.php:35 +msgid "Group invites sent." msgstr "" -#: bp-members/bp-members-functions.php:1752 -msgid "Sorry, usernames must have letters too!" +#: bp-groups/screens/single/send-invites.php:91 +msgid "You are not allowed to send or remove invites" msgstr "" -#: bp-members/bp-members-functions.php:1764 -msgid "Sorry, that username already exists!" +#: bp-groups/screens/single/send-invites.php:94 +msgid "The member requested to join the group" msgstr "" -#: bp-members/bp-members-functions.php:1978 -#: bp-members/bp-members-functions.php:2005 -msgid "Invalid activation key." +#: bp-groups/screens/user/invites.php:24 +msgid "Group invite could not be accepted" msgstr "" -#: bp-members/bp-members-functions.php:1985 -msgid "The user is already active." +#: bp-groups/screens/user/invites.php:29 +msgid "Group invite accepted. Visit %s." msgstr "" -#: bp-members/bp-members-functions.php:1987 -msgid "The site is already active." +#: bp-groups/screens/user/invites.php:53 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:140 +msgid "Group invite could not be rejected" +msgstr "" + +#: bp-groups/screens/user/invites.php:55 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:148 +msgid "Group invite rejected" +msgstr "" + +#: bp-loader.php:62 +msgid "Your site does not support BuddyPress." +msgstr "" + +#: bp-loader.php:64 +#. translators: 1: current PHP version, 2: required PHP version +msgid "" +"Your site is currently running PHP version %1$s, while BuddyPress requires " +"version %2$s or greater." +msgstr "" + +#: bp-loader.php:65 +msgid "Please update your server or deactivate BuddyPress." +msgstr "" + +#: bp-members/bp-members-activity.php:24 +msgid "New member registered" +msgstr "" + +#: bp-members/bp-members-activity.php:26 +msgid "New Members" +msgstr "" + +#: bp-members/bp-members-activity.php:50 +msgid "%s became a registered member" +msgstr "" + +#: bp-members/bp-members-adminbar.php:41 +msgid "Edit My Profile" +msgstr "" + +#: bp-members/bp-members-adminbar.php:55 +msgid "Log in" +msgstr "" + +#: bp-members/bp-members-adminbar.php:95 +msgid "Edit Member" +msgstr "" + +#: bp-members/bp-members-adminbar.php:104 +#: bp-members/classes/class-bp-members-admin.php:436 +#: bp-members/classes/class-bp-members-admin.php:437 +#: bp-members/classes/class-bp-members-admin.php:473 +#: bp-members/classes/class-bp-members-admin.php:474 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/edit.php:11 +#: bp-xprofile/bp-xprofile-template.php:1248 +msgid "Edit Profile" +msgstr "" + +#: bp-members/bp-members-adminbar.php:113 +#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:482 +msgid "Edit Profile Photo" +msgstr "" + +#: bp-members/bp-members-adminbar.php:123 +msgid "Edit Cover Image" +msgstr "" + +#: bp-members/bp-members-adminbar.php:143 +#: bp-settings/classes/class-bp-settings-component.php:188 +#: bp-settings/classes/class-bp-settings-component.php:249 +#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:44 +#: 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-functions.php:1039 +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:1074 +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:1289 +#: bp-members/bp-members-functions.php:2377 +msgid "<strong>ERROR</strong>: Your account has been marked as a spammer." +msgstr "" + +#: bp-members/bp-members-functions.php:1522 +msgid "Please check your email address." +msgstr "" + +#: bp-members/bp-members-functions.php:1526 +#: bp-members/bp-members-functions.php:1530 +msgid "Sorry, that email address is not allowed!" +msgstr "" + +#: bp-members/bp-members-functions.php:1534 +msgid "Sorry, that email address is already used!" +msgstr "" + +#: bp-members/bp-members-functions.php:1574 +msgid "Please enter a username" +msgstr "" + +#: bp-members/bp-members-functions.php:1580 +msgid "That username is not allowed" +msgstr "" + +#: bp-members/bp-members-functions.php:1585 +msgid "Usernames can contain only letters, numbers, ., -, and @" msgstr "" -#: bp-members/bp-members-functions.php:2020 +#: bp-members/bp-members-functions.php:1590 +msgid "Username must be at least 4 characters" +msgstr "" + +#: bp-members/bp-members-functions.php:1595 +msgid "Sorry, usernames may not contain the character \"_\"!" +msgstr "" + +#: bp-members/bp-members-functions.php:1602 +msgid "Sorry, usernames must have letters too!" +msgstr "" + +#: bp-members/bp-members-functions.php:1614 +msgid "Sorry, that username already exists!" +msgstr "" + +#: bp-members/bp-members-functions.php:1828 +#: bp-members/bp-members-functions.php:1855 +msgid "Invalid activation key." +msgstr "" + +#: bp-members/bp-members-functions.php:1835 +msgid "The user is already active." +msgstr "" + +#: bp-members/bp-members-functions.php:1837 +msgid "The site is already active." +msgstr "" + +#: bp-members/bp-members-functions.php:1867 msgid "Could not create user" msgstr "" -#: bp-members/bp-members-functions.php:2034 +#: bp-members/bp-members-functions.php:1881 msgid "That username is already activated." msgstr "" -#: bp-members/bp-members-functions.php:2362 +#: bp-members/bp-members-functions.php:2240 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:2364 +#: bp-members/bp-members-functions.php:2242 msgid "" "<strong>ERROR</strong>: Your account has not been activated. Check your " "email for the activation link." msgstr "" -#: bp-members/bp-members-functions.php:2395 +#: bp-members/bp-members-functions.php:2273 msgid "<strong>ERROR</strong>: Your account has already been activated." msgstr "" -#: bp-members/bp-members-functions.php:2397 +#: bp-members/bp-members-functions.php:2275 msgid "Activation email resent! Please check your inbox or spam folder." msgstr "" -#: bp-members/bp-members-functions.php:2586 +#: bp-members/bp-members-functions.php:2464 msgid "Member type already exists." msgstr "" -#: bp-members/bp-members-functions.php:2609 +#: bp-members/bp-members-functions.php:2487 msgid "You may not register a member type with this name." msgstr "" -#: bp-members/bp-members-screens.php:127 -msgid "Please make sure you enter your password twice" -msgstr "" - -#: bp-members/bp-members-screens.php:131 -msgid "The passwords you entered do not match." -msgstr "" - -#: bp-members/bp-members-screens.php:151 -msgid "This is a required field" -msgstr "" - -#: bp-members/bp-members-screens.php:358 -msgid "Your account is now active!" -msgstr "" - #: bp-members/bp-members-template.php:482 msgid "Viewing 1 active member" msgstr "" @@ -5388,11 +4867,11 @@ msgstr[1] "" msgid "Viewing members of the type: %s" msgstr "" -#: bp-members/bp-members-template.php:2437 +#: bp-members/bp-members-template.php:2465 msgid "Your Profile Photo" msgstr "" -#: bp-members/bp-members-template.php:2527 +#: bp-members/bp-members-template.php:2555 msgid "Activity RSS Feed" msgstr "" @@ -5463,14 +4942,14 @@ msgid "An error occurred while trying to update the profile." msgstr "" #: bp-members/classes/class-bp-members-admin.php:407 -#: bp-xprofile/bp-xprofile-screens.php:100 +#: bp-xprofile/screens/edit.php:65 msgid "" -"Please make sure you fill in all required fields in this profile field " -"group before saving." +"Your changes have not been saved. Please fill in all required fields, and " +"save your changes again." msgstr "" #: bp-members/classes/class-bp-members-admin.php:413 -#: bp-xprofile/bp-xprofile-screens.php:166 +#: bp-xprofile/screens/edit.php:131 msgid "" "There was a problem updating some of your profile information. Please try " "again." @@ -5525,231 +5004,232 @@ msgstr "" msgid "← Back to Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:998 +#: bp-members/classes/class-bp-members-admin.php:1022 msgid "No user found with this ID." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1031 +#: bp-members/classes/class-bp-members-admin.php:1055 msgid "User account has not yet been activated" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1057 +#: bp-members/classes/class-bp-members-admin.php:1081 msgid "Spammer" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1069 +#: bp-members/classes/class-bp-members-admin.php:1093 msgid "Registered on: %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1079 +#: bp-members/classes/class-bp-members-admin.php:1103 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/profile-loop.php:11 msgid "View Profile" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1080 +#: bp-members/classes/class-bp-members-admin.php:1104 msgid "Update Profile" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1099 +#: bp-members/classes/class-bp-members-admin.php:1123 #: bp-xprofile/classes/class-bp-xprofile-user-admin.php:433 msgid "" "%s has been marked as a spammer. All BuddyPress data associated with the " "user has been removed" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1130 +#: bp-members/classes/class-bp-members-admin.php:1154 msgid "Last active: %1$s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1172 +#: bp-members/classes/class-bp-members-admin.php:1196 #. translators: accessibility text msgid "Select member type" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1177 -#: bp-templates/bp-legacy/buddypress/forums/index.php:191 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:212 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:235 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:243 +#: bp-members/classes/class-bp-members-admin.php:1201 +#: 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 #. translators: no option picked in select box msgid "----" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1257 +#: bp-members/classes/class-bp-members-admin.php:1281 msgid "Extended" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1499 +#: bp-members/classes/class-bp-members-admin.php:1523 msgid "This is the administration screen for pending accounts on your site." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1500 +#: bp-members/classes/class-bp-members-admin.php:1524 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:1501 +#: bp-members/classes/class-bp-members-admin.php:1525 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:1502 +#: bp-members/classes/class-bp-members-admin.php:1526 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:1509 +#: bp-members/classes/class-bp-members-admin.php:1533 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:1510 +#: bp-members/classes/class-bp-members-admin.php:1534 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:1511 +#: bp-members/classes/class-bp-members-admin.php:1535 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:1512 +#: bp-members/classes/class-bp-members-admin.php:1536 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:1513 +#: bp-members/classes/class-bp-members-admin.php:1537 msgid "Bulk actions allow you to perform these 3 actions for the selected rows." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1526 +#: bp-members/classes/class-bp-members-admin.php:1549 #. translators: accessibility text msgid "Filter users list" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1528 +#: bp-members/classes/class-bp-members-admin.php:1551 #. translators: accessibility text msgid "Pending users list navigation" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1530 +#: bp-members/classes/class-bp-members-admin.php:1553 #. translators: accessibility text msgid "Pending users list" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1791 +#: bp-members/classes/class-bp-members-admin.php:1813 msgid "There was a problem sending the activation emails. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1798 +#: bp-members/classes/class-bp-members-admin.php:1820 msgid "There was a problem activating accounts. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1805 +#: bp-members/classes/class-bp-members-admin.php:1827 msgid "There was a problem deleting sign-ups. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1927 +#: bp-members/classes/class-bp-members-admin.php:1951 +#: bp-members/classes/class-bp-members-admin.php:1972 msgid "Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1951 +#: bp-members/classes/class-bp-members-admin.php:1998 msgid "Search Pending Users" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1999 +#: bp-members/classes/class-bp-members-admin.php:2046 msgid "Delete Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2001 +#: bp-members/classes/class-bp-members-admin.php:2048 msgid "You are about to delete the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2003 +#: bp-members/classes/class-bp-members-admin.php:2050 msgid "You are about to delete the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2008 +#: bp-members/classes/class-bp-members-admin.php:2055 msgid "Activate Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2010 +#: bp-members/classes/class-bp-members-admin.php:2057 msgid "You are about to activate the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2012 +#: bp-members/classes/class-bp-members-admin.php:2059 msgid "You are about to activate the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2017 +#: bp-members/classes/class-bp-members-admin.php:2064 msgid "Resend Activation Emails" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2019 +#: bp-members/classes/class-bp-members-admin.php:2066 msgid "You are about to resend an activation email to the following account:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2021 +#: bp-members/classes/class-bp-members-admin.php:2068 msgid "You are about to resend an activation email to the following accounts:" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2089 +#: bp-members/classes/class-bp-members-admin.php:2137 msgid "Display Name" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2094 +#: bp-members/classes/class-bp-members-admin.php:2142 #: bp-members/classes/class-bp-members-list-table.php:152 #: bp-members/classes/class-bp-members-list-table.php:316 #: bp-members/classes/class-bp-members-ms-list-table.php:139 #: bp-members/classes/class-bp-members-ms-list-table.php:309 -#: bp-settings/classes/class-bp-settings-component.php:123 -#: bp-settings/classes/class-bp-settings-component.php:198 +#: bp-settings/classes/class-bp-settings-component.php:163 +#: bp-settings/classes/class-bp-settings-component.php:238 msgid "Email" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2117 +#: bp-members/classes/class-bp-members-admin.php:2165 msgid "Last notified: %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2121 +#: bp-members/classes/class-bp-members-admin.php:2169 msgid "(less than 24 hours ago)" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2139 +#: bp-members/classes/class-bp-members-admin.php:2187 msgid "Confirm" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2173 -#: bp-members/classes/class-bp-members-admin.php:2175 +#: bp-members/classes/class-bp-members-admin.php:2221 +#: bp-members/classes/class-bp-members-admin.php:2223 msgid "Change member type to…" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2183 +#: bp-members/classes/class-bp-members-admin.php:2231 msgid "No Member Type" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2278 +#: bp-members/classes/class-bp-members-admin.php:2326 msgid "There was an error while changing member type. Please try again." msgstr "" -#: bp-members/classes/class-bp-members-admin.php:2281 +#: bp-members/classes/class-bp-members-admin.php:2329 msgid "Member type was changed successfully." msgstr "" -#: bp-members/classes/class-bp-members-component.php:117 +#: bp-members/classes/class-bp-members-component.php:164 msgid "Search Members..." msgstr "" -#: bp-members/classes/class-bp-members-component.php:375 +#: bp-members/classes/class-bp-members-component.php:422 msgid "You" msgstr "" @@ -5798,105 +5278,139 @@ msgstr "" msgid "Account Activated" msgstr "" -#: bp-members/classes/class-bp-signup.php:625 -#: bp-members/classes/class-bp-signup.php:712 -#: bp-members/classes/class-bp-signup.php:789 +#: bp-members/classes/class-bp-signup.php:633 +#: bp-members/classes/class-bp-signup.php:720 +#: bp-members/classes/class-bp-signup.php:797 msgid "the sign-up has already been activated." msgstr "" -#: bp-messages/bp-messages-actions.php:44 -msgid "Your message was not sent. Please enter a subject line." +#: bp-members/screens/activate.php:106 +msgid "Your account is now active!" msgstr "" -#: bp-messages/bp-messages-actions.php:46 -#: bp-messages/bp-messages-functions.php:63 -msgid "Your message was not sent. Please enter some content." +#: bp-members/screens/register.php:70 +msgid "Please make sure you enter your password twice" msgstr "" -#: bp-messages/bp-messages-actions.php:61 -msgid "Notice successfully created." +#: bp-members/screens/register.php:74 +msgid "The passwords you entered do not match." msgstr "" -#: bp-messages/bp-messages-actions.php:67 -msgid "Notice was not created. Please try again." +#: bp-members/screens/register.php:103 +msgid "This is a required field" msgstr "" -#: bp-messages/bp-messages-actions.php:98 -msgid "Message successfully sent." +#: bp-messages/actions/bulk-delete.php:31 +msgid "There was an error deleting messages." msgstr "" -#: bp-messages/bp-messages-actions.php:174 -msgid "Notice deactivated successfully." +#: bp-messages/actions/bulk-delete.php:33 +#: bp-messages/actions/bulk-manage.php:54 +msgid "Messages deleted." msgstr "" -#: bp-messages/bp-messages-actions.php:175 -msgid "There was a problem deactivating that notice." +#: bp-messages/actions/bulk-manage-star.php:55 +msgid "%s message was successfully starred" +msgid_plural "%s messages were successfully starred" +msgstr[0] "" +msgstr[1] "" + +#: bp-messages/actions/bulk-manage-star.php:69 +msgid "%s message was successfully unstarred" +msgid_plural "%s messages were successfully unstarred" +msgstr[0] "" +msgstr[1] "" + +#: bp-messages/actions/bulk-manage.php:43 +msgid "There was a problem managing your messages." msgstr "" -#: bp-messages/bp-messages-actions.php:182 -msgid "Notice activated successfully." +#: bp-messages/actions/bulk-manage.php:61 +msgid "Messages marked as read" msgstr "" -#: bp-messages/bp-messages-actions.php:183 -msgid "There was a problem activating that notice." +#: bp-messages/actions/bulk-manage.php:68 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:675 +msgid "Messages marked as unread." msgstr "" -#: bp-messages/bp-messages-actions.php:190 -msgid "Notice deleted successfully." +#: bp-messages/actions/compose.php:37 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:55 +msgid "Your message was not sent. Please enter a subject line." msgstr "" -#: bp-messages/bp-messages-actions.php:191 -msgid "There was a problem deleting that notice." +#: bp-messages/actions/compose.php:39 bp-messages/bp-messages-functions.php:63 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:57 +msgid "Your message was not sent. Please enter some content." msgstr "" -#: bp-messages/bp-messages-actions.php:246 -msgid "Your reply was sent successfully" +#: bp-messages/actions/compose.php:54 +#: bp-messages/classes/class-bp-messages-notices-admin.php:233 +msgid "Notice successfully created." msgstr "" -#: bp-messages/bp-messages-actions.php:248 -msgid "There was a problem sending your reply. Please try again." +#: bp-messages/actions/compose.php:60 +#: bp-messages/classes/class-bp-messages-notices-admin.php:227 +msgid "Notice was not created. Please try again." msgstr "" -#: bp-messages/bp-messages-actions.php:293 +#: bp-messages/actions/compose.php:91 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:94 +msgid "Message successfully sent." +msgstr "" + +#: bp-messages/actions/delete.php:32 msgid "There was an error deleting that message." msgstr "" -#: bp-messages/bp-messages-actions.php:295 +#: bp-messages/actions/delete.php:34 msgid "Message deleted." msgstr "" -#: bp-messages/bp-messages-actions.php:333 -msgid "Message marked as read." +#: bp-messages/actions/notices.php:55 +msgid "Notice deactivated successfully." msgstr "" -#: bp-messages/bp-messages-actions.php:335 -#: bp-messages/bp-messages-actions.php:376 -msgid "There was a problem marking that message." +#: bp-messages/actions/notices.php:56 +msgid "There was a problem deactivating that notice." msgstr "" -#: bp-messages/bp-messages-actions.php:374 -msgid "Message marked unread." +#: bp-messages/actions/notices.php:63 +msgid "Notice activated successfully." msgstr "" -#: bp-messages/bp-messages-actions.php:417 -msgid "There was a problem managing your messages." +#: bp-messages/actions/notices.php:64 +msgid "There was a problem activating that notice." msgstr "" -#: bp-messages/bp-messages-actions.php:428 -#: bp-messages/bp-messages-actions.php:474 -msgid "Messages deleted." +#: bp-messages/actions/notices.php:71 +msgid "Notice deleted successfully." msgstr "" -#: bp-messages/bp-messages-actions.php:435 -msgid "Messages marked as read" +#: bp-messages/actions/notices.php:72 +msgid "There was a problem deleting that notice." msgstr "" -#: bp-messages/bp-messages-actions.php:442 -msgid "Messages marked as unread." +#: bp-messages/actions/read.php:41 +msgid "Message marked as read." msgstr "" -#: bp-messages/bp-messages-actions.php:472 -msgid "There was an error deleting messages." +#: bp-messages/actions/read.php:43 bp-messages/actions/unread.php:43 +msgid "There was a problem marking that message." +msgstr "" + +#: bp-messages/actions/unread.php:41 +msgid "Message marked unread." +msgstr "" + +#: bp-messages/actions/view.php:41 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:210 +msgid "Your reply was sent successfully" +msgstr "" + +#: bp-messages/actions/view.php:43 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:111 +msgid "There was a problem sending your reply. Please try again." msgstr "" #: bp-messages/bp-messages-functions.php:60 @@ -5926,8 +5440,8 @@ msgid "Message was not sent. Please try again." msgstr "" #: bp-messages/bp-messages-notifications.php:31 -#: bp-messages/classes/class-bp-messages-component.php:176 -#: bp-messages/classes/class-bp-messages-component.php:269 +#: bp-messages/classes/class-bp-messages-component.php:239 +#: bp-messages/classes/class-bp-messages-component.php:332 msgid "Inbox" msgstr "" @@ -5945,79 +5459,61 @@ msgid_plural "You have %s new private messages" msgstr[0] "" msgstr[1] "" -#: bp-messages/bp-messages-screens.php:125 -msgid "The conversation you tried to access is no longer available" -msgstr "" - -#: bp-messages/bp-messages-screens.php:140 -msgid "You do not have access to that conversation." -msgstr "" - -#: bp-messages/bp-messages-screens.php:151 -msgid "Messages <span class=\"%s\">%s</span>" -msgstr "" - -#: bp-messages/bp-messages-screens.php:227 -#: bp-messages/classes/class-bp-messages-component.php:160 -#: bp-messages/classes/class-bp-messages-component.php:268 +#: bp-messages/bp-messages-notifications.php:263 +#: bp-messages/classes/class-bp-messages-component.php:223 +#: bp-messages/classes/class-bp-messages-component.php:331 msgid "Messages" msgstr "" -#: bp-messages/bp-messages-screens.php:236 +#: bp-messages/bp-messages-notifications.php:272 msgid "A member sends you a new message" msgstr "" #: bp-messages/bp-messages-star.php:107 #: bp-templates/bp-legacy/buddypress-functions.php:332 +#: bp-templates/bp-nouveau/includes/messages/functions.php:124 msgid "Unstar" msgstr "" #: bp-messages/bp-messages-star.php:108 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:81 +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:82 #: bp-templates/bp-legacy/buddypress-functions.php:333 +#: bp-templates/bp-nouveau/includes/messages/functions.php:125 #. translators: accessibility text msgid "Star" msgstr "" #: bp-messages/bp-messages-star.php:109 -#: bp-messages/classes/class-bp-messages-component.php:187 -#: bp-messages/classes/class-bp-messages-component.php:294 +#: bp-messages/classes/class-bp-messages-component.php:250 +#: bp-messages/classes/class-bp-messages-component.php:357 #: bp-templates/bp-legacy/buddypress-functions.php:334 +#: bp-templates/bp-nouveau/includes/messages/functions.php:126 msgid "Starred" msgstr "" #: bp-messages/bp-messages-star.php:110 #: bp-templates/bp-legacy/buddypress-functions.php:335 +#: bp-templates/bp-nouveau/includes/messages/functions.php:127 msgid "Not starred" msgstr "" #: bp-messages/bp-messages-star.php:111 #: bp-templates/bp-legacy/buddypress-functions.php:336 +#: bp-templates/bp-nouveau/includes/messages/functions.php:128 msgid "Remove all starred messages in this thread" msgstr "" #: bp-messages/bp-messages-star.php:112 #: bp-templates/bp-legacy/buddypress-functions.php:337 +#: bp-templates/bp-nouveau/includes/messages/functions.php:129 msgid "Star the first message in this thread" msgstr "" -#: bp-messages/bp-messages-star.php:451 -msgid "%s message was successfully starred" -msgid_plural "%s messages were successfully starred" -msgstr[0] "" -msgstr[1] "" - -#: bp-messages/bp-messages-star.php:465 -msgid "%s message was successfully unstarred" -msgid_plural "%s messages were successfully unstarred" -msgstr[0] "" -msgstr[1] "" - -#: bp-messages/bp-messages-star.php:501 +#: bp-messages/bp-messages-star.php:339 msgid "Add star" msgstr "" -#: bp-messages/bp-messages-star.php:502 +#: bp-messages/bp-messages-star.php:340 msgid "Remove star" msgstr "" @@ -6040,6 +5536,7 @@ msgstr[0] "" msgstr[1] "" #: bp-messages/bp-messages-template.php:856 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:98 #. translators: accessibility text msgid "Search Messages" msgstr "" @@ -6062,6 +5559,7 @@ msgstr "" #: bp-messages/bp-messages-template.php:1033 #: bp-notifications/bp-notifications-template.php:1024 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:103 #. translators: accessibility text msgid "Select Bulk Action" msgstr "" @@ -6098,23 +5596,29 @@ msgstr "" msgid "Dismiss this notice" msgstr "" -#: bp-messages/bp-messages-template.php:1418 +#: bp-messages/bp-messages-template.php:1429 msgid "Private Message" msgstr "" -#: bp-messages/bp-messages-template.php:1633 +#: bp-messages/bp-messages-template.php:1658 msgid "%s recipients" msgstr "" -#: bp-messages/bp-messages-template.php:1708 +#: bp-messages/bp-messages-template.php:1728 +#: bp-messages/bp-messages-template.php:1984 +#: bp-messages/classes/class-bp-messages-thread.php:861 +msgid "Deleted User" +msgstr "" + +#: bp-messages/bp-messages-template.php:1733 msgid "you" msgstr "" -#: bp-messages/bp-messages-template.php:2024 +#: bp-messages/bp-messages-template.php:2049 msgid "Sent %s" msgstr "" -#: bp-messages/bp-messages-template.php:2078 +#: bp-messages/bp-messages-template.php:2103 msgid "[deleted]" msgstr "" @@ -6122,108 +5626,150 @@ msgstr "" msgid "Private Messages" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:119 +#: bp-messages/classes/class-bp-messages-component.php:182 msgid "Search Messages..." msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:152 -#: bp-messages/classes/class-bp-messages-component.php:259 +#: bp-messages/classes/class-bp-messages-component.php:215 +#: bp-messages/classes/class-bp-messages-component.php:322 #. translators: %s: Unread message count for the current user msgid "Messages %s" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:198 -#: bp-messages/classes/class-bp-messages-component.php:304 +#: bp-messages/classes/class-bp-messages-component.php:261 +#: bp-messages/classes/class-bp-messages-component.php:367 msgid "Sent" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:212 -#: bp-messages/classes/class-bp-messages-component.php:313 +#: bp-messages/classes/class-bp-messages-component.php:275 +#: bp-messages/classes/class-bp-messages-component.php:376 msgid "Compose" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:227 +#: bp-messages/classes/class-bp-messages-component.php:290 msgid "Notices" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:264 +#: bp-messages/classes/class-bp-messages-component.php:327 #. translators: %s: Unread message count for the current user msgid "Inbox %s" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:323 -msgid "All Member Notices" +#: bp-messages/classes/class-bp-messages-component.php:386 +msgid "Site Notices" msgstr "" -#: bp-messages/classes/class-bp-messages-component.php:342 +#: bp-messages/classes/class-bp-messages-component.php:405 msgid "My Messages" msgstr "" -#: bp-messages/classes/class-bp-messages-sitewide-notices-widget.php:26 -msgid "(BuddyPress) Sitewide Notices" +#: bp-messages/classes/class-bp-messages-notices-admin.php:197 +msgid "Manage notices shown at front end of your site to all logged-in users." msgstr "" -#: bp-messages/classes/class-bp-messages-sitewide-notices-widget.php:29 -msgid "Display Sitewide Notices posted by the site administrator" +#: bp-messages/classes/class-bp-messages-notices-admin.php:201 +msgid "Add New Notice" msgstr "" -#: bp-messages/classes/class-bp-messages-thread.php:852 -msgid "%s Recipients" +#: bp-messages/classes/class-bp-messages-notices-admin.php:206 +#: 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-notifications/bp-notifications-actions.php:43 -msgid "Notification successfully marked read." +#: bp-messages/classes/class-bp-messages-notices-admin.php:213 +msgid "Publish Notice" msgstr "" -#: bp-notifications/bp-notifications-actions.php:45 -#: bp-notifications/bp-notifications-actions.php:81 -msgid "There was a problem marking that notification." +#: bp-messages/classes/class-bp-messages-notices-admin.php:229 +msgid "Notice was not updated. Please try again." msgstr "" -#: bp-notifications/bp-notifications-actions.php:79 -msgid "Notification successfully marked unread." +#: bp-messages/classes/class-bp-messages-notices-admin.php:235 +msgid "Notice successfully updated." msgstr "" -#: bp-notifications/bp-notifications-actions.php:115 -msgid "Notification successfully deleted." +#: bp-messages/classes/class-bp-messages-notices-admin.php:245 +msgid "Notices List" msgstr "" -#: bp-notifications/bp-notifications-actions.php:117 -msgid "There was a problem deleting that notification." +#: bp-messages/classes/class-bp-messages-notices-list-table.php:119 +msgid "Activate Notice" msgstr "" -#: bp-notifications/bp-notifications-actions.php:151 -msgid "There was a problem managing your notifications." +#: bp-messages/classes/class-bp-messages-notices-list-table.php:127 +msgid "Delete Notice" msgstr "" -#: bp-notifications/bp-notifications-actions.php:163 -msgid "Notifications deleted." +#: bp-messages/classes/class-bp-messages-notices-list-table.php:139 +msgid "Deactivate Notice" msgstr "" -#: bp-notifications/bp-notifications-actions.php:170 -msgid "Notifications marked as read" +#: bp-messages/classes/class-bp-messages-sitewide-notices-widget.php:26 +msgid "(BuddyPress) Sitewide Notices" msgstr "" -#: bp-notifications/bp-notifications-actions.php:177 -msgid "Notifications marked as unread." +#: bp-messages/classes/class-bp-messages-sitewide-notices-widget.php:29 +msgid "Display Sitewide Notices posted by the site administrator" msgstr "" -#: bp-notifications/bp-notifications-adminbar.php:56 -msgid "No new notifications" +#: bp-messages/classes/class-bp-messages-thread.php:852 +msgid "%s Recipients" msgstr "" -#: bp-notifications/bp-notifications-template.php:474 -msgid "Date not found" +#: bp-messages/screens/view.php:28 +msgid "The conversation you tried to access is no longer available" msgstr "" -#: bp-notifications/bp-notifications-template.php:558 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:142 -msgid "Read" +#: bp-messages/screens/view.php:43 +msgid "You do not have access to that conversation." msgstr "" -#: bp-notifications/bp-notifications-template.php:650 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:144 -msgid "Unread" +#: bp-messages/screens/view.php:54 +msgid "Messages <span class=\"%s\">%s</span>" +msgstr "" + +#: bp-notifications/actions/bulk-manage.php:36 +msgid "There was a problem managing your notifications." +msgstr "" + +#: bp-notifications/actions/bulk-manage.php:48 +msgid "Notifications deleted." +msgstr "" + +#: bp-notifications/actions/bulk-manage.php:55 +msgid "Notifications marked as read" +msgstr "" + +#: bp-notifications/actions/bulk-manage.php:62 +msgid "Notifications marked as unread." +msgstr "" + +#: bp-notifications/actions/delete.php:36 +msgid "Notification successfully deleted." +msgstr "" + +#: bp-notifications/actions/delete.php:38 +msgid "There was a problem deleting that notification." +msgstr "" + +#: bp-notifications/bp-notifications-adminbar.php:56 +msgid "No new notifications" +msgstr "" + +#: bp-notifications/bp-notifications-template.php:474 +msgid "Date not found" +msgstr "" + +#: bp-notifications/bp-notifications-template.php:558 +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:143 +msgid "Read" +msgstr "" + +#: bp-notifications/bp-notifications-template.php:650 +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:145 +msgid "Unread" msgstr "" #: bp-notifications/bp-notifications-template.php:937 @@ -6237,10 +5783,12 @@ msgstr[0] "" msgstr[1] "" #: bp-notifications/bp-notifications-template.php:1003 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:85 msgid "Newest First" msgstr "" #: bp-notifications/bp-notifications-template.php:1004 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:86 msgid "Oldest First" msgstr "" @@ -6248,76 +5796,88 @@ msgstr "" msgid "Go" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:91 +#: bp-notifications/classes/class-bp-notifications-component.php:121 msgid "Search Notifications..." msgstr "" -#: bp-settings/bp-settings-actions.php:193 +#: bp-notifications/screens/read.php:60 +msgid "Notification successfully marked unread." +msgstr "" + +#: bp-notifications/screens/read.php:62 bp-notifications/screens/unread.php:62 +msgid "There was a problem marking that notification." +msgstr "" + +#: bp-notifications/screens/unread.php:60 +msgid "Notification successfully marked read." +msgstr "" + +#: bp-settings/actions/delete-account.php:51 +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/bp-settings-actions.php:196 +#: bp-settings/actions/general.php:192 msgid "That email address is currently unavailable for use." msgstr "" -#: bp-settings/bp-settings-actions.php:199 +#: bp-settings/actions/general.php:195 msgid "That email address is already taken." msgstr "" -#: bp-settings/bp-settings-actions.php:202 +#: bp-settings/actions/general.php:198 msgid "Email address cannot be empty." msgstr "" -#: bp-settings/bp-settings-actions.php:212 +#: bp-settings/actions/general.php:208 msgid "Your current password is invalid." msgstr "" -#: bp-settings/bp-settings-actions.php:215 +#: bp-settings/actions/general.php:211 msgid "The new password fields did not match." msgstr "" -#: bp-settings/bp-settings-actions.php:218 +#: bp-settings/actions/general.php:214 msgid "One of the password fields was empty." msgstr "" -#: bp-settings/bp-settings-actions.php:221 +#: bp-settings/actions/general.php:217 msgid "The new password must be different from the current password." msgstr "" -#: bp-settings/bp-settings-actions.php:230 +#: bp-settings/actions/general.php:226 msgid "Your settings have been saved." msgstr "" -#: bp-settings/bp-settings-actions.php:236 +#: bp-settings/actions/general.php:232 msgid "No changes were made to your account." msgstr "" -#: bp-settings/bp-settings-actions.php:238 +#: bp-settings/actions/general.php:234 msgid "No changes were made to this account." msgstr "" -#: bp-settings/bp-settings-actions.php:288 -msgid "Your notification settings have been saved." -msgstr "" - -#: bp-settings/bp-settings-actions.php:290 -msgid "This user's notification settings have been saved." +#: bp-settings/actions/general.php:289 +msgid "You have successfully verified your new email address." msgstr "" -#: bp-settings/bp-settings-actions.php:418 -msgid "%s was successfully deleted." +#: bp-settings/actions/general.php:292 +msgid "There was a problem verifying your new email address. Please try again." msgstr "" -#: bp-settings/bp-settings-actions.php:464 -msgid "You have successfully verified your new email address." +#: bp-settings/actions/general.php:304 +msgid "You have successfully dismissed your pending email change." msgstr "" -#: bp-settings/bp-settings-actions.php:467 -msgid "There was a problem verifying your new email address. Please try again." +#: bp-settings/actions/notifications.php:42 +msgid "Your notification settings have been saved." msgstr "" -#: bp-settings/bp-settings-actions.php:479 -msgid "You have successfully dismissed your pending email change." +#: bp-settings/actions/notifications.php:44 +msgid "This user's notification settings have been saved." msgstr "" #: bp-settings/bp-settings-template.php:89 @@ -6330,24 +5890,26 @@ msgid "" "href=\"%2$s\">cancel the pending change</a>." msgstr "" -#: bp-settings/classes/class-bp-settings-component.php:111 -#: bp-settings/classes/class-bp-settings-component.php:188 +#: bp-settings/classes/class-bp-settings-component.php:151 +#: bp-settings/classes/class-bp-settings-component.php:228 msgid "General" msgstr "" -#: bp-settings/classes/class-bp-settings-component.php:135 +#: bp-settings/classes/class-bp-settings-component.php:175 msgid "Capabilities" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/activity-loop.php:33 +#: bp-templates/bp-legacy/buddypress/activity/activity-loop.php:34 msgid "Load More" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/activity-loop.php:47 +#: bp-templates/bp-legacy/buddypress/activity/activity-loop.php:48 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:151 +#: bp-templates/bp-nouveau/includes/functions.php:949 msgid "Sorry, there was no activity found. Please try a different filter." msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/comment.php:29 +#: bp-templates/bp-legacy/buddypress/activity/comment.php:30 #. translators: 1: user profile link, 2: user name, 3: activity permalink, 4: #. ISO8601 timestamp, 5: activity relative timestamp msgid "" @@ -6356,1310 +5918,2456 @@ msgid "" "data-livestamp=\"%4$s\">%5$s</span></a>" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:59 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:60 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:310 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:314 msgid "View Conversation" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:67 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:68 msgid "Comment %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:75 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:76 #: bp-templates/bp-legacy/buddypress-functions.php:297 -#: bp-templates/bp-legacy/buddypress-functions.php:1220 -#: bp-templates/bp-legacy/buddypress-functions.php:1248 +#: bp-templates/bp-legacy/buddypress-functions.php:1235 +#: bp-templates/bp-legacy/buddypress-functions.php:1263 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:145 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:378 msgid "Favorite" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:79 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:80 #: bp-templates/bp-legacy/buddypress-functions.php:300 -#: bp-templates/bp-legacy/buddypress-functions.php:1218 -#: bp-templates/bp-legacy/buddypress-functions.php:1250 +#: bp-templates/bp-legacy/buddypress-functions.php:1233 +#: bp-templates/bp-legacy/buddypress-functions.php:1265 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:105 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:389 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:390 msgid "Remove Favorite" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:125 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:126 #. translators: accessibility text msgid "Comment" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/entry.php:129 +#: bp-templates/bp-legacy/buddypress/activity/entry.php:130 msgid "Post" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:47 +#: bp-templates/bp-legacy/buddypress/activity/index.php:48 msgid "Sitewide activities navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:58 -#: bp-templates/bp-legacy/buddypress/members/index.php:61 +#: bp-templates/bp-legacy/buddypress/activity/index.php:59 +#: bp-templates/bp-legacy/buddypress/members/index.php:62 msgid "All Members %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:75 -#: bp-templates/bp-legacy/buddypress/members/index.php:64 +#: bp-templates/bp-legacy/buddypress/activity/index.php:76 +#: bp-templates/bp-legacy/buddypress/members/index.php:65 msgid "My Friends %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:94 -#: bp-templates/bp-legacy/buddypress/groups/index.php:64 +#: bp-templates/bp-legacy/buddypress/activity/index.php:101 +#: bp-templates/bp-legacy/buddypress/groups/index.php:65 +#. translators: %s: total joined groups count for the current user msgid "My Groups %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:111 +#: bp-templates/bp-legacy/buddypress/activity/index.php:122 msgid "My Favorites %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:126 +#: bp-templates/bp-legacy/buddypress/activity/index.php:137 +#: bp-templates/bp-nouveau/includes/activity/functions.php:273 msgid "Mentions" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:143 +#: bp-templates/bp-legacy/buddypress/activity/index.php:154 msgid "Activity secondary navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:145 -#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:12 +#: bp-templates/bp-legacy/buddypress/activity/index.php:156 +#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:13 +#: bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php:15 +#: bp-templates/bp-nouveau/buddypress/groups/single/activity.php:21 msgid "RSS Feed" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:145 -#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:12 +#: bp-templates/bp-legacy/buddypress/activity/index.php:156 +#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:13 +#: bp-templates/bp-nouveau/buddypress/common/search-and-filters-bar.php:15 +#: bp-templates/bp-nouveau/buddypress/groups/single/activity.php:21 msgid "RSS" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:157 -#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:24 -#: bp-templates/bp-legacy/buddypress/members/single/activity.php:17 +#: bp-templates/bp-legacy/buddypress/activity/index.php:168 +#: 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:2044 msgid "Show:" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:159 -#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:26 -#: bp-templates/bp-legacy/buddypress/members/single/activity.php:19 +#: bp-templates/bp-legacy/buddypress/activity/index.php:170 +#: bp-templates/bp-legacy/buddypress/groups/single/activity.php:27 +#: bp-templates/bp-legacy/buddypress/members/single/activity.php:20 +#: bp-templates/bp-nouveau/includes/functions.php:547 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:53 msgid "— Everything —" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:29 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:30 msgid "What's new in %s, %s?" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:31 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:32 +#: bp-templates/bp-nouveau/includes/activity/functions.php:163 msgid "What's new, %s?" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:38 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:39 +#: bp-templates/bp-nouveau/includes/activity/functions.php:164 #. translators: accessibility text msgid "Post what's new" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:47 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:48 +#: bp-templates/bp-nouveau/includes/activity/functions.php:166 msgid "Post Update" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:54 -#: bp-templates/bp-legacy/buddypress/activity/post-form.php:58 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:55 +#: bp-templates/bp-legacy/buddypress/activity/post-form.php:59 +#: bp-templates/bp-nouveau/includes/activity/functions.php:165 #. translators: accessibility text msgid "Post in" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:17 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:18 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php:15 msgid "Your browser does not support this feature." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:24 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:25 msgid "Capture" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:25 -#: bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php:29 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1151 -#: bp-xprofile/classes/class-bp-xprofile-group.php:723 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/camera.php:26 +#: bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php:30 +#: bp-templates/bp-nouveau/includes/functions.php:1268 +#: bp-templates/bp-nouveau/includes/functions.php:1320 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1180 +#: bp-xprofile/classes/class-bp-xprofile-group.php:730 msgid "Save" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php:23 -#: bp-templates/bp-legacy/buddypress/groups/create.php:285 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:57 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:60 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/crop.php:24 +#: bp-templates/bp-legacy/buddypress/groups/create.php:267 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:58 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:61 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:106 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:52 msgid "Crop Image" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:37 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:44 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:38 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:45 msgid "" "If you'd like to delete your current profile photo but not upload a new " "one, please use the delete profile photo button." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:38 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:45 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:39 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:46 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php:36 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:37 msgid "Delete My Profile Photo" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:40 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:29 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:41 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:30 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:61 +#: bp-templates/bp-nouveau/includes/functions.php:1005 msgid "" "If you'd like to remove the existing group profile photo but not upload a " "new one, please use the delete group profile photo button." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:41 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:31 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/avatars/index.php:42 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:32 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php:39 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:71 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:72 msgid "Delete Group Profile Photo" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:26 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:27 msgid "" "If you'd like to delete your current cover image but not upload a new one, " "please use the delete Cover Image button." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:27 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:28 msgid "Delete My Cover Image" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:29 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:30 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php:31 msgid "" "If you'd like to remove the existing group cover image but not upload a new " "one, please use the delete group cover image button." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:30 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/cover-images/index.php:31 msgid "Delete Group Cover Image" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:16 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:17 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php:14 msgid "The web browser on your device cannot be used to upload files." msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:18 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:19 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php:16 msgid "Upload Limit Exceeded" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:23 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:24 +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php:21 msgid "Drop your file here" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:27 #: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:28 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:29 #. translators: accessibility text msgid "Select your File" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php:120 +#: bp-templates/bp-legacy/buddypress/blogs/blogs-loop.php:121 +#: bp-templates/bp-nouveau/includes/functions.php:953 msgid "Sorry, there were no sites found." msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/create.php:40 +#: bp-templates/bp-legacy/buddypress/blogs/create.php:41 msgid "Site registration is currently disabled" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:60 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:61 msgid "Sites directory main navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:62 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:63 msgid "All Sites %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:66 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:67 msgid "My Sites %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:82 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:83 msgid "Sites directory secondary navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:98 -#: bp-templates/bp-legacy/buddypress/forums/index.php:96 -#: bp-templates/bp-legacy/buddypress/groups/index.php:95 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:52 -#: bp-templates/bp-legacy/buddypress/members/index.php:93 -#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:20 -#: bp-templates/bp-legacy/buddypress/members/single/forums.php:19 -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:21 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:21 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:99 +#: bp-templates/bp-legacy/buddypress/groups/index.php:96 +#: bp-templates/bp-legacy/buddypress/members/index.php:94 +#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:21 +#: 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:585 +#: bp-templates/bp-nouveau/includes/members/functions.php:97 msgid "Last Active" msgstr "" -#: bp-templates/bp-legacy/buddypress/blogs/index.php:118 +#: bp-templates/bp-legacy/buddypress/blogs/index.php:119 #. translators: accessibility text msgid "Sites directory" msgstr "" -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:52 -msgid "Topic" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:54 -msgid "Freshness" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:81 -#. translators: "started by [poster] in [forum]" -msgid "Started by %1$s" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:92 -#. translators: "started by [poster] in [forum]" -msgid "in %1$s" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/forums-loop.php:163 -msgid "Sorry, there were no forum topics found." -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:58 -msgid "Forums directory main navigation" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:60 -msgid "All Topics %s" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:64 -msgid "My Topics %s" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:80 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:20 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:17 -msgid "Forums secondary navigation" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:97 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:53 -#: bp-templates/bp-legacy/buddypress/members/single/forums.php:20 -msgid "Most Posts" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:98 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:54 -#: bp-templates/bp-legacy/buddypress/members/single/forums.php:21 -msgid "Unreplied" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:169 -msgid "Create New Topic:" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:182 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:77 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:109 -msgid "Content:" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:185 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:80 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:112 -msgid "Tags (comma separated):" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:188 -msgid "Post In Group Forum:" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:215 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:125 -msgid "Post Topic" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/forums/index.php:227 -msgid "" -"You are not a member of any groups so you don't have any group forums you " -"can post in. To start posting, first find a group that matches the topic " -"subject you'd like to start. If this group does not exist, why not <a " -"href='%s'>create a new group</a>? Once you have joined or created the group " -"you can post your topic in that group's forum." -msgstr "" - -#: bp-templates/bp-legacy/buddypress/groups/create.php:61 +#: bp-templates/bp-legacy/buddypress/groups/create.php:62 #. translators: accessibility text msgid "Group Details" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:74 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:22 +#: bp-templates/bp-legacy/buddypress/groups/create.php:75 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:23 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php:24 msgid "Group Name (required)" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:79 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:25 +#: bp-templates/bp-legacy/buddypress/groups/create.php:80 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:26 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php:27 msgid "Group Description (required)" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:116 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:38 +#: bp-templates/bp-legacy/buddypress/groups/create.php:117 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:25 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:27 msgid "Privacy Options" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:120 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:42 +#: bp-templates/bp-legacy/buddypress/groups/create.php:121 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:29 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:30 msgid "This is a public group" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:123 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:45 +#: bp-templates/bp-legacy/buddypress/groups/create.php:124 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:32 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:34 msgid "Any site member can join this group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:124 -#: bp-templates/bp-legacy/buddypress/groups/create.php:132 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:46 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:54 +#: bp-templates/bp-legacy/buddypress/groups/create.php:125 +#: bp-templates/bp-legacy/buddypress/groups/create.php:133 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:33 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:41 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:35 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:45 msgid "This group will be listed in the groups directory and in search results." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:125 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:47 +#: bp-templates/bp-legacy/buddypress/groups/create.php:126 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:34 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:36 msgid "Group content and activity will be visible to any site member." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:128 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:50 +#: bp-templates/bp-legacy/buddypress/groups/create.php:129 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:37 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:40 msgid "This is a private group" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:131 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:53 +#: bp-templates/bp-legacy/buddypress/groups/create.php:132 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:40 msgid "Only users who request membership and are accepted can join the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:133 -#: bp-templates/bp-legacy/buddypress/groups/create.php:141 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:55 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:63 +#: bp-templates/bp-legacy/buddypress/groups/create.php:134 +#: bp-templates/bp-legacy/buddypress/groups/create.php:142 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:42 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:50 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:46 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:56 msgid "Group content and activity will only be visible to members of the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:136 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:58 +#: bp-templates/bp-legacy/buddypress/groups/create.php:137 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:45 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:50 msgid "This is a hidden group" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:139 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:61 +#: bp-templates/bp-legacy/buddypress/groups/create.php:140 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:48 msgid "Only users who are invited can join the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:140 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:62 +#: bp-templates/bp-legacy/buddypress/groups/create.php:141 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:49 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:55 msgid "This group will not be listed in the groups directory or search results." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:152 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:74 +#: 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:154 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:76 +#: 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 msgid "Select the types this group should be a part of." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:162 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:84 +#: bp-templates/bp-legacy/buddypress/groups/create.php:163 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:71 #. translators: Group type description shown when creating a group. msgid "– %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:176 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:98 +#: bp-templates/bp-legacy/buddypress/groups/create.php:177 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:85 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:90 msgid "Group Invitations" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:178 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:100 +#: bp-templates/bp-legacy/buddypress/groups/create.php:179 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:87 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:92 msgid "Which members of this group are allowed to invite others?" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:198 -msgid "Should this group have a forum?" -msgstr "" - -#: bp-templates/bp-legacy/buddypress/groups/create.php:205 -msgid "" -"<strong>Attention Site Admin:</strong> Group forums require the <a " -"href=\"%s\">correct setup and configuration</a> of a bbPress installation." -msgstr "" - -#: bp-templates/bp-legacy/buddypress/groups/create.php:229 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:11 +#: bp-templates/bp-legacy/buddypress/groups/create.php:211 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:12 #. translators: accessibility text msgid "Group Avatar" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:250 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:15 +#: bp-templates/bp-legacy/buddypress/groups/create.php:232 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:16 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:46 msgid "" "Upload an image to use as a profile photo for this group. The image will be " "shown on the main group page, and in search results." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:255 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:20 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:36 +#: bp-templates/bp-legacy/buddypress/groups/create.php:237 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:21 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:37 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:49 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:29 #. translators: accessibility text msgid "Select an image" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:258 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:23 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:39 +#: bp-templates/bp-legacy/buddypress/groups/create.php:240 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:24 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:40 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:51 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:31 msgid "Upload Image" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:262 +#: bp-templates/bp-legacy/buddypress/groups/create.php:244 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:56 msgid "" "To skip the group profile photo upload process, hit the \"Next Step\" " "button." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:277 +#: bp-templates/bp-legacy/buddypress/groups/create.php:259 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:98 msgid "Crop Group Profile Photo" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:279 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:51 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:54 +#: bp-templates/bp-legacy/buddypress/groups/create.php:261 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:52 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:55 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:100 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:46 msgid "Profile photo to crop" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:282 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:54 -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:57 +#: bp-templates/bp-legacy/buddypress/groups/create.php:264 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:55 +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:58 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:103 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:49 msgid "Profile photo preview" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:328 -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php:22 +#: bp-templates/bp-legacy/buddypress/groups/create.php:310 +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-cover-image.php:23 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php:26 msgid "The Cover Image will be used to customize the header of your group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:350 +#: bp-templates/bp-legacy/buddypress/groups/create.php:332 +#: bp-templates/bp-nouveau/buddypress/members/single/groups/invites.php:10 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/group-invites.php:11 #. translators: accessibility text msgid "Group Invites" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:379 +#: bp-templates/bp-legacy/buddypress/groups/create.php:361 msgid "Select people to invite from your friends list." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:397 -#: bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php:74 -#: bp-templates/bp-legacy/buddypress-functions.php:1350 +#: bp-templates/bp-legacy/buddypress/groups/create.php:379 +#: bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php:75 +#: bp-templates/bp-legacy/buddypress-functions.php:1366 msgid "Remove Invite" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:414 +#: bp-templates/bp-legacy/buddypress/groups/create.php:396 msgid "" "Once you have built up friend connections you will be able to invite others " "to your group." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:459 +#: bp-templates/bp-legacy/buddypress/groups/create.php:441 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:377 msgid "Back to Previous Step" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:466 +#: bp-templates/bp-legacy/buddypress/groups/create.php:448 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:385 msgid "Next Step" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:473 +#: bp-templates/bp-legacy/buddypress/groups/create.php:455 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:392 msgid "Create Group and Continue" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/create.php:480 +#: bp-templates/bp-legacy/buddypress/groups/create.php:462 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:399 msgid "Finish" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:135 +#: bp-templates/bp-legacy/buddypress/groups/groups-loop.php:136 msgid "There were no groups found." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:59 +#: bp-templates/bp-legacy/buddypress/groups/index.php:60 msgid "Groups directory main navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:61 +#: bp-templates/bp-legacy/buddypress/groups/index.php:62 msgid "All Groups %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:79 -msgid "Groups directory secondary navigation" +#: bp-templates/bp-legacy/buddypress/groups/index.php:80 +msgid "Groups directory secondary navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/index.php:97 +#: bp-templates/bp-legacy/buddypress/members/single/groups.php:23 +#: bp-templates/bp-nouveau/includes/groups/functions.php:586 +msgid "Most Members" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/index.php:98 +#: bp-templates/bp-legacy/buddypress/members/single/groups.php:24 +#: bp-templates/bp-nouveau/includes/groups/functions.php:587 +msgid "Newly Created" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/index.php:116 +#. translators: accessibility text +msgid "Groups directory" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:24 +msgid "" +"WARNING: Deleting this group will completely remove ALL content associated " +"with it. There is no way back, please be careful with this option." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:27 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/delete-group.php:18 +msgid "I understand the consequences of deleting this group." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:12 +msgid "Manage Group Details" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:40 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php:33 +msgid "Notify group members of these changes via email" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:50 +msgid "Crop Profile Photo" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:12 +msgid "Manage Group Settings" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:112 +msgid "No group administrators were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:207 +msgid "No group moderators were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:248 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:102 +#. translators: indicates a user is banned from a group, e.g. "Mike (banned)". +msgid "(banned)" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:271 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:827 +msgid "Remove Ban" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:275 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:846 +msgid "Kick & Ban" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:276 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:875 +msgid "Promote to Mod" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:281 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:904 +msgid "Remove from group" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:318 +msgid "No group members were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php:12 +#: bp-templates/bp-nouveau/buddypress/groups/single/requests-loop.php:13 +msgid "Manage Membership Requests" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:75 +#: 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/group-header.php:43 +#: bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php:28 +msgid "Group Mods" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/home.php:40 +msgid "Group primary navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php:111 +msgid "Select friends to invite." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/members.php:132 +msgid "No members were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:18 +msgid "Group membership request form" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:25 +#: bp-templates/bp-nouveau/buddypress/groups/single/request-membership.php:17 +#. translators: %s =group name +#. translators: %s = group name +msgid "You are requesting to become a member of the group \"%s\"." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:33 +msgid "Comments (optional)" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:58 +#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:63 +#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:51 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:710 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:766 +msgid "Accept" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:60 +#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:64 +#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:52 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:737 +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:793 +msgid "Reject" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:96 +#: bp-templates/bp-nouveau/includes/functions.php:993 +msgid "There are no pending membership requests." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:21 +msgid "Send invites" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:31 +#: bp-templates/bp-nouveau/includes/groups/functions.php:129 +msgid "Send Invites" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:46 +msgid "Group invitations can only be extended to friends." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:47 +msgid "" +"Once you've made some friendships, you'll be able to invite those members " +"to this group." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:55 +msgid "All of your friends already belong to this group." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/activate.php:45 +#: bp-templates/bp-nouveau/buddypress/members/activate.php:21 +msgid "" +"Your account was activated successfully! Your account details have been " +"sent to you in a separate email." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/activate.php:47 +#: bp-templates/bp-nouveau/buddypress/members/activate.php:27 +msgid "" +"Your account was activated successfully! You can now <a href=\"%s\">log " +"in</a> with the username and password you provided when you signed up." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/activate.php:52 +#: bp-templates/bp-nouveau/buddypress/members/activate.php:37 +msgid "Please provide a valid activation key." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/activate.php:56 +#: bp-templates/bp-nouveau/buddypress/members/activate.php:41 +msgid "Activation Key:" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/index.php:60 +msgid "Members directory main navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/index.php:80 +msgid "Members directory secondary navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/index.php:95 +#: bp-templates/bp-legacy/buddypress/members/single/friends.php:23 +#: bp-templates/bp-nouveau/includes/members/functions.php:98 +msgid "Newest Registered" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/index.php:116 +#. translators: accessibility text +msgid "Members directory" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:46 +msgid "User registration is currently not allowed." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:68 +#: bp-templates/bp-nouveau/includes/functions.php:929 +msgid "" +"Registering for this site is easy. Just fill in the fields below, and we'll " +"get a new account set up for you in no time." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:83 +#: bp-templates/bp-nouveau/buddypress/members/register.php:31 +msgid "Account Details" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:85 +#: bp-templates/bp-legacy/buddypress/members/register.php:96 +#: bp-templates/bp-legacy/buddypress/members/register.php:107 +#: bp-templates/bp-legacy/buddypress/members/register.php:119 +#: bp-templates/bp-legacy/buddypress/members/register.php:280 +#: bp-templates/bp-legacy/buddypress/members/register.php:296 +#: bp-templates/bp-nouveau/includes/template-tags.php:2259 +#: bp-xprofile/bp-xprofile-template.php:1463 +msgid "(required)" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:96 +#: bp-templates/bp-nouveau/includes/functions.php:1145 +msgid "Email Address" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:107 +#: bp-templates/bp-nouveau/includes/functions.php:1153 +msgid "Choose a Password" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:119 +#: bp-templates/bp-nouveau/includes/functions.php:1161 +msgid "Confirm Password" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:165 +#: bp-templates/bp-nouveau/buddypress/members/register.php:47 +msgid "Profile Details" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:190 +#: bp-templates/bp-legacy/buddypress/members/register.php:212 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:60 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:81 +#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:380 +msgid "This field can be seen by: %s" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:200 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:70 +#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:397 +msgid "Who can see this field?" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:205 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:75 +#: bp-templates/bp-legacy/buddypress-functions.php:294 +#: bp-templates/bp-nouveau/buddypress-functions.php:413 +#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:402 +msgid "Close" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:274 +msgid "Blog Details" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:276 +msgid "Yes, I'd like to create a new site" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:280 +msgid "Blog URL" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:296 +#: bp-templates/bp-nouveau/includes/functions.php:1179 +msgid "Site Title" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:308 +msgid "" +"Privacy: I would like my site to appear in search engines, and in public " +"listings around this network." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:356 +#: bp-templates/bp-nouveau/includes/functions.php:1248 +msgid "Complete Sign Up" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:393 +#: bp-templates/bp-nouveau/includes/functions.php:1073 +msgid "" +"You have successfully created your account! To begin using this site you " +"will need to activate your account via the email we have just sent to your " +"address." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:395 +#: bp-templates/bp-nouveau/includes/functions.php:935 +msgid "" +"You have successfully created your account! Please log in using the " +"username and password you have just created." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/activity.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/friends.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/groups.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/messages.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/notifications.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/plugins.php:22 +#: bp-templates/bp-legacy/buddypress/members/single/profile.php:12 +#: bp-templates/bp-legacy/buddypress/members/single/settings.php:12 +msgid "Member secondary navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:21 +#. translators: accessibility text +msgid "Friendship requests" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:108 +#: bp-templates/bp-nouveau/includes/functions.php:1017 +msgid "You have no pending friendship requests." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/friends.php:59 +#. translators: accessibility text +msgid "My friends" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/friends.php:64 +#. translators: accessibility text +msgid "Friends" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:21 +#: bp-templates/bp-nouveau/includes/groups/functions.php:1209 +#. translators: accessibility text +msgid "Group invitations" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:72 +#: bp-templates/bp-nouveau/includes/functions.php:1021 +msgid "You have no outstanding group invites." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/groups.php:61 +#. translators: accessibility text +msgid "My groups" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/groups.php:66 +#. translators: accessibility text +msgid "Member's groups" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/home.php:39 +msgid "Member primary navigation" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:13 +#. translators: accessibility text +msgid "Compose Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:27 +msgid "Send To (Username or Friend's Name)" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:36 +msgid "This is a notice to all users." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:42 +msgid "Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:57 +msgid "Send Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:21 +#. translators: accessibility text +msgid "Starred messages" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:62 +#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:18 +#: bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php:18 +#. translators: accessibility text +msgid "Select all" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:64 +msgid "From" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:98 +#. translators: accessibility text +msgid "Select this message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:105 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:143 +msgid "From:" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:112 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:153 +msgid "To:" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:119 +msgid "View Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:195 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:247 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:404 +msgid "Sorry, no messages were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:64 +msgid "Sent:" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:78 +msgid "Delete Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:96 +msgid "Sorry, no notices were found." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:31 +msgid "You are alone in this conversation." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:35 +msgid "Conversation between %s recipients." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:39 +msgid "Conversation between %s." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:102 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:332 +msgid "Send a Reply" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:125 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:343 +#. translators: accessibility text +msgid "Reply to Message" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:139 +msgid "Send Reply" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages.php:44 +#. translators: accessibility text +msgid "Messages inbox" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages.php:49 +#. translators: accessibility text +msgid "Sent Messages" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/messages.php:89 +#. translators: accessibility text +msgid "Sitewide Notices" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:17 +#: bp-templates/bp-nouveau/includes/functions.php:1081 +msgid "You have no unread notifications." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:21 +#: bp-templates/bp-nouveau/includes/functions.php:1078 +msgid "This member has no unread notifications." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:29 +#: bp-templates/bp-nouveau/includes/functions.php:1084 +msgid "You have no notifications." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:33 +#: bp-templates/bp-nouveau/includes/functions.php:1025 +msgid "This member has no notifications." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:20 +#: bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php:19 +msgid "Notification" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:21 +#: bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php:21 +msgid "Date Received" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:34 +#: bp-templates/bp-nouveau/buddypress/members/single/notifications/notifications-loop.php:37 +#. translators: accessibility text +msgid "Select this notification" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php:16 +#. translators: accessibility text +msgid "Unread notifications" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:12 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:10 +msgid "Change Profile Photo" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:25 +msgid "" +"Your profile photo will be used on your profile and throughout the site. If " +"there is a <a href=\"http://gravatar.com\">Gravatar</a> associated with " +"your account email we will use that, or you can upload an image from your " +"computer." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:32 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:26 +msgid "" +"Click below to select a JPG, GIF or PNG format photo from your computer and " +"then click 'Upload Image' to proceed." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:53 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:44 +msgid "Crop Your New Profile Photo" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:85 +msgid "" +"Your profile photo will be used on your profile and throughout the site. To " +"change your profile photo, please create an account with <a " +"href=\"https://gravatar.com\">Gravatar</a> using the same email address as " +"you used to register with this site." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php:12 +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php:21 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-cover-image.php:11 +msgid "Change Cover Image" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php:23 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-cover-image.php:17 +msgid "Your Cover Image will be used to customize the header of your profile." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:27 +msgid "Editing '%s' Profile Group" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:30 +msgid "Profile field groups" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:29 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/profile-wp.php:20 +#. Translators: a member's profile, e.g. "Paul's profile". +msgid "%s's Profile" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php:26 +msgid "This user is a spammer." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:17 +#: bp-templates/bp-nouveau/includes/functions.php:1089 +msgid "" +"Deleting your account will delete all of the content you have created. It " +"will be completely irrecoverable." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:21 +msgid "" +"Deleting this account will delete all of the content it has created. It " +"will be completely irrecoverable." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:40 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/delete-account.php:21 +msgid "I understand the consequences." +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:15 +#. translators: accessibility text +msgid "Account settings" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:22 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:23 +msgid "" +"Current Password <span>(required to update email or change current " +"password)</span>" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:23 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:24 +msgid "Lost your password?" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:27 +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:28 +msgid "Account Email" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:30 +msgid "Change Password <span>(leave blank for no change)</span>" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:33 +msgid "Repeat New Password" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:15 +#. translators: accessibility text +msgid "Notification settings" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:19 +msgid "Send an email notice when:" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:19 +#. translators: accessibility text +msgid "Profile visibility settings" +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:1475 +msgid "Visibility" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:61 class-buddypress.php:740 +msgid "BuddyPress Legacy" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:293 +#: bp-templates/bp-nouveau/buddypress-functions.php:412 +msgid "Accepted" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:295 +#: bp-templates/bp-nouveau/buddypress-functions.php:414 +msgid "comments" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:296 +#: bp-templates/bp-nouveau/buddypress-functions.php:415 +msgid "Are you sure you want to leave this group?" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:298 +#: bp-templates/bp-nouveau/buddypress-functions.php:417 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:113 +#: bp-templates/bp-nouveau/includes/activity/functions.php:227 +msgid "My Favorites" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:299 +#: bp-templates/bp-nouveau/buddypress-functions.php:418 +msgid "Rejected" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:301 +#: bp-templates/bp-nouveau/buddypress-functions.php:419 +msgid "Show all" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:302 +#: bp-templates/bp-nouveau/buddypress-functions.php:420 +msgid "Show all comments for this thread" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:303 +msgid "Show all comments (%d)" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:304 +#: bp-templates/bp-nouveau/buddypress-functions.php:422 +msgid "" +"Your profile has unsaved changes. If you leave the page, the changes will " +"be lost." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:983 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:537 +msgid "There was a problem posting your update. Please try again." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1116 +#: bp-templates/bp-legacy/buddypress-functions.php:1156 +#: bp-templates/bp-nouveau/includes/activity/ajax.php:195 +msgid "There was a problem when deleting. Please try again." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1370 +msgid "" +"%s has previously requested to join this group. Sending an invitation will " +"automatically add the member to the group." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1412 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:107 +msgid "No member found by that ID." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1430 +msgid " Friendship could not be requested." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1442 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:210 +msgid "Friendship request could not be cancelled." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1447 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:220 +msgid "Request Pending" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1468 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:121 +msgid "There was a problem accepting that request. Please try again." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1488 +#: bp-templates/bp-nouveau/includes/friends/ajax.php:145 +msgid "There was a problem rejecting that request. Please try again." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1519 +msgid "Error joining group" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1532 +#: bp-templates/bp-legacy/buddypress-functions.php:1542 +msgid "Error requesting membership" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1553 +msgid "Error leaving group" +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1579 +msgid "There was a problem closing the notice." +msgstr "" + +#: bp-templates/bp-legacy/buddypress-functions.php:1646 +msgid "There was a problem sending that reply. Please try again." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/index.php:35 +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:36 +msgid "" +"If you'd like to delete your current profile photo, use the delete profile " +"photo button." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php:24 +msgid "" +"If you'd like to delete your current cover image, use the delete Cover " +"Image button." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php:25 +msgid "Select your file" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:16 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:22 +msgid "Invite Members" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:29 +msgid "Group invitations menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:65 +msgid "Invited by:" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:74 +msgid "The invite has not been sent yet." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:76 +msgid "The invite has been sent." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:86 +msgid "Cancel invitation" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:116 +msgid "Optional: add a message to your invite." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:36 +msgid "Send @Username" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:113 +msgid "All Messages" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:117 +msgid "Select bulk action" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:136 +msgid "Select message:" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:178 +msgid "Active conversation:" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:184 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:247 +msgid "Participants:" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:197 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:198 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:259 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:260 +msgid "Delete conversation." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:204 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:205 +msgid "Unstar Conversation" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:208 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:209 +msgid "Star Conversation" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:215 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:216 +msgid "View full conversation and reply." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:282 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:283 +msgid "Unstar Message" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:286 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:287 +msgid "Star Message" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/nav/directory-nav.php:10 +msgid "Directory menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/notices/template-notices.php:15 +#: bp-templates/bp-nouveau/buddypress/members/single/default-front.php:16 +msgid "Close this notice" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/create.php:11 +msgid "Create A New Group" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/create.php:27 +msgid "Group creation menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/activity.php:12 +msgid "Group Activities" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/delete-group.php:11 +msgid "Delete this group" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php:13 +msgid "Enter Group Name & Description" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/edit-details.php:19 +msgid "Edit Group Name & Description" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:13 +msgid "Upload Group Avatar" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:19 +msgid "Change Group Avatar" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:26 +msgid "" +"Add an image to use as a profile photo for this group. The image will be " +"shown on the main group page, and in search results." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-avatar.php:28 +msgid "Edit or update your avatar image for this group." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-cover-image.php:13 +msgid "Upload Cover Image" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:13 +msgid "Select Group Settings" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:19 +msgid "Change Group Settings" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:44 +msgid "Only people who request membership and are accepted can join the group." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/group-settings.php:54 +msgid "Only people who are invited can join the group." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:11 +msgid "Manage Group Members" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/admin/manage-members.php:14 +msgid "Manage your group members; promote to moderators, admins or demote or ban." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/default-front.php:16 +msgid "Manage the Groups default front page" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/default-front.php:21 +msgid "You can set your preferences for the %1$s or add %2$s to it." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/members.php:20 +msgid "Membership List" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/parts/admin-subnav.php:10 +msgid "Group administration menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php:13 +msgid "Group Leadership" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/parts/header-item-actions.php:16 +msgid "Group Administrators" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/groups/single/parts/item-nav.php:10 +msgid "Group menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/register.php:89 +msgid "Site Details" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/register.php:91 +msgid "Yes, i'd like to create a new site" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/activity.php:11 +msgid "Activity menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/activity.php:20 +msgid "Member Activities" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/blogs.php:10 +msgid "Sites menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/default-front.php:15 +msgid "Manage the members default front page" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/default-front.php:19 +msgid "You can set the preferences of the %1$s or add %2$s to it." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/friends/requests.php:10 +msgid "Friendship Requests" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/friends.php:10 +msgid "Friends menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/groups.php:10 +msgid "Groups menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/messages.php:9 +msgid "Messages menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/notifications.php:10 +msgid "Notifications menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/parts/item-nav.php:10 +msgid "Member menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php:21 +#: bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php:44 +#. translators: field visibility level, e.g. "...seen by: everyone". +msgid "This field may be seen by: %s" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php:31 +msgid "Who is allowed to see this field?" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:18 +msgid "" +"Your profile photo will be used on your profile and throughout the site. If " +"there is a <a href=\"https://gravatar.com\">Gravatar</a> associated with " +"your account email we will use that, or you can upload an image from your " +"computer." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/profile/change-avatar.php:77 +msgid "" +"Your profile photo will be used on your profile and throughout the site. To " +"change your profile photo, create an account with <a " +"href=\"https://gravatar.com\">Gravatar</a> using the same email address as " +"you used to register with this site." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/profile/edit.php:34 +#. translators: %s = profile field group name +msgid "Editing \"%s\" Profile Group" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/profile.php:10 +msgid "Profile menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/capabilities.php:12 +msgid "Members Capabilities" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/capabilities.php:19 +msgid "This member is a spammer." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:12 +msgid "Email & Password" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:16 +msgid "Update your email and or password." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:33 +msgid "Leave password fields blank for no change" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:36 +msgid "Add Your New Password" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/general.php:39 +msgid "Repeat Your New Password" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/group-invites.php:27 +msgid "I want to restrict Group invites to my friends only." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/notifications.php:12 +msgid "Email Notifications" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/notifications.php:16 +msgid "Set your email notification preferences." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php:12 +msgid "Profile Visibility Settings" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings/profile.php:16 +msgid "Select who may see your profile details." +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/settings.php:12 +msgid "Settings menu" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress-functions.php:421 +msgid "Show all %d comments" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:267 +msgid "There was a problem displaying the content. Please try again." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:455 +msgid "No activites were found." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:554 +msgid "Update posted." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:554 +msgid "View activity." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:582 +msgid "There was a problem marking this activity as spam. Please try again." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/ajax.php:631 +msgid "This activity has been marked as spam and is no longer visible." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:137 +msgid "Post in: Profile" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:146 +msgid "Post in: Group" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:147 +msgid "Start typing the group name..." +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:199 +#: bp-templates/bp-nouveau/includes/groups/functions.php:118 +#: bp-templates/bp-nouveau/includes/members/functions.php:49 +msgid "All Members" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:253 +#: bp-templates/bp-nouveau/includes/groups/functions.php:517 +msgid "My Groups" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:490 +msgid "New mentions" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:495 +msgid "New update replies" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/functions.php:500 +msgid "New update comment replies" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:96 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:22 -msgid "Most Members" +#: bp-templates/bp-nouveau/includes/activity/functions.php:522 +msgid "Use column navigation for the Activity directory." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:97 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:23 -msgid "Newly Created" +#: bp-templates/bp-nouveau/includes/activity/functions.php:528 +msgid "Use tab styling for Activity directory navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/index.php:115 -#. translators: accessibility text -msgid "Groups directory" +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:377 +msgid "Mark as Favorite" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:23 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:681 +#. translators: 1: user profile link, 2: user name, 3: activity permalink, 4: +#. activity recorded date, 5: activity timestamp, 6: activity human time since msgid "" -"WARNING: Deleting this group will completely remove ALL content associated " -"with it. There is no way back, please be careful with this option." +"<a href=\"%1$s\">%2$s</a> replied <a href=\"%3$s\" " +"class=\"activity-time-since\"><time class=\"time-since\" datetime=\"%4$s\" " +"data-bp-timestamp=\"%5$d\">%6$s</time></a>" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/delete-group.php:26 -msgid "I understand the consequences of deleting this group." +#: bp-templates/bp-nouveau/includes/activity/widgets.php:35 +msgid "" +"Display the latest updates of your community having the types of your " +"choice." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:11 -msgid "Manage Group Details" +#: bp-templates/bp-nouveau/includes/activity/widgets.php:40 +msgid "(BuddyPress) Latest Activities" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/edit-details.php:39 -msgid "Notify group members of these changes via email" +#: bp-templates/bp-nouveau/includes/activity/widgets.php:62 +#: bp-templates/bp-nouveau/includes/activity/widgets.php:169 +msgid "Latest updates" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-avatar.php:49 -msgid "Crop Profile Photo" +#: bp-templates/bp-nouveau/includes/activity/widgets.php:188 +msgid "Maximum amount to display:" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/group-settings.php:11 -msgid "Manage Group Settings" +#: bp-templates/bp-nouveau/includes/activity/widgets.php:192 +msgid "Type:" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:111 -msgid "No group administrators were found." +#: bp-templates/bp-nouveau/includes/blogs/functions.php:23 +msgid "All Sites" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:206 -msgid "No group moderators were found." +#: bp-templates/bp-nouveau/includes/blogs/functions.php:168 +msgid "Sites loop:" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:247 -msgid "(banned)" +#: bp-templates/bp-nouveau/includes/blogs/functions.php:175 +msgid "Use column navigation for the Sites directory." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:270 -msgid "Remove Ban" +#: bp-templates/bp-nouveau/includes/blogs/functions.php:181 +msgid "Use tab styling for Sites directory navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:274 -msgid "Kick & Ban" +#: bp-templates/bp-nouveau/includes/classes.php:189 +msgid "" +"Displays BuddyPress primary nav in the sidebar of your site. Make sure to " +"use it as the first widget of the sidebar and only once." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:275 -msgid "Promote to Mod" +#: bp-templates/bp-nouveau/includes/classes.php:195 +msgid "(BuddyPress) Primary navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:280 -msgid "Remove from group" +#: bp-templates/bp-nouveau/includes/classes.php:313 +msgid "Include navigation title" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/manage-members.php:317 -msgid "No group members were found." +#: bp-templates/bp-nouveau/includes/customizer-controls.php:40 +msgid "" +"Customizing the Groups navigation order needs you create at least one group " +"first." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/admin/membership-requests.php:11 -msgid "Manage Membership Requests" +#: bp-templates/bp-nouveau/includes/customizer-controls.php:58 +msgid "" +"Drag each possible group navigation items that are listed below into the " +"order you prefer, in some groups some of these navigation items might not " +"be active." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:74 -#: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:22 -msgid "Group Admins" +#: bp-templates/bp-nouveau/includes/customizer-controls.php:65 +msgid "" +"Drag each possible member navigation items that are listed below into the " +"order you prefer." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/cover-image-header.php:94 -#: bp-templates/bp-legacy/buddypress/groups/single/group-header.php:42 -msgid "Group Mods" +#: bp-templates/bp-nouveau/includes/customizer.php:26 +msgid "Customize the appearance of BuddyPress Nouveau Template pack." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:29 -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:30 -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:38 -msgid "Forum Directory" +#: bp-templates/bp-nouveau/includes/customizer.php:40 +msgid "General BP Settings" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:38 -msgid "Edit:" +#: bp-templates/bp-nouveau/includes/customizer.php:43 +msgid "Configure general BuddyPress appearance options." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:113 -#. translators: accessibility text -msgid "Edit text" +#: bp-templates/bp-nouveau/includes/customizer.php:46 +msgid "Member front page" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/edit.php:139 -msgid "This topic does not exist." +#: bp-templates/bp-nouveau/includes/customizer.php:49 +msgid "Configure the default front page for members." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:22 -msgid "New Reply" +#: bp-templates/bp-nouveau/includes/customizer.php:52 +msgid "Member navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:45 -msgid "Topic tags:" +#: bp-templates/bp-nouveau/includes/customizer.php:55 +msgid "" +"Customize the navigation menu for members. In the preview window, navigate " +"to a user to preview your changes." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:108 -msgid "%1$s said %2$s:" +#: bp-templates/bp-nouveau/includes/customizer.php:58 +msgid "Loop layouts" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:129 -msgid "Permanent link to this post" +#: bp-templates/bp-nouveau/includes/customizer.php:61 +msgid "Set the number of columns to use for BuddyPress loops." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:160 -msgid "There are no posts for this topic." +#: bp-templates/bp-nouveau/includes/customizer.php:64 +msgid "Directory layouts" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:175 -msgid "You will auto join this group when you reply to this topic." +#: bp-templates/bp-nouveau/includes/customizer.php:67 +msgid "Select the layout style for directory content & navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:187 -msgid "Add a reply:" +#: bp-templates/bp-nouveau/includes/customizer.php:220 +msgid "Use the round style for member and group avatars." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:196 -msgid "Post Reply" +#: bp-templates/bp-nouveau/includes/customizer.php:226 +msgid "Enable default front page for member profiles." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum/topic.php:214 -msgid "This topic is closed, replies are no longer accepted." +#: bp-templates/bp-nouveau/includes/customizer.php:232 +msgid "Display the biographical info from the member's WordPress profile." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:100 -msgid "You will auto join this group when you start a new topic." +#: bp-templates/bp-nouveau/includes/customizer.php:238 +msgid "Display the member navigation vertically." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/forum.php:104 -msgid "Post a New Topic:" +#: bp-templates/bp-nouveau/includes/customizer.php:244 +msgid "Use tab styling for primary nav." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/home.php:39 -msgid "Group primary navigation" +#: bp-templates/bp-nouveau/includes/customizer.php:250 +msgid "Use tab styling for secondary nav." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/invites-loop.php:110 -msgid "Select friends to invite." +#: bp-templates/bp-nouveau/includes/customizer.php:257 +msgid "Reorder the primary navigation for a user." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/members.php:131 -msgid "No members were found." +#: bp-templates/bp-nouveau/includes/customizer.php:270 +msgid "Member > Friends" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:19 -#. translators: accessibility text -msgid "Request form" +#: bp-templates/bp-nouveau/includes/customizer.php:277 +msgid "Use column navigation for the Members directory." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:22 -msgid "You are requesting to become a member of the group '%s'." +#: bp-templates/bp-nouveau/includes/customizer.php:283 +msgid "Use tab styling for Members directory navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:25 -msgid "Comments (optional)" +#: bp-templates/bp-nouveau/includes/friends/ajax.php:68 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:47 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:259 +msgid "There was a problem performing this action. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:37 -msgid "Send Request" +#: bp-templates/bp-nouveau/includes/friends/ajax.php:130 +msgid "Friendship accepted." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:57 -#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:62 -#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:50 -msgid "Accept" +#: bp-templates/bp-nouveau/includes/friends/ajax.php:154 +msgid "Friendship rejected." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:59 -#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:63 -#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:51 -msgid "Reject" +#: bp-templates/bp-nouveau/includes/friends/ajax.php:167 +msgid "Friendship could not be cancelled." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/requests-loop.php:95 -msgid "There are no pending membership requests." +#: bp-templates/bp-nouveau/includes/friends/ajax.php:180 +msgid "Friendship cancelled." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:20 -msgid "Send invites" +#: bp-templates/bp-nouveau/includes/friends/loader.php:101 +msgid "Accepted friendship requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:30 -msgid "Send Invites" +#: bp-templates/bp-nouveau/includes/friends/loader.php:106 +msgid "Pending friendship requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:45 -msgid "Group invitations can only be extended to friends." +#: bp-templates/bp-nouveau/includes/functions.php:319 +msgid "BuddyPress Member's Home" msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:46 +#: bp-templates/bp-nouveau/includes/functions.php:321 msgid "" -"Once you've made some friendships, you'll be able to invite those members " -"to this group." +"Add widgets here to appear in the front page of each member of your " +"community." msgstr "" -#: bp-templates/bp-legacy/buddypress/groups/single/send-invites.php:54 -msgid "All of your friends already belong to this group." +#: bp-templates/bp-nouveau/includes/functions.php:331 +msgid "BuddyPress Group's Home" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/activate.php:44 +#: bp-templates/bp-nouveau/includes/functions.php:333 msgid "" -"Your account was activated successfully! Your account details have been " -"sent to you in a separate email." +"Add widgets here to appear in the front page of each group of your " +"community." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/activate.php:46 -msgid "" -"Your account was activated successfully! You can now <a href=\"%s\">log " -"in</a> with the username and password you provided when you signed up." +#: bp-templates/bp-nouveau/includes/functions.php:689 +msgid "One column" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/activate.php:51 -msgid "Please provide a valid activation key." +#: bp-templates/bp-nouveau/includes/functions.php:690 +msgid "Two columns" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/activate.php:55 -msgid "Activation Key:" +#: bp-templates/bp-nouveau/includes/functions.php:691 +msgid "Three columns" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/index.php:59 -msgid "Members directory main navigation" +#: bp-templates/bp-nouveau/includes/functions.php:692 +msgid "Four columns" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/index.php:79 -msgid "Members directory secondary navigation" +#: bp-templates/bp-nouveau/includes/functions.php:923 +msgid "Member registration is currently not allowed." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/index.php:94 -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:22 -msgid "Newest Registered" +#: bp-templates/bp-nouveau/includes/functions.php:941 +msgid "Loading the community updates. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/index.php:115 -#. translators: accessibility text -msgid "Members directory" +#: bp-templates/bp-nouveau/includes/functions.php:945 +msgid "Loading the update. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:45 -msgid "User registration is currently not allowed." +#: bp-templates/bp-nouveau/includes/functions.php:957 +msgid "Site registration is currently disabled." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:67 -msgid "" -"Registering for this site is easy. Just fill in the fields below, and we'll " -"get a new account set up for you in no time." +#: bp-templates/bp-nouveau/includes/functions.php:961 +msgid "Loading the sites of the network. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:82 -msgid "Account Details" +#: bp-templates/bp-nouveau/includes/functions.php:965 +msgid "Loading the groups of the community. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:84 -#: bp-templates/bp-legacy/buddypress/members/register.php:95 -#: bp-templates/bp-legacy/buddypress/members/register.php:106 -#: bp-templates/bp-legacy/buddypress/members/register.php:118 -#: bp-templates/bp-legacy/buddypress/members/register.php:279 -#: bp-templates/bp-legacy/buddypress/members/register.php:295 -#: bp-xprofile/bp-xprofile-template.php:1458 -msgid "(required)" +#: bp-templates/bp-nouveau/includes/functions.php:969 +msgid "Sorry, there were no groups found." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:95 -msgid "Email Address" +#: bp-templates/bp-nouveau/includes/functions.php:973 +msgid "Loading the group updates. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:106 -msgid "Choose a Password" +#: bp-templates/bp-nouveau/includes/functions.php:977 +msgid "Requesting the group members. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:118 -msgid "Confirm Password" +#: bp-templates/bp-nouveau/includes/functions.php:981 +msgid "Sorry, there were no group members found." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:164 -msgid "Profile Details" +#: bp-templates/bp-nouveau/includes/functions.php:985 +msgid "Sorry, there was no member of that name found in this group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:189 -#: bp-templates/bp-legacy/buddypress/members/register.php:211 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:59 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:80 -#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:380 -msgid "This field can be seen by: %s" +#: bp-templates/bp-nouveau/includes/functions.php:989 +msgid "This group has no members." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:199 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:69 -#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:397 -msgid "Who can see this field?" +#: bp-templates/bp-nouveau/includes/functions.php:997 +msgid "Loading the members who requested to join the group. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:204 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:74 -#: bp-templates/bp-legacy/buddypress-functions.php:294 -#: bp-xprofile/classes/class-bp-xprofile-user-admin.php:402 -msgid "Close" +#: bp-templates/bp-nouveau/includes/functions.php:1001 +msgid "" +"WARNING: Deleting this group will completely remove ALL content associated " +"with it. There is no way back. Please be careful with this option." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:273 -msgid "Blog Details" +#: bp-templates/bp-nouveau/includes/functions.php:1009 +msgid "Loading the members of your community. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:275 -msgid "Yes, I'd like to create a new site" +#: bp-templates/bp-nouveau/includes/functions.php:1029 +msgid "%s did not save any profile information yet." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:279 -msgid "Blog URL" +#: bp-templates/bp-nouveau/includes/functions.php:1033 +msgid "" +"Deleting this account will delete all of the content it has created. It " +"will be completely unrecoverable." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:295 -msgid "Site Title" +#: bp-templates/bp-nouveau/includes/functions.php:1037 +msgid "Loading the member's updates. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:307 -msgid "" -"Privacy: I would like my site to appear in search engines, and in public " -"listings around this network." +#: bp-templates/bp-nouveau/includes/functions.php:1041 +msgid "Loading the member's blogs. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:355 -msgid "Complete Sign Up" +#: bp-templates/bp-nouveau/includes/functions.php:1045 +msgid "Loading the member's friends. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:392 -msgid "" -"You have successfully created your account! To begin using this site you " -"will need to activate your account via the email we have just sent to your " -"address." +#: bp-templates/bp-nouveau/includes/functions.php:1049 +msgid "Loading the member's groups. Please wait." +msgstr "" + +#: bp-templates/bp-nouveau/includes/functions.php:1053 +msgid "Loading notifications. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:394 +#: bp-templates/bp-nouveau/includes/functions.php:1057 msgid "" -"You have successfully created your account! Please log in using the " -"username and password you have just created." +"Currently every member of the community can invite you to join their " +"groups. If you are not comfortable with it, you can always restrict group " +"invites to your friends only." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/activity.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/blogs.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/forums.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/messages.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/notifications.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/plugins.php:21 -#: bp-templates/bp-legacy/buddypress/members/single/profile.php:11 -#: bp-templates/bp-legacy/buddypress/members/single/settings.php:11 -msgid "Member secondary navigation" +#: bp-templates/bp-nouveau/includes/functions.php:1061 +msgid "" +"Currently only your friends can invite you to groups. Uncheck the box to " +"allow any member to send invites." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:20 -#. translators: accessibility text -msgid "Friendship requests" +#: bp-templates/bp-nouveau/includes/functions.php:1091 +msgid "Loading your updates. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/friends/requests.php:107 -msgid "You have no pending friendship requests." +#: bp-templates/bp-nouveau/includes/functions.php:1093 +msgid "Loading your blogs. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:58 -#. translators: accessibility text -msgid "My friends" +#: bp-templates/bp-nouveau/includes/functions.php:1095 +msgid "Loading your friends. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/friends.php:63 -#. translators: accessibility text -msgid "Friends" +#: bp-templates/bp-nouveau/includes/functions.php:1097 +msgid "Loading your groups. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:20 -#. translators: accessibility text -msgid "Group invitations" +#: bp-templates/bp-nouveau/includes/functions.php:1171 +msgid "Site URL" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:71 -msgid "You have no outstanding group invites." +#: bp-templates/bp-nouveau/includes/groups/ajax.php:79 +msgid "You cannot join this group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:60 -#. translators: accessibility text -msgid "My groups" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:80 +msgid "You are already a member of the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/groups.php:65 -#. translators: accessibility text -msgid "Member's groups" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:104 +msgid "Group invitation could not be accepted." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/home.php:38 -msgid "Member primary navigation" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:125 +msgid "Group invite accepted." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:12 -#. translators: accessibility text -msgid "Compose Message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:171 +msgid "Error joining this group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:26 -msgid "Send To (Username or Friend's Name)" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:192 +msgid "Error requesting membership." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:35 -msgid "This is a notice to all users." +#: bp-templates/bp-nouveau/includes/groups/ajax.php:213 +msgid "Error leaving group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:38 -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:64 -msgid "Subject" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:287 +msgid "" +"Select members to invite by clicking the + button. Once you've made your " +"selection, use the \"Send Invites\" navigation item to continue." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:41 -msgid "Message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:292 +msgid "" +"Select friends to invite by clicking the + button. Once you've made your " +"selection, use the \"Send Invites\" navigation item to continue." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/compose.php:56 -msgid "Send Message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:299 +msgid "No pending group invitations found." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:20 -#. translators: accessibility text -msgid "Starred messages" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:306 +msgid "You can view the group's pending invitations from this screen." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:61 -#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:17 -#. translators: accessibility text -msgid "Select all" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:313 +msgid "No members were found. Try another filter." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:63 -msgid "From" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:319 +msgid "" +"All your friends are already members of this group, or have already " +"received an invite to join this group, or have requested to join it." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:97 -#. translators: accessibility text -msgid "Select this message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:325 +msgid "You have no friends!" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:104 -msgid "From:" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:354 +msgid "Invites could not be sent. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:111 -msgid "To:" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:370 +msgid "You are not allowed to send invitations for this group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:118 -msgid "View Message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:411 +#. translators: count of users affected +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:430 +msgid "Invitations sent." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/messages-loop.php:194 -msgid "Sorry, no messages were found." +#: bp-templates/bp-nouveau/includes/groups/ajax.php:447 +#: bp-templates/bp-nouveau/includes/groups/ajax.php:467 +msgid "Group invitation could not be removed." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:63 -msgid "Sent:" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:456 +msgid "The member is already a member of the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:77 -msgid "Delete Message" +#: bp-templates/bp-nouveau/includes/groups/ajax.php:476 +msgid "There are no more pending invitations for the group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/notices-loop.php:95 -msgid "Sorry, no notices were found." +#: bp-templates/bp-nouveau/includes/groups/functions.php:123 +msgid "Pending Invites" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:30 -msgid "You are alone in this conversation." +#: bp-templates/bp-nouveau/includes/groups/functions.php:150 +msgid "Loading members. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:34 -msgid "Conversation between %s recipients." +#: bp-templates/bp-nouveau/includes/groups/functions.php:151 +msgid "" +"Use the \"Send\" button to send your invite or the \"Cancel\" button to " +"abort." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:38 -msgid "Conversation between %s." +#: bp-templates/bp-nouveau/includes/groups/functions.php:152 +msgid "" +"Group invitations cleared. Please use one of the available tabs to select " +"members to invite." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:101 -msgid "Send a Reply" +#: bp-templates/bp-nouveau/includes/groups/functions.php:153 +msgid "Sending group invitations. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:124 -#. translators: accessibility text -msgid "Reply to Message" +#: bp-templates/bp-nouveau/includes/groups/functions.php:154 +msgid "Cancel invitation %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages/single.php:138 -msgid "Send Reply" +#: bp-templates/bp-nouveau/includes/groups/functions.php:472 +msgid "Group invites preferences saved." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages.php:43 -#. translators: accessibility text -msgid "Messages inbox" +#: bp-templates/bp-nouveau/includes/groups/functions.php:474 +msgid "You are not allowed to perform this action." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages.php:48 -#. translators: accessibility text -msgid "Sent Messages" +#: bp-templates/bp-nouveau/includes/groups/functions.php:501 +msgid "All Groups" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/messages.php:88 -#. translators: accessibility text -msgid "Sitewide Notices" +#: bp-templates/bp-nouveau/includes/groups/functions.php:686 +msgid "Group front page" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:16 -msgid "You have no unread notifications." +#: bp-templates/bp-nouveau/includes/groups/functions.php:689 +msgid "Configure the default front page for groups." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:20 -msgid "This member has no unread notifications." +#: bp-templates/bp-nouveau/includes/groups/functions.php:692 +msgid "Group navigation" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:28 -msgid "You have no notifications." +#: bp-templates/bp-nouveau/includes/groups/functions.php:695 +msgid "" +"Customize the navigation menu for groups. See your changes by navigating to " +"a group in the live-preview window." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/feedback-no-notifications.php:32 -msgid "This member has no notifications." +#: bp-templates/bp-nouveau/includes/groups/functions.php:796 +msgid "Enable custom front pages for groups." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:19 -msgid "Notification" +#: bp-templates/bp-nouveau/includes/groups/functions.php:802 +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-legacy/buddypress/members/single/notifications/notifications-loop.php:20 -msgid "Date Received" +#: bp-templates/bp-nouveau/includes/groups/functions.php:808 +msgid "Display the group description in the body of the group's front page." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/notifications-loop.php:33 -#. translators: accessibility text -msgid "Select this notification" +#: bp-templates/bp-nouveau/includes/groups/functions.php:814 +msgid "Display the group navigation vertically." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/notifications/unread.php:15 -#. translators: accessibility text -msgid "Unread notifications" +#: bp-templates/bp-nouveau/includes/groups/functions.php:820 +msgid "Use tab styling for primary navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:11 -msgid "Change Profile Photo" +#: bp-templates/bp-nouveau/includes/groups/functions.php:826 +msgid "Use tab styling for secondary navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:24 -msgid "" -"Your profile photo will be used on your profile and throughout the site. If " -"there is a <a href=\"http://gravatar.com\">Gravatar</a> associated with " -"your account email we will use that, or you can upload an image from your " -"computer." +#: bp-templates/bp-nouveau/includes/groups/functions.php:832 +msgid "Use tab styling for the group creation process." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:31 -msgid "" -"Click below to select a JPG, GIF or PNG format photo from your computer and " -"then click 'Upload Image' to proceed." +#: bp-templates/bp-nouveau/includes/groups/functions.php:839 +msgid "Reorder the primary navigation for a group." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:52 -msgid "Crop Your New Profile Photo" +#: bp-templates/bp-nouveau/includes/groups/functions.php:852 +msgid "Group > Members" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-avatar.php:84 -msgid "" -"Your profile photo will be used on your profile and throughout the site. To " -"change your profile photo, please create an account with <a " -"href=\"https://gravatar.com\">Gravatar</a> using the same email address as " -"you used to register with this site." +#: bp-templates/bp-nouveau/includes/groups/functions.php:859 +msgid "Use column navigation for the Groups directory." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php:11 -msgid "Change Cover Image" +#: bp-templates/bp-nouveau/includes/groups/functions.php:865 +msgid "Use tab styling for Groups directory navigation." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/change-cover-image.php:22 -msgid "Your Cover Image will be used to customize the header of your profile." +#: bp-templates/bp-nouveau/includes/groups/functions.php:1184 +msgid "Pending Group membership requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:26 -msgid "Editing '%s' Profile Group" +#: bp-templates/bp-nouveau/includes/groups/functions.php:1189 +msgid "Accepted Group membership requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:29 -msgid "Profile field groups" +#: bp-templates/bp-nouveau/includes/groups/functions.php:1194 +msgid "Rejected Group membership requests" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/profile/profile-wp.php:28 -msgid "%s's Profile" +#: bp-templates/bp-nouveau/includes/groups/functions.php:1199 +msgid "Group Administrator promotions" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/capabilities.php:25 -msgid "This user is a spammer." +#: bp-templates/bp-nouveau/includes/groups/functions.php:1204 +msgid "Group Moderator promotions" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:16 -msgid "" -"Deleting your account will delete all of the content you have created. It " -"will be completely irrecoverable." +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1282 +msgid "Groups default front page" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:20 -msgid "" -"Deleting this account will delete all of the content it has created. It " -"will be completely irrecoverable." +#: bp-templates/bp-nouveau/includes/groups/template-tags.php:1300 +#: bp-templates/bp-nouveau/includes/members/template-tags.php:711 +msgid "(BuddyPress) Widgets" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/delete-account.php:39 -msgid "I understand the consequences." +#: bp-templates/bp-nouveau/includes/members/template-tags.php:693 +msgid "Members default front page" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:14 -#. translators: accessibility text -msgid "Account settings" +#: bp-templates/bp-nouveau/includes/members/template-tags.php:785 +msgid "Edit your bio" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:21 -msgid "" -"Current Password <span>(required to update email or change current " -"password)</span>" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:43 +msgid "Your message could not be sent. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:22 -msgid "Lost your password?" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:65 +msgid "Your message was not sent. Please enter at least one username." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:26 -msgid "Account Email" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:121 +msgid "Your reply was not sent. Please enter some content." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:29 -msgid "Change Password <span>(leave blank for no change)</span>" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:223 +#: bp-templates/bp-nouveau/includes/messages/ajax.php:398 +msgid "Unauthorized request." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/general.php:32 -msgid "Repeat New Password" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:513 +msgid "There was a problem deleting your messages. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:14 -#. translators: accessibility text -msgid "Notification settings" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:536 +msgid "Messages deleted" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/notifications.php:18 -msgid "Send an email notice when:" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:552 +msgid "There was a problem starring your messages. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:18 -#. translators: accessibility text -msgid "Profile visibility settings" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:554 +msgid "There was a problem unstarring your messages. Please try agian." msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/settings/profile.php:33 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1428 -msgid "Visibility" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:628 +msgid "Messages successfully starred." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:60 class-buddypress.php:709 -msgid "BuddyPress Legacy" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:630 +msgid "Messages successfully unstarred." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:293 -msgid "Accepted" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:651 +msgid "There was a problem marking your messages as read. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:295 -msgid "comments" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:657 +msgid "There was a problem marking your messages as unread. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:296 -msgid "Are you sure you want to leave this group?" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:677 +msgid "Messages marked as read." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:298 -msgid "My Favorites" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:712 +msgid "There was a problem dismissing the notice. Please try again." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:299 -msgid "Rejected" +#: bp-templates/bp-nouveau/includes/messages/ajax.php:746 +msgid "Sitewide notice dismissed" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:301 -msgid "Show all" +#: bp-templates/bp-nouveau/includes/messages/functions.php:95 +msgid "Please add at least one recipient." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:302 -msgid "Show all comments for this thread" +#: bp-templates/bp-nouveau/includes/messages/functions.php:96 +msgid "Please add a subject to your message." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:303 -msgid "Show all comments (%d)" +#: bp-templates/bp-nouveau/includes/messages/functions.php:97 +msgid "Please add some content to your message." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:304 -msgid "" -"Your profile has unsaved changes. If you leave the page, the changes will " -"be lost." +#: bp-templates/bp-nouveau/includes/messages/functions.php:102 +msgid "Loading messages. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:968 -msgid "There was a problem posting your update. Please try again." +#: bp-templates/bp-nouveau/includes/messages/functions.php:104 +msgid "Marking messages as read. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1102 -#: bp-templates/bp-legacy/buddypress-functions.php:1142 -msgid "There was a problem when deleting. Please try again." +#: bp-templates/bp-nouveau/includes/messages/functions.php:105 +msgid "Marking messages as unread. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1354 -msgid "" -"%s has previously requested to join this group. Sending an invitation will " -"automatically add the member to the group." +#: bp-templates/bp-nouveau/includes/messages/functions.php:106 +msgid "Deleting messages. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1410 -msgid " Friendship could not be requested." +#: bp-templates/bp-nouveau/includes/messages/functions.php:107 +msgid "Starring messages. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1422 -msgid "Friendship request could not be cancelled." +#: bp-templates/bp-nouveau/includes/messages/functions.php:108 +msgid "Unstarring messages. Please wait." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1427 -msgid "Request Pending" +#: bp-templates/bp-nouveau/includes/messages/functions.php:111 +msgid "" +"Click on the message title to preview it in the Active conversation box " +"below." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1448 -msgid "There was a problem accepting that request. Please try again." +#: bp-templates/bp-nouveau/includes/messages/functions.php:112 +msgid "" +"Use the select box to define your bulk action and click on the ✓ " +"button to apply." msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1468 -msgid "There was a problem rejecting that request. Please try again." +#: bp-templates/bp-nouveau/includes/messages/functions.php:114 +msgid "(and 1 other)" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1499 -msgid "Error joining group" +#: bp-templates/bp-nouveau/includes/messages/functions.php:115 +msgid "(and %d others)" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1512 -#: bp-templates/bp-legacy/buddypress-functions.php:1522 -msgid "Error requesting membership" +#: bp-templates/bp-nouveau/includes/messages/functions.php:257 +msgid "New sitewide notice" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1533 -msgid "Error leaving group" +#: bp-templates/bp-nouveau/includes/messages/functions.php:436 +msgid "New private messages" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1559 -msgid "There was a problem closing the notice." +#: bp-templates/bp-nouveau/includes/template-tags.php:2253 +#. translators: Do not translate placeholders. 2 = form field name, 3 = +#. "(required)". +msgid "<label for=\"%1$s\">%2$s %3$s</label>" msgstr "" -#: bp-templates/bp-legacy/buddypress-functions.php:1626 -msgid "There was a problem sending that reply. Please try again." +#: bp-templates/bp-nouveau/includes/template-tags.php:2272 +msgid "" +"I would like my site to appear in search engines, and in public listings " +"around this network." msgstr "" #: bp-xprofile/bp-xprofile-activity.php:29 @@ -7687,73 +8395,69 @@ msgstr "" msgid "%s's profile was updated" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:139 -#: bp-xprofile/classes/class-bp-xprofile-group.php:721 +#: bp-xprofile/bp-xprofile-admin.php:149 bp-xprofile/bp-xprofile-admin.php:157 +#: bp-xprofile/classes/class-bp-xprofile-group.php:729 msgid "Add New Field Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:171 bp-xprofile/bp-xprofile-admin.php:638 +#: bp-xprofile/bp-xprofile-admin.php:191 bp-xprofile/bp-xprofile-admin.php:677 msgid "(Primary)" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:193 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1149 +#: bp-xprofile/bp-xprofile-admin.php:234 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1179 msgid "Add New Field" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:232 +#: bp-xprofile/bp-xprofile-admin.php:273 #. translators: accessibility text msgid "Fields for \"%s\" Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:258 +#: bp-xprofile/bp-xprofile-admin.php:299 msgid "There are no fields in this group." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:266 +#: bp-xprofile/bp-xprofile-admin.php:307 msgid "* Fields in this group appear on the signup page." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:320 +#: bp-xprofile/bp-xprofile-admin.php:361 msgid "There was an error saving the group. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:325 +#: bp-xprofile/bp-xprofile-admin.php:366 msgid "The group was saved successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:439 +#: bp-xprofile/bp-xprofile-admin.php:480 msgid "There was an error saving the field. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:442 +#: bp-xprofile/bp-xprofile-admin.php:483 msgid "The field was saved successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:528 +#: bp-xprofile/bp-xprofile-admin.php:569 msgid "field" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:528 +#: bp-xprofile/bp-xprofile-admin.php:569 msgid "option" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:532 +#: bp-xprofile/bp-xprofile-admin.php:573 msgid "There was an error deleting the %s. Please try again." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:535 +#: bp-xprofile/bp-xprofile-admin.php:576 msgid "The %s was deleted successfully!" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:640 +#: bp-xprofile/bp-xprofile-admin.php:679 msgid "(Sign-up)" msgstr "" -#: bp-xprofile/bp-xprofile-screens.php:168 -msgid "Changes saved." -msgstr "" - #: bp-xprofile/bp-xprofile-settings.php:49 msgid "Your profile settings have been saved." msgstr "" @@ -7762,153 +8466,150 @@ msgstr "" msgid "This member's profile settings have been saved." msgstr "" -#: bp-xprofile/bp-xprofile-template.php:1136 +#: bp-xprofile/bp-xprofile-template.php:1141 msgid "Profile not recently updated." msgstr "" -#: bp-xprofile/bp-xprofile-template.php:1162 +#: bp-xprofile/bp-xprofile-template.php:1167 msgid "Profile updated %s" msgstr "" -#: bp-xprofile/bp-xprofile-template.php:1399 +#: bp-xprofile/bp-xprofile-template.php:1404 #. translators: accessibility text msgid "Select visibility" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:110 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:305 -#. translators: accessibility text -msgid "Select day" +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:109 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:301 +msgid "Day" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:121 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:313 -#. translators: accessibility text -msgid "Select month" +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:119 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:308 +msgid "Month" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:132 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:321 -#. translators: accessibility text -msgid "Select year" +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:129 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:315 +msgid "Year" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:221 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:218 msgid "January" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:222 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:219 msgid "February" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:223 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:220 msgid "March" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:224 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:221 msgid "April" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:225 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:222 msgid "May" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:226 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:223 msgid "June" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:227 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:224 msgid "July" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:228 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:225 msgid "August" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:229 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:226 msgid "September" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:230 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:227 msgid "October" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:231 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:228 msgid "November" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:232 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:229 msgid "December" msgstr "" +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:460 #: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:466 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:472 msgid "Date format" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:488 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:482 msgid "Time elapsed" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:488 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:482 msgid "<code>4 years ago</code>, <code>4 years from now</code>" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:495 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:489 msgid "Custom:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:497 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:491 msgid "Enter custom time format" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:498 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:492 msgid "Example:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:500 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:494 msgid "Documentation on date and time formatting" msgstr "" +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:503 #: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:509 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:515 msgid "Range" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:522 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:516 msgid "Absolute" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:527 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:543 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:521 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:537 msgid "Start:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:529 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:558 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:523 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:552 msgid "End:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:538 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:532 msgid "Relative" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:549 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:563 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:543 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:557 msgid "Select range" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:552 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:566 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:546 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:560 msgid "years ago" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:554 -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:568 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:548 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:562 msgid "years from now" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:630 +#: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:624 msgid "F j, Y" msgstr "" @@ -7923,6 +8624,11 @@ msgstr "" msgid "Number field" msgstr "" +#: bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php:103 +#. translators: accessibility text +msgid "Phone Number" +msgstr "" + #: bp-xprofile/classes/class-bp-xprofile-field-type-textbox.php:103 #. translators: accessibility text msgid "Textbox" @@ -7966,115 +8672,115 @@ msgstr "" msgid "Add Another Option" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:759 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1399 +#: bp-xprofile/classes/class-bp-xprofile-field.php:784 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1446 msgid "Users with no member type" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:762 +#: bp-xprofile/classes/class-bp-xprofile-field.php:787 msgid "(Member types: %s)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:764 +#: bp-xprofile/classes/class-bp-xprofile-field.php:789 msgid "(Unavailable to all members)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1059 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1084 msgid "Profile fields must have a name." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1065 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1090 msgid "Profile field requirement is missing." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1071 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1096 msgid "Profile field type is missing." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1077 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1102 msgid "The profile field type %s is not registered." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1092 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1117 msgid "These field options are invalid." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1103 -#: bp-xprofile/classes/class-bp-xprofile-field.php:1109 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1128 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1134 msgid "%s require at least one option." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1165 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1201 msgid "Edit Field" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1281 -#: bp-xprofile/classes/class-bp-xprofile-group.php:792 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1328 +#: bp-xprofile/classes/class-bp-xprofile-group.php:807 msgid "Submit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1351 -#: bp-xprofile/classes/class-bp-xprofile-group.php:759 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1398 +#: bp-xprofile/classes/class-bp-xprofile-group.php:774 #. translators: accessibility text msgid "Add description" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1382 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1429 msgid "Member Types" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1384 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1431 msgid "This field should be available to:" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1404 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1451 msgid "Unavailable to all members." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1448 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1495 msgid "Allow members to override" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1452 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1499 msgid "Enforce field visibility" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1477 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1524 msgid "Requirement" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1480 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1527 msgid "Not Required" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1481 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1528 msgid "Required" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1500 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1547 msgid "Autolink" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1502 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1549 msgid "" "On user profiles, link this field to a search of the Members directory, " "using the field value as a search term." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1507 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1554 #. translators: accessibility text msgid "Autolink status for this field" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1510 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1557 msgid "Enabled" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1511 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1558 msgid "Disabled" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1535 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1582 msgid "Type" msgstr "" @@ -8082,15 +8788,15 @@ msgstr "" msgid "Please make sure you give the group a name." msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-group.php:727 +#: bp-xprofile/classes/class-bp-xprofile-group.php:738 msgid "Edit Field Group" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-group.php:750 +#: bp-xprofile/classes/class-bp-xprofile-group.php:765 msgid "Field Group Name (required)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-group.php:755 +#: bp-xprofile/classes/class-bp-xprofile-group.php:770 msgid "Field Group Description" msgstr "" @@ -8098,10 +8804,18 @@ msgstr "" msgid "Delete Profile Photo" msgstr "" +#: bp-xprofile/screens/edit.php:133 +msgid "Changes saved." +msgstr "" + #: class-buddypress.php:151 class-buddypress.php:158 msgid "Cheatin’ huh?" msgstr "" +#: class-buddypress.php:748 +msgid "BuddyPress Nouveau" +msgstr "" + #. Author URI of the plugin/theme msgid "https://buddypress.org/" msgstr "" @@ -8156,7 +8870,7 @@ msgctxt "Activity items per page (screen options)" msgid "Activity" msgstr "" -#: bp-activity/bp-activity-admin.php:1013 +#: bp-activity/bp-activity-admin.php:1012 msgctxt "Admin SWA page" msgid "Activity" msgstr "" @@ -8176,93 +8890,93 @@ msgctxt "Post Type generic comments activity front filter" msgid "Item comments" msgstr "" -#: bp-activity/bp-activity-functions.php:1592 +#: bp-activity/bp-activity-functions.php:1598 msgctxt "Activity Custom Post Type post action" msgid "%1$s wrote a new <a href=\"%2$s\">item</a>, on the site %3$s" msgstr "" -#: bp-activity/bp-activity-functions.php:1598 +#: bp-activity/bp-activity-functions.php:1604 msgctxt "Activity Custom Post Type post action" msgid "%1$s wrote a new <a href=\"%2$s\">item</a>" msgstr "" -#: bp-activity/bp-activity-functions.php:1643 +#: bp-activity/bp-activity-functions.php:1649 msgctxt "Activity Custom Post Type comment action" msgid "%1$s commented on the <a href=\"%2$s\">item</a>, on the site %3$s" msgstr "" -#: bp-activity/bp-activity-functions.php:1649 +#: bp-activity/bp-activity-functions.php:1655 msgctxt "Activity Custom Post Type post comment action" msgid "%1$s commented on the <a href=\"%2$s\">item</a>" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:170 +#: bp-activity/classes/class-bp-activity-component.php:224 msgctxt "Profile activity screen nav" msgid "Activity" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:180 +#: bp-activity/classes/class-bp-activity-component.php:234 msgctxt "Profile activity screen sub nav" msgid "Personal" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:191 +#: bp-activity/classes/class-bp-activity-component.php:245 msgctxt "Profile activity screen sub nav" msgid "Mentions" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:204 +#: bp-activity/classes/class-bp-activity-component.php:258 msgctxt "Profile activity screen sub nav" msgid "Favorites" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:217 +#: bp-activity/classes/class-bp-activity-component.php:271 msgctxt "Profile activity screen sub nav" msgid "Friends" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:230 +#: bp-activity/classes/class-bp-activity-component.php:284 msgctxt "Profile activity screen sub nav" msgid "Groups" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:268 +#: bp-activity/classes/class-bp-activity-component.php:322 #. translators: %s: Unread mention count for the current user msgctxt "Toolbar Mention logged in user" msgid "Mentions %s" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:272 +#: bp-activity/classes/class-bp-activity-component.php:326 msgctxt "Toolbar Mention logged in user" msgid "Mentions" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:280 +#: bp-activity/classes/class-bp-activity-component.php:334 msgctxt "My Account Activity sub nav" msgid "Activity" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:288 +#: bp-activity/classes/class-bp-activity-component.php:342 msgctxt "My Account Activity sub nav" msgid "Personal" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:309 +#: bp-activity/classes/class-bp-activity-component.php:363 msgctxt "My Account Activity sub nav" msgid "Favorites" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:320 +#: bp-activity/classes/class-bp-activity-component.php:374 msgctxt "My Account Activity sub nav" msgid "Friends" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:331 +#: bp-activity/classes/class-bp-activity-component.php:385 msgctxt "My Account Activity sub nav" msgid "Groups" msgstr "" -#: bp-activity/classes/class-bp-activity-component.php:354 +#: bp-activity/classes/class-bp-activity-component.php:408 msgctxt "Page and <title>" msgid "My Activity" msgstr "" @@ -8297,7 +9011,7 @@ msgctxt "Activity pagination next text" msgid "→" msgstr "" -#: bp-activity/classes/class-bp-akismet.php:608 +#: bp-activity/classes/class-bp-akismet.php:621 msgctxt "x hours ago - akismet cleared this item" msgid "%1$s — %2$s" msgstr "" @@ -8347,7 +9061,7 @@ msgctxt "Blog pagination next text" msgid "→" msgstr "" -#: bp-core/admin/bp-core-admin-components.php:158 +#: 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>" @@ -8369,244 +9083,245 @@ msgctxt "buddypress tools intro" msgid "Use the %s to repair these relationships." msgstr "" -#: bp-core/bp-core-customizer-email.php:33 bp-core/bp-core-filters.php:1134 +#: bp-core/bp-core-customizer-email.php:27 bp-core/bp-core-filters.php:1133 msgctxt "screen heading" msgid "BuddyPress Emails" msgstr "" -#: bp-core/classes/class-bp-admin.php:343 -#: bp-core/classes/class-bp-admin.php:344 +#: bp-core/classes/class-bp-admin.php:336 +#: bp-core/classes/class-bp-admin.php:337 msgctxt "screen heading" msgid "Emails" msgstr "" -#: bp-core/bp-core-customizer-email.php:138 +#: bp-core/bp-core-customizer-email.php:132 msgctxt "email" msgid "Header" msgstr "" -#: bp-core/bp-core-customizer-email.php:143 +#: bp-core/bp-core-customizer-email.php:137 msgctxt "email" msgid "Body" msgstr "" -#: bp-core/bp-core-customizer-email.php:148 +#: bp-core/bp-core-customizer-email.php:142 msgctxt "email" msgid "Footer" msgstr "" -#: bp-core/bp-core-functions.php:3264 +#: bp-core/bp-core-functions.php:3253 #. translators: email disclaimer, e.g. "© 2016 Site Name". msgctxt "email" msgid "© %s %s" msgstr "" -#: bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php:202 +#: bp-templates/bp-legacy/buddypress/assets/emails/single-bp-email.php:220 +#: bp-templates/bp-nouveau/buddypress/assets/emails/single-bp-email.php:220 msgctxt "email" msgid "unsubscribe" msgstr "" -#: bp-core/bp-core-filters.php:780 +#: bp-core/bp-core-filters.php:777 msgctxt "customizer menu type label" msgid "Custom Link" msgstr "" -#: bp-core/bp-core-filters.php:801 +#: bp-core/bp-core-filters.php:798 msgctxt "customizer menu section title" msgid "BuddyPress (logged-in)" msgstr "" -#: bp-core/bp-core-filters.php:806 +#: bp-core/bp-core-filters.php:803 msgctxt "customizer menu section title" msgid "BuddyPress (logged-out)" msgstr "" -#: bp-core/bp-core-functions.php:738 +#: bp-core/bp-core-functions.php:753 msgctxt "Page title for the Activity directory." msgid "Activity" msgstr "" -#: bp-core/bp-core-functions.php:739 +#: bp-core/bp-core-functions.php:754 msgctxt "Page title for the Groups directory." msgid "Groups" msgstr "" -#: bp-core/bp-core-functions.php:740 +#: bp-core/bp-core-functions.php:755 msgctxt "Page title for the Sites directory." msgid "Sites" msgstr "" -#: bp-core/bp-core-functions.php:741 +#: bp-core/bp-core-functions.php:756 msgctxt "Page title for the Members directory." msgid "Members" msgstr "" -#: bp-core/bp-core-functions.php:742 +#: bp-core/bp-core-functions.php:757 msgctxt "Page title for the user activation screen." msgid "Activate" msgstr "" -#: bp-core/bp-core-functions.php:743 +#: bp-core/bp-core-functions.php:758 msgctxt "Page title for the user registration screen." msgid "Register" msgstr "" -#: bp-core/bp-core-functions.php:1279 +#: bp-core/bp-core-functions.php:1298 msgctxt "Separator in time since" msgid "," msgstr "" -#: bp-core/bp-core-functions.php:2874 +#: bp-core/bp-core-functions.php:2860 msgctxt "email post type label" msgid "Add New" msgstr "" -#: bp-core/bp-core-functions.php:2875 +#: bp-core/bp-core-functions.php:2861 msgctxt "email post type label" msgid "Add a New Email" msgstr "" -#: bp-core/bp-core-functions.php:2876 +#: bp-core/bp-core-functions.php:2862 msgctxt "email post type label" msgid "All Emails" msgstr "" -#: bp-core/bp-core-functions.php:2877 +#: bp-core/bp-core-functions.php:2863 msgctxt "email post type label" msgid "Edit Email" msgstr "" -#: bp-core/bp-core-functions.php:2878 +#: bp-core/bp-core-functions.php:2864 msgctxt "email post type label" msgid "Filter email list" msgstr "" -#: bp-core/bp-core-functions.php:2879 +#: bp-core/bp-core-functions.php:2865 msgctxt "email post type label" msgid "Email list" msgstr "" -#: bp-core/bp-core-functions.php:2880 +#: bp-core/bp-core-functions.php:2866 msgctxt "email post type label" msgid "Email list navigation" msgstr "" -#: bp-core/bp-core-functions.php:2882 +#: bp-core/bp-core-functions.php:2868 msgctxt "email post type label" msgid "BuddyPress Emails" msgstr "" -#: bp-core/bp-core-functions.php:2883 +#: bp-core/bp-core-functions.php:2869 msgctxt "email post type label" msgid "New Email" msgstr "" -#: bp-core/bp-core-functions.php:2884 +#: bp-core/bp-core-functions.php:2870 msgctxt "email post type label" msgid "No emails found" msgstr "" -#: bp-core/bp-core-functions.php:2885 +#: bp-core/bp-core-functions.php:2871 msgctxt "email post type label" msgid "No emails found in Trash" msgstr "" -#: bp-core/bp-core-functions.php:2886 +#: bp-core/bp-core-functions.php:2872 msgctxt "email post type label" msgid "Search Emails" msgstr "" -#: bp-core/bp-core-functions.php:2888 +#: bp-core/bp-core-functions.php:2874 msgctxt "email post type label" msgid "Uploaded to this email" msgstr "" -#: bp-core/bp-core-functions.php:2889 +#: bp-core/bp-core-functions.php:2875 msgctxt "email post type label" msgid "View Email" msgstr "" -#: bp-core/bp-core-functions.php:2881 +#: bp-core/bp-core-functions.php:2867 msgctxt "email post type name" msgid "Emails" msgstr "" -#: bp-core/bp-core-functions.php:2887 +#: bp-core/bp-core-functions.php:2873 msgctxt "email post type singular name" msgid "Email" msgstr "" -#: bp-core/bp-core-functions.php:2965 +#: bp-core/bp-core-functions.php:2951 msgctxt "email type taxonomy label" msgid "New Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2966 +#: bp-core/bp-core-functions.php:2952 msgctxt "email type taxonomy label" msgid "All Email Situations" msgstr "" -#: bp-core/bp-core-functions.php:2967 +#: bp-core/bp-core-functions.php:2953 msgctxt "email type taxonomy label" msgid "Edit Email Situations" msgstr "" -#: bp-core/bp-core-functions.php:2968 +#: bp-core/bp-core-functions.php:2954 msgctxt "email type taxonomy label" msgid "Email list" msgstr "" -#: bp-core/bp-core-functions.php:2969 +#: bp-core/bp-core-functions.php:2955 msgctxt "email type taxonomy label" msgid "Email list navigation" msgstr "" -#: bp-core/bp-core-functions.php:2970 +#: bp-core/bp-core-functions.php:2956 msgctxt "email type taxonomy label" msgid "Situations" msgstr "" -#: bp-core/bp-core-functions.php:2972 +#: bp-core/bp-core-functions.php:2958 msgctxt "email type taxonomy label" msgid "New email situation name" msgstr "" -#: bp-core/bp-core-functions.php:2973 +#: bp-core/bp-core-functions.php:2959 msgctxt "email type taxonomy label" msgid "No email situations found." msgstr "" -#: bp-core/bp-core-functions.php:2974 +#: bp-core/bp-core-functions.php:2960 msgctxt "email type taxonomy label" msgid "No email situations" msgstr "" -#: bp-core/bp-core-functions.php:2975 +#: bp-core/bp-core-functions.php:2961 msgctxt "email type taxonomy label" msgid "Popular Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2976 +#: bp-core/bp-core-functions.php:2962 msgctxt "email type taxonomy label" msgid "Search Emails" msgstr "" -#: bp-core/bp-core-functions.php:2978 +#: bp-core/bp-core-functions.php:2964 msgctxt "email type taxonomy label" msgid "Update Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2979 +#: bp-core/bp-core-functions.php:2965 msgctxt "email type taxonomy label" msgid "View Email Situation" msgstr "" -#: bp-core/bp-core-functions.php:2971 +#: bp-core/bp-core-functions.php:2957 msgctxt "email type taxonomy name" msgid "Situation" msgstr "" -#: bp-core/bp-core-functions.php:2977 +#: bp-core/bp-core-functions.php:2963 msgctxt "email type taxonomy singular name" msgid "Email" msgstr "" @@ -8641,22 +9356,17 @@ msgctxt "search form" msgid "Blogs" msgstr "" -#: bp-core/bp-core-template.php:554 -msgctxt "search form" -msgid "Forums" -msgstr "" - -#: bp-core/bp-core-template.php:557 +#: bp-core/bp-core-template.php:553 msgctxt "search form" msgid "Posts" msgstr "" -#: bp-core/bp-core-template.php:560 +#: bp-core/bp-core-template.php:556 msgctxt "search form" msgid "Search these:" msgstr "" -#: bp-core/bp-core-template.php:3186 +#: bp-core/bp-core-template.php:3111 msgctxt "component directory title" msgid "Directory" msgstr "" @@ -8681,68 +9391,29 @@ msgctxt "component directory title" msgid "Members" msgstr "" -#: bp-core/bp-core-template.php:3841 +#: bp-core/bp-core-template.php:3751 msgctxt "recipient salutation" msgid "Hi %s," msgstr "" -#: bp-core/classes/class-bp-admin.php:353 -#: bp-core/classes/class-bp-admin.php:354 +#: bp-core/classes/class-bp-admin.php:346 +#: bp-core/classes/class-bp-admin.php:347 msgctxt "email menu label" msgid "Customize" msgstr "" -#: bp-core/classes/class-bp-admin.php:407 +#: bp-core/classes/class-bp-admin.php:399 msgctxt "BuddyPress setting tab" msgid "Profile Settings" msgstr "" -#: bp-core/classes/class-bp-admin.php:693 -msgctxt "About screen, website links" -msgid "Learn more:" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:693 -msgctxt "About screen, link to project blog" -msgid "News" +#: bp-core/classes/class-bp-admin.php:477 +#: bp-core/classes/class-bp-admin.php:504 +msgctxt "Colloquial alternative to \"learn about BuddyPress\"" +msgid "Hello, BuddyPress!" msgstr "" -#: bp-core/classes/class-bp-admin.php:693 -msgctxt "About screen, link to support site" -msgid "Support" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:693 -msgctxt "About screen, link to documentation" -msgid "Documentation" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:693 -msgctxt "About screen, link to development blog" -msgid "Development Blog" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:695 -msgctxt "official Twitter accounts:" -msgid "Twitter:" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:695 -msgctxt "@buddypress twitter account name" -msgid "BuddyPress" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:695 -msgctxt "@bptrac twitter account name" -msgid "Trac" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:695 -msgctxt "@buddypressdev twitter account name" -msgid "Development" -msgstr "" - -#: bp-core/classes/class-bp-admin.php:958 +#: bp-core/classes/class-bp-admin.php:971 msgctxt "Email post type" msgid "Situations" msgstr "" @@ -8777,37 +9448,17 @@ msgctxt "email post type description" msgid "BuddyPress emails" msgstr "" -#: bp-forums/bp-forums-template.php:358 bp-forums/bp-forums-template.php:658 -msgctxt "Forum topic pagination previous text" -msgid "←" -msgstr "" - -#: bp-forums/bp-forums-template.php:359 bp-forums/bp-forums-template.php:659 -msgctxt "Forum topic pagination next text" -msgid "→" -msgstr "" - -#: bp-forums/bp-forums-template.php:2280 -msgctxt "Forum thread pagination previous text" -msgid "←" -msgstr "" - -#: bp-forums/bp-forums-template.php:2281 -msgctxt "Forum thread pagination next text" -msgid "→" -msgstr "" - -#: bp-friends/bp-friends-screens.php:115 +#: bp-friends/bp-friends-notifications.php:251 msgctxt "Friend settings on notification settings page" msgid "Friends" msgstr "" -#: bp-friends/bp-friends-screens.php:124 +#: bp-friends/bp-friends-notifications.php:260 msgctxt "Friend settings on notification settings page" msgid "A member sends you a friendship request" msgstr "" -#: bp-friends/bp-friends-screens.php:136 +#: bp-friends/bp-friends-notifications.php:272 msgctxt "Friend settings on notification settings page" msgid "A member accepts your friendship request" msgstr "" @@ -8817,39 +9468,39 @@ msgctxt "Friends screen page <title>" msgid "Friend Connections" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:164 +#: bp-friends/classes/class-bp-friends-component.php:194 msgctxt "Friends screen sub nav" msgid "Friendships" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:174 +#: bp-friends/classes/class-bp-friends-component.php:204 msgctxt "Friends screen sub nav" msgid "Requests" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:209 +#: bp-friends/classes/class-bp-friends-component.php:239 #. translators: %s: Pending friend request count for the current user msgctxt "My Account Friends menu" msgid "Friends %s" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:218 +#: bp-friends/classes/class-bp-friends-component.php:248 msgctxt "My Account Friends menu" msgid "Friends" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:214 +#: bp-friends/classes/class-bp-friends-component.php:244 #. translators: %s: Pending friend request count for the current user msgctxt "My Account Friends menu sub nav" msgid "Pending Requests %s" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:219 +#: bp-friends/classes/class-bp-friends-component.php:249 msgctxt "My Account Friends menu sub nav" msgid "No Pending Requests" msgstr "" -#: bp-friends/classes/class-bp-friends-component.php:234 +#: bp-friends/classes/class-bp-friends-component.php:264 msgctxt "My Account Friends menu sub nav" msgid "Friendships" msgstr "" @@ -8894,22 +9545,22 @@ msgctxt "Groups per page (screen options)" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-admin.php:918 +#: bp-groups/bp-groups-admin.php:948 msgctxt "Group member user_id in group admin" msgid "ID" msgstr "" -#: bp-groups/bp-groups-admin.php:919 +#: bp-groups/bp-groups-admin.php:949 msgctxt "Group member name in group admin" msgid "Name" msgstr "" -#: bp-groups/bp-groups-admin.php:920 +#: bp-groups/bp-groups-admin.php:950 msgctxt "Group member role in group admin" msgid "Group Role" msgstr "" -#: bp-groups/bp-groups-admin.php:1173 +#: bp-groups/bp-groups-admin.php:1203 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" @@ -8941,32 +9592,32 @@ msgctxt "Group update email text" msgid "* Permalink changed from \"%s\" to \"%s\"." msgstr "" -#: bp-groups/bp-groups-screens.php:1478 +#: bp-groups/bp-groups-notifications.php:1084 msgctxt "Group settings on notification settings page" msgid "Groups" msgstr "" -#: bp-groups/bp-groups-screens.php:1487 +#: bp-groups/bp-groups-notifications.php:1093 msgctxt "group settings on notification settings page" msgid "A member invites you to join a group" msgstr "" -#: bp-groups/bp-groups-screens.php:1499 +#: bp-groups/bp-groups-notifications.php:1105 msgctxt "group settings on notification settings page" msgid "Group information is updated" msgstr "" -#: bp-groups/bp-groups-screens.php:1511 +#: bp-groups/bp-groups-notifications.php:1117 msgctxt "group settings on notification settings page" msgid "You are promoted to a group administrator or moderator" msgstr "" -#: bp-groups/bp-groups-screens.php:1523 +#: bp-groups/bp-groups-notifications.php:1129 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-screens.php:1535 +#: bp-groups/bp-groups-notifications.php:1141 msgctxt "group settings on notification settings page" msgid "Your request to join a group has been approved or denied" msgstr "" @@ -8981,115 +9632,133 @@ msgctxt "Group screen page <title>" msgid "User Groups" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:189 +#: bp-groups/classes/class-bp-groups-component.php:259 msgctxt "Component directory search" msgid "Search Groups..." msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:319 +#: bp-groups/classes/class-bp-groups-component.php:389 msgctxt "Group screen nav" msgid "Details" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:323 +#: bp-groups/classes/class-bp-groups-component.php:393 msgctxt "Group screen nav" msgid "Settings" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:332 +#: bp-groups/classes/class-bp-groups-component.php:402 msgctxt "Group screen nav" msgid "Photo" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:339 +#: bp-groups/classes/class-bp-groups-component.php:409 msgctxt "Group screen nav" msgid "Cover Image" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:347 +#: bp-groups/classes/class-bp-groups-component.php:417 msgctxt "Group screen nav" msgid "Invites" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:555 +#: bp-groups/classes/class-bp-groups-component.php:620 msgctxt "Group screen nav" msgid "Request Membership" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:461 +#: bp-groups/classes/class-bp-groups-component.php:531 #. translators: %s: Group count for the current user msgctxt "Group screen nav with counter" msgid "Groups %s" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:469 +#: bp-groups/classes/class-bp-groups-component.php:539 msgctxt "Group screen nav without counter" msgid "Groups" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:535 +#: bp-groups/classes/class-bp-groups-component.php:605 +#: bp-templates/bp-nouveau/includes/groups/classes.php:236 msgctxt "Group screen navigation title" msgid "Home" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:567 -msgctxt "My Group screen nav" -msgid "Forum" +#: bp-templates/bp-nouveau/includes/groups/classes.php:264 +msgctxt "Group screen navigation title" +msgid "Home (Activity)" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:584 +#: bp-templates/bp-nouveau/includes/groups/classes.php:266 +msgctxt "Group screen navigation title" +msgid "Home (Members)" +msgstr "" + +#: bp-groups/classes/class-bp-groups-component.php:635 +#: bp-templates/bp-nouveau/includes/groups/classes.php:271 msgctxt "My Group screen nav" msgid "Activity" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:600 +#: bp-groups/classes/class-bp-groups-component.php:651 msgctxt "My Group screen nav" msgid "Members %s" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:614 +#: bp-groups/classes/class-bp-groups-component.php:665 msgctxt "My Group screen nav" msgid "Send Invites" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:629 +#: bp-groups/classes/class-bp-groups-component.php:680 +#: bp-templates/bp-nouveau/includes/groups/classes.php:248 msgctxt "My Group screen nav" msgid "Manage" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:742 +#: bp-templates/bp-nouveau/includes/groups/classes.php:242 +msgctxt "My Group screen nav" +msgid "Invite" +msgstr "" + +#: bp-templates/bp-nouveau/includes/groups/classes.php:280 +msgctxt "My Group screen nav" +msgid "Members" +msgstr "" + +#: bp-groups/classes/class-bp-groups-component.php:793 msgctxt "My Account Groups" msgid "Groups" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:743 +#: bp-groups/classes/class-bp-groups-component.php:794 msgctxt "My Account Groups sub nav" msgid "No Pending Invites" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:754 +#: bp-groups/classes/class-bp-groups-component.php:805 #. translators: %s: Group invitation count for the current user msgctxt "My Account Groups sub nav" msgid "Pending Invites %s" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:771 +#: bp-groups/classes/class-bp-groups-component.php:822 msgctxt "My Account Groups sub nav" msgid "Memberships" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:790 +#: bp-groups/classes/class-bp-groups-component.php:841 msgctxt "My Account Groups sub nav" msgid "Create a Group" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:748 +#: bp-groups/classes/class-bp-groups-component.php:799 #. translators: %s: Group invitation count for the current user msgctxt "My Account Groups nav" msgid "Groups %s" msgstr "" -#: bp-groups/classes/class-bp-groups-component.php:811 +#: bp-groups/classes/class-bp-groups-component.php:862 msgctxt "My Groups page <title>" msgid "Memberships" msgstr "" @@ -9179,86 +9848,91 @@ msgctxt "members user-admin edit screen" msgid "Member Type" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:955 -#: bp-members/classes/class-bp-members-admin.php:1931 +#: bp-members/classes/class-bp-members-admin.php:957 +#: bp-members/classes/class-bp-members-admin.php:977 +#: bp-members/classes/class-bp-members-admin.php:1955 +#: bp-members/classes/class-bp-members-admin.php:1976 msgctxt "user" msgid "Add New" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:959 -#: bp-members/classes/class-bp-members-admin.php:1935 +#: bp-members/classes/class-bp-members-admin.php:961 +#: bp-members/classes/class-bp-members-admin.php:981 +#: bp-members/classes/class-bp-members-admin.php:1959 +#: bp-members/classes/class-bp-members-admin.php:1980 msgctxt "user" msgid "Add Existing" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1418 +#: bp-members/classes/class-bp-members-admin.php:1442 msgctxt "signup users" msgid "Pending %s" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1493 +#: bp-members/classes/class-bp-members-admin.php:1517 msgctxt "Pending Accounts per page (screen options)" msgid "Pending Accounts" msgstr "" -#: bp-members/classes/class-bp-members-admin.php:1689 +#: bp-members/classes/class-bp-members-admin.php:1711 msgctxt "signup resent" msgid "%s activation email successfully sent! " msgid_plural "%s activation emails successfully sent! " msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1723 +#: bp-members/classes/class-bp-members-admin.php:1745 msgctxt "signup resent" msgid "%s account successfully activated! " msgid_plural "%s accounts successfully activated! " msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1700 +#: bp-members/classes/class-bp-members-admin.php:1722 msgctxt "signup notsent" msgid "%s activation email was not sent." msgid_plural "%s activation emails were not sent." msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1734 +#: bp-members/classes/class-bp-members-admin.php:1756 msgctxt "signup notsent" msgid "%s account was not activated." msgid_plural "%s accounts were not activated." msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1757 +#: bp-members/classes/class-bp-members-admin.php:1779 msgctxt "signup deleted" msgid "%s sign-up successfully deleted!" msgid_plural "%s sign-ups successfully deleted!" msgstr[0] "" msgstr[1] "" -#: bp-members/classes/class-bp-members-admin.php:1768 +#: bp-members/classes/class-bp-members-admin.php:1790 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:2299 +#: bp-members/classes/class-bp-members-admin.php:2347 msgctxt "Label for the WP users table member type column" msgid "Member Type" msgstr "" -#: bp-members/classes/class-bp-members-component.php:279 +#: bp-members/classes/class-bp-members-component.php:326 msgctxt "Member profile main navigation" msgid "Profile" msgstr "" -#: bp-members/classes/class-bp-members-component.php:295 +#: bp-members/classes/class-bp-members-component.php:342 msgctxt "Member profile view" msgid "View" msgstr "" -#: bp-members/classes/class-bp-members-component.php:309 +#: bp-members/classes/class-bp-members-component.php:356 +#: bp-templates/bp-nouveau/includes/members/functions.php:491 msgctxt "Member Home page" msgid "Home" msgstr "" @@ -9310,55 +9984,94 @@ msgctxt "Message pagination next text" msgid "→" 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 +msgctxt "Notices admin page title" +msgid "Site Notices" +msgstr "" + +#: bp-messages/classes/class-bp-messages-notices-admin.php:102 +msgctxt "Admin Users menu" +msgid "Site Notices" +msgstr "" + +#: bp-xprofile/bp-xprofile-admin.php:28 +msgctxt "Admin Users menu" +msgid "Profile Fields" +msgstr "" + +#: bp-messages/classes/class-bp-messages-notices-list-table.php:78 +msgctxt "Admin Notices column header" +msgid "Subject" +msgstr "" + +#: bp-messages/classes/class-bp-messages-notices-list-table.php:79 +msgctxt "Admin Notices column header" +msgid "Content" +msgstr "" + +#: bp-messages/classes/class-bp-messages-notices-list-table.php:80 +msgctxt "Admin Notices column header" +msgid "Created" +msgstr "" + +#: bp-messages/classes/class-bp-messages-notices-list-table.php:131 +msgctxt "" +"Tag prepended to active site-wide notice titles on WP Admin notices list " +"table" +msgid "Active: %s" +msgstr "" + #: bp-notifications/classes/class-bp-notifications-component.php:28 msgctxt "Page <title>" msgid "Notifications" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:132 +#: bp-notifications/classes/class-bp-notifications-component.php:162 #. translators: %s: Unread notification count for the current user msgctxt "Profile screen nav" msgid "Notifications %s" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:140 +#: bp-notifications/classes/class-bp-notifications-component.php:170 msgctxt "Profile screen nav" msgid "Notifications" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:156 +#: bp-notifications/classes/class-bp-notifications-component.php:186 msgctxt "Notification screen nav" msgid "Unread" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:167 +#: bp-notifications/classes/class-bp-notifications-component.php:197 msgctxt "Notification screen nav" msgid "Read" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:203 +#: bp-notifications/classes/class-bp-notifications-component.php:233 #. translators: %s: Unread notification count for the current user msgctxt "My Account Notification pending" msgid "Notifications %s" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:208 +#: bp-notifications/classes/class-bp-notifications-component.php:238 #. translators: %s: Unread notification count for the current user msgctxt "My Account Notification pending" msgid "Unread %s" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:212 +#: bp-notifications/classes/class-bp-notifications-component.php:242 msgctxt "My Account Notification" msgid "Notifications" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:213 +#: bp-notifications/classes/class-bp-notifications-component.php:243 msgctxt "My Account Notification sub nav" msgid "Unread" msgstr "" -#: bp-notifications/classes/class-bp-notifications-component.php:237 +#: bp-notifications/classes/class-bp-notifications-component.php:267 msgctxt "My Account Notification sub nav" msgid "Read" msgstr "" @@ -9373,87 +10086,328 @@ msgctxt "Notifications pagination next text" msgid "→" msgstr "" -#: bp-templates/bp-legacy/buddypress/activity/index.php:126 +#: bp-templates/bp-legacy/buddypress/activity/index.php:137 msgctxt "Number of new activity mentions" msgid "%s new" msgid_plural "%s new" msgstr[0] "" msgstr[1] "" -#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:24 +#: bp-templates/bp-legacy/buddypress/assets/_attachments/uploader.php:25 msgctxt "Uploader: Drop your file here - or - Select your File" msgid "or" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/register.php:194 -#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:64 +#: bp-templates/bp-legacy/buddypress/groups/single/request-membership.php:45 +#: bp-templates/bp-nouveau/buddypress/groups/single/request-membership.php:30 +msgctxt "button" +msgid "Send Request" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/activity/activity-loop.php:28 +msgctxt "button" +msgid "Load More" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/activity/comment-form.php:29 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:120 +msgctxt "button" +msgid "Cancel" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php:22 +msgctxt "button" +msgid "Capture" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/camera.php:23 +msgctxt "button" +msgid "Save" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/avatars/crop.php:21 +msgctxt "button" +msgid "Crop Image" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php:27 +msgctxt "button" +msgid "Delete My Cover Image" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/cover-images/index.php:34 +msgctxt "button" +msgid "Delete Group Cover Image" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/assets/_attachments/uploader.php:27 +msgctxt "button" +msgid "Select your file" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/activity/form.php:42 +msgctxt "button" +msgid "Remove item" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:86 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:92 +msgctxt "button" +msgid "Invite" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:90 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:99 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:101 +msgctxt "button" +msgid "Cancel invitation" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:121 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:47 +msgctxt "button" +msgid "Send" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:134 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:103 +#: bp-templates/bp-nouveau/buddypress/common/search/search-form.php:19 +#: bp-templates/bp-nouveau/includes/messages/functions.php:149 +msgctxt "button" +msgid "Search" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:126 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:128 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:121 +msgctxt "button" +msgid "Apply" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:349 +msgctxt "button" +msgid "Send Reply" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/notices/template-notices.php:15 +#: bp-templates/bp-nouveau/buddypress/members/single/default-front.php:16 +#: bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php:36 +msgctxt "button" +msgid "Close" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/activate.php:45 +msgctxt "button" +msgid "Activate" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/members/single/parts/profile-visibility.php:25 +msgctxt "button" +msgid "Change" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:342 +msgctxt "button" +msgid "Comment" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:456 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:457 +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:114 +msgctxt "button" +msgid "Delete" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:502 +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:507 +msgctxt "button" +msgid "Spam" +msgstr "" + +#: bp-templates/bp-nouveau/includes/functions.php:1331 +msgctxt "button" +msgid "Post" +msgstr "" + +#: bp-templates/bp-nouveau/includes/members/template-tags.php:289 +msgctxt "button" +msgid "Accept" +msgstr "" + +#: bp-templates/bp-nouveau/includes/members/template-tags.php:305 +msgctxt "button" +msgid "Reject" +msgstr "" + +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:110 +msgctxt "button" +msgid "Mark read" +msgstr "" + +#: bp-templates/bp-nouveau/includes/notifications/template-tags.php:112 +msgctxt "button" +msgid "Mark unread" +msgstr "" + +#: bp-templates/bp-legacy/buddypress/members/register.php:195 +#: bp-templates/bp-legacy/buddypress/members/single/profile/edit.php:65 msgctxt "Change profile field visibility level" msgid "Change" msgstr "" -#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:34 +#: bp-templates/bp-legacy/buddypress/members/single/groups/invites.php:35 msgctxt "Group member count" msgid "%d member" msgid_plural "%d members" msgstr[0] "" msgstr[1] "" -#: bp-xprofile/bp-xprofile-admin.php:28 -msgctxt "xProfile admin page title" -msgid "Profile Fields" +#: bp-templates/bp-nouveau/buddypress/activity/comment-form.php:19 +msgctxt "heading" +msgid "Comment" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/activity/post-form.php:17 +msgctxt "heading" +msgid "Post Update" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:129 +msgctxt "heading" +msgid "Search Members" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:130 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:100 +msgctxt "search placeholder text" +msgid "Search" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:143 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:145 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:81 +msgctxt "link" +msgid "Previous page" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:150 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/invites/index.php:151 +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:88 +msgctxt "link" +msgid "Next page" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:347 +msgctxt "link" +msgid "Comment" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:790 +msgctxt "link" +msgid "Reply" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:804 +#: bp-templates/bp-nouveau/includes/notifications/functions.php:244 +msgctxt "link" +msgid "Delete" +msgstr "" + +#: bp-templates/bp-nouveau/includes/activity/template-tags.php:831 +msgctxt "link" +msgid "Spam" +msgstr "" + +#: bp-templates/bp-nouveau/includes/notifications/functions.php:210 +msgctxt "link" +msgid "Mark Unread" +msgstr "" + +#: bp-templates/bp-nouveau/includes/notifications/functions.php:227 +msgctxt "link" +msgid "Mark Read" +msgstr "" + +#: bp-templates/bp-nouveau/buddypress/common/js-templates/messages/index.php:48 +msgctxt "form reset button" +msgid "Reset" +msgstr "" + +#: bp-templates/bp-nouveau/includes/customizer.php:27 +msgctxt "Customizer Panel" +msgid "BuddyPress Nouveau" +msgstr "" + +#: bp-templates/bp-nouveau/includes/groups/functions.php:301 +#: bp-templates/bp-nouveau/includes/groups/functions.php:307 +#: bp-templates/bp-nouveau/includes/groups/functions.php:327 +#: bp-templates/bp-nouveau/includes/groups/functions.php:338 +msgctxt "Group invitations menu title" +msgid "Invite" +msgstr "" + +#: bp-templates/bp-nouveau/includes/groups/functions.php:414 +#: bp-templates/bp-nouveau/includes/groups/functions.php:442 +msgctxt "Group invitations main menu title" +msgid "Group Invites" +msgstr "" + +#: bp-templates/bp-nouveau/includes/groups/functions.php:845 +msgctxt "Customizer control label" +msgid "Groups" msgstr "" #: bp-xprofile/bp-xprofile-admin.php:28 -msgctxt "Admin Users menu" +msgctxt "xProfile admin page title" msgid "Profile Fields" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:138 +#: bp-xprofile/bp-xprofile-admin.php:147 bp-xprofile/bp-xprofile-admin.php:156 msgctxt "Settings page header" msgid "Profile Fields" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:194 +#: bp-xprofile/bp-xprofile-admin.php:235 msgctxt "Edit Profile Fields Group" msgid "Edit Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:199 +#: bp-xprofile/bp-xprofile-admin.php:240 msgctxt "Delete Profile Fields Group" msgid "Delete Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:274 +#: bp-xprofile/bp-xprofile-admin.php:315 msgctxt "You have no profile fields groups." msgid "You have no groups." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:275 +#: bp-xprofile/bp-xprofile-admin.php:316 msgctxt "Add New Profile Fields Group" msgid "Add New Group" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:368 +#: bp-xprofile/bp-xprofile-admin.php:409 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:371 +#: bp-xprofile/bp-xprofile-admin.php:412 msgctxt "Profile fields group was deleted successfully" msgid "The group was deleted successfully." msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:684 +#: bp-xprofile/bp-xprofile-admin.php:723 msgctxt "Edit field link" msgid "Edit" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:689 +#: bp-xprofile/bp-xprofile-admin.php:728 msgctxt "Delete field link" msgid "Delete" msgstr "" -#: bp-xprofile/bp-xprofile-admin.php:735 +#: bp-xprofile/bp-xprofile-admin.php:774 msgctxt "xprofile field type category" msgid "Other" msgstr "" @@ -9468,6 +10422,7 @@ msgstr "" #: bp-xprofile/classes/class-bp-xprofile-field-type-datebox.php:28 #: bp-xprofile/classes/class-bp-xprofile-field-type-number.php:28 +#: bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php:28 #: bp-xprofile/classes/class-bp-xprofile-field-type-textarea.php:28 #: bp-xprofile/classes/class-bp-xprofile-field-type-textbox.php:28 #: bp-xprofile/classes/class-bp-xprofile-field-type-url.php:28 @@ -9480,92 +10435,92 @@ msgctxt "Component page <title>" msgid "Extended Profiles" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:135 +#: bp-xprofile/classes/class-bp-xprofile-component.php:181 msgctxt "Visibility level setting" msgid "Everyone" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:139 +#: bp-xprofile/classes/class-bp-xprofile-component.php:185 msgctxt "Visibility level setting" msgid "Only Me" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:143 +#: bp-xprofile/classes/class-bp-xprofile-component.php:189 msgctxt "Visibility level setting" msgid "All Members" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:150 +#: bp-xprofile/classes/class-bp-xprofile-component.php:196 msgctxt "Visibility level setting" msgid "My Friends" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:206 +#: bp-xprofile/classes/class-bp-xprofile-component.php:252 msgctxt "Profile header menu" msgid "Profile" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:216 +#: bp-xprofile/classes/class-bp-xprofile-component.php:262 msgctxt "Profile header sub menu" msgid "View" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:226 +#: bp-xprofile/classes/class-bp-xprofile-component.php:272 msgctxt "Profile header sub menu" msgid "Edit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:238 +#: bp-xprofile/classes/class-bp-xprofile-component.php:284 msgctxt "Profile header sub menu" msgid "Change Profile Photo" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:251 +#: bp-xprofile/classes/class-bp-xprofile-component.php:297 msgctxt "Profile header sub menu" msgid "Change Cover Image" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:294 +#: bp-xprofile/classes/class-bp-xprofile-component.php:340 msgctxt "Profile settings sub nav" msgid "Profile Visibility" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:323 +#: bp-xprofile/classes/class-bp-xprofile-component.php:369 msgctxt "My Account Profile" msgid "Profile" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:331 +#: bp-xprofile/classes/class-bp-xprofile-component.php:377 msgctxt "My Account Profile sub nav" msgid "View" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:340 +#: bp-xprofile/classes/class-bp-xprofile-component.php:386 msgctxt "My Account Profile sub nav" msgid "Edit" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:350 +#: bp-xprofile/classes/class-bp-xprofile-component.php:396 msgctxt "My Account Profile sub nav" msgid "Change Profile Photo" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:360 +#: bp-xprofile/classes/class-bp-xprofile-component.php:406 msgctxt "My Account Profile sub nav" msgid "Change Cover Image" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:390 +#: bp-xprofile/classes/class-bp-xprofile-component.php:436 msgctxt "Page title" msgid "My Profile" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:395 +#: bp-xprofile/classes/class-bp-xprofile-component.php:441 msgctxt "Avatar alt" msgid "Profile picture of %s" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-component.php:440 +#: bp-xprofile/classes/class-bp-xprofile-component.php:486 msgctxt "My Account Settings sub nav" msgid "Profile" msgstr "" @@ -9600,6 +10555,11 @@ msgctxt "xprofile field type" msgid "Drop Down Select Box" msgstr "" +#: bp-xprofile/classes/class-bp-xprofile-field-type-telephone.php:29 +msgctxt "xprofile field type" +msgid "Phone Number" +msgstr "" + #: bp-xprofile/classes/class-bp-xprofile-field-type-textarea.php:29 msgctxt "xprofile field type" msgid "Multi-line Text Area" @@ -9615,12 +10575,12 @@ msgctxt "xprofile field type" msgid "URL" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1341 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1388 msgctxt "XProfile admin edit field" msgid "Name (required)" msgstr "" -#: bp-xprofile/classes/class-bp-xprofile-field.php:1347 +#: bp-xprofile/classes/class-bp-xprofile-field.php:1394 msgctxt "XProfile admin edit field" msgid "Description" msgstr "" diff --git a/wp-content/plugins/buddypress/class-buddypress.php b/wp-content/plugins/buddypress/class-buddypress.php index 9b1530f91790b4e61344928948889942c0c2b177..29dba191c271136025507b2458f373e4210f583c 100644 --- a/wp-content/plugins/buddypress/class-buddypress.php +++ b/wp-content/plugins/buddypress/class-buddypress.php @@ -235,6 +235,16 @@ class BuddyPress { define( 'BP_PLUGIN_URL', plugin_dir_url( __FILE__ ) ); } + // Legacy forum constant - supported for compatibility with bbPress 2. + if ( ! defined( 'BP_FORUMS_PARENT_FORUM_ID' ) ) { + define( 'BP_FORUMS_PARENT_FORUM_ID', 1 ); + } + + // Legacy forum constant - supported for compatibility with bbPress 2. + if ( ! defined( 'BP_FORUMS_SLUG' ) ) { + define( 'BP_FORUMS_SLUG', 'forums' ); + } + // Only applicable to those running trunk if ( ! defined( 'BP_SOURCE_SUBDIRECTORY' ) ) { define( 'BP_SOURCE_SUBDIRECTORY', '' ); @@ -293,7 +303,7 @@ class BuddyPress { /** Versions **********************************************************/ - $this->version = '2.9.2'; + $this->version = '3.1.0'; $this->db_version = 11105; /** Loading ***********************************************************/ @@ -389,7 +399,23 @@ class BuddyPress { $this->displayed_user = new stdClass(); /** Post types and taxonomies *****************************************/ + + /** + * Filters the post type slug for the email component. + * + * since 2.5.0 + * + * @param string $value Email post type slug. + */ $this->email_post_type = apply_filters( 'bp_email_post_type', 'bp-email' ); + + /** + * Filters the taxonomy slug for the email type component. + * + * @since 2.5.0 + * + * @param string $value Email type taxonomy slug. + */ $this->email_taxonomy_type = apply_filters( 'bp_email_tax_type', 'bp-email-type' ); } @@ -479,6 +505,11 @@ class BuddyPress { require( $this->plugin_dir . 'bp-core/deprecated/2.7.php' ); require( $this->plugin_dir . 'bp-core/deprecated/2.8.php' ); require( $this->plugin_dir . 'bp-core/deprecated/2.9.php' ); + require( $this->plugin_dir . 'bp-core/deprecated/3.0.php' ); + } + + if ( defined( 'WP_CLI' ) && file_exists( $this->plugin_dir . 'cli/wp-cli-bp.php' ) ) { + require( $this->plugin_dir . 'cli/wp-cli-bp.php' ); } } @@ -712,6 +743,14 @@ class BuddyPress { 'url' => trailingslashit( $this->themes_url . '/bp-legacy' ) ) ); + bp_register_theme_package( array( + 'id' => 'nouveau', + 'name' => __( 'BuddyPress Nouveau', 'buddypress' ), + 'version' => bp_get_version(), + 'dir' => trailingslashit( $this->themes_dir . '/bp-nouveau' ), + 'url' => trailingslashit( $this->themes_url . '/bp-nouveau' ) + ) ); + // Register the basic theme stack. This is really dope. bp_register_template_stack( 'get_stylesheet_directory', 10 ); bp_register_template_stack( 'get_template_directory', 12 ); diff --git a/wp-content/plugins/buddypress/cli/.distignore b/wp-content/plugins/buddypress/cli/.distignore new file mode 100644 index 0000000000000000000000000000000000000000..b964b40c7f3908227259119153590e69c95d8049 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/.distignore @@ -0,0 +1,13 @@ +.DS_Store +.git +.gitignore +.gitlab-ci.yml +.editorconfig +.travis.yml +behat.yml +circle.yml +bin/ +features/ +utils/ +*.zip +*.tar.gz diff --git a/wp-content/plugins/buddypress/cli/.editorconfig b/wp-content/plugins/buddypress/cli/.editorconfig new file mode 100644 index 0000000000000000000000000000000000000000..fa483b1bb5b11b540a17da6a0b2eacd108a95d0a --- /dev/null +++ b/wp-content/plugins/buddypress/cli/.editorconfig @@ -0,0 +1,25 @@ +# This file is for unifying the coding style for different editors and IDEs +# editorconfig.org + +# WordPress Coding Standards +# https://make.wordpress.org/core/handbook/coding-standards/ + +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = tab + +[{.jshintrc,*.json,*.yml,*.feature}] +indent_style = space +indent_size = 2 + +[{*.txt,wp-config-sample.php}] +end_of_line = crlf + +[composer.json] +indent_style = space +indent_size = 4 diff --git a/wp-content/plugins/buddypress/cli/.gitignore b/wp-content/plugins/buddypress/cli/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..54f24c800eaebffb3186bdd36aef7d735edfd331 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/.gitignore @@ -0,0 +1,6 @@ +.DS_Store +wp-cli.local.yml +node_modules/ +vendor/ +*.zip +*.tar.gz diff --git a/wp-content/plugins/buddypress/cli/.travis.yml b/wp-content/plugins/buddypress/cli/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..e1c41e2446b8dd238af9de8896c26841b2716853 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/.travis.yml @@ -0,0 +1,58 @@ +sudo: false +dist: trusty + +language: php + +notifications: + email: + on_success: never + on_failure: change + +branches: + only: + - master + +cache: + directories: + - $HOME/.composer/cache + +env: + global: + - PATH="$TRAVIS_BUILD_DIR/vendor/bin:$PATH" + - WP_CLI_BIN_DIR="$TRAVIS_BUILD_DIR/vendor/bin" + +matrix: + include: + - php: 7.2 + env: WP_VERSION=latest + - php: 7.1 + env: WP_VERSION=latest + - php: 7.0 + env: WP_VERSION=latest + - php: 5.6 + env: WP_VERSION=latest + - php: 5.6 + env: WP_VERSION=4.4 + - php: 5.6 + env: WP_VERSION=trunk + +before_install: + - | + # Remove Xdebug for a huge performance increase: + if [ -f ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini ]; then + phpenv config-rm xdebug.ini + else + echo "xdebug.ini does not exist" + fi + +install: + - composer install + - bash bin/install-package-tests.sh + - export BP_SRC_DIR=/tmp/bp-src/ + - svn co --ignore-externals https://buddypress.svn.wordpress.org/trunk/src $BP_SRC_DIR + +before_script: + - composer validate + +script: + - bash bin/test.sh diff --git a/wp-content/plugins/buddypress/cli/bin/install-package-tests.sh b/wp-content/plugins/buddypress/cli/bin/install-package-tests.sh new file mode 100644 index 0000000000000000000000000000000000000000..2ff49dd8ddf405167e7cc1cce69f6e7ea7364bd3 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/bin/install-package-tests.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash + +set -ex + +install_db() { + mysql -e 'CREATE DATABASE IF NOT EXISTS wp_cli_test;' -uroot + mysql -e 'GRANT ALL PRIVILEGES ON wp_cli_test.* TO "wp_cli_test"@"localhost" IDENTIFIED BY "password1"' -uroot +} + +install_db diff --git a/wp-content/plugins/buddypress/cli/bin/test.sh b/wp-content/plugins/buddypress/cli/bin/test.sh new file mode 100644 index 0000000000000000000000000000000000000000..3d4b21104047249080dfe5510a9dcc694f948437 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/bin/test.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -ex + +# Run the unit tests, if they exist +if [ -f "phpunit.xml" ] || [ -f "phpunit.xml.dist" ] +then + phpunit +fi + +# Run the functional tests +BEHAT_TAGS=$(php utils/behat-tags.php) +vendor/behat/behat/bin/behat --format progress $BEHAT_TAGS --strict diff --git a/wp-content/plugins/buddypress/cli/component.php b/wp-content/plugins/buddypress/cli/component.php new file mode 100644 index 0000000000000000000000000000000000000000..c1b63ce057823bd522e50baade710999ee899f4f --- /dev/null +++ b/wp-content/plugins/buddypress/cli/component.php @@ -0,0 +1,112 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; +use WP_CLI\CommandWithDBObject; + +/** + * Base component class. + * + * @since 1.0 + */ +abstract class BuddypressCommand extends CommandWithDBObject { + + /** + * 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" ); + } + + /** + * 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 $i User ID, email or login. + * @return WP_User|false + */ + protected function get_user_id_from_identifier( $i ) { + if ( is_numeric( $i ) ) { + $user = get_user_by( 'id', $i ); + } elseif ( is_email( $i ) ) { + $user = get_user_by( 'email', $i ); + } else { + $user = get_user_by( 'login', $i ); + } + + if ( ! $user ) { + WP_CLI::error( sprintf( 'No user found by that username or ID (%s).', $i ) ); + } + + return $user; + } + + /** + * Generate random text + * + * @since 1.1 + */ + protected function generate_random_text() { + return 'Here is some random text'; + } + + /** + * Get field ID. + * + * @since 1.5.0 + * + * @param int $field_id Field ID. + * @return int + */ + 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 ) ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/activity-favorite.php b/wp-content/plugins/buddypress/cli/components/activity-favorite.php new file mode 100644 index 0000000000000000000000000000000000000000..e644ad490aa1b0f9574240ad814e6fe7d0235d99 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/activity-favorite.php @@ -0,0 +1,172 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress activity favorite. + * + * @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. + * + * ## EXAMPLE + * + * $ 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, $assoc_args ) { + $activity_id = $args[0]; + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + $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_id = $args[0]; + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + $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 ) { + $user = $this->get_user_id_from_identifier( $args[0] ); + $favorites = bp_activity_get_user_favorites( $user->ID ); + + if ( ! $favorites ) { + WP_CLI::error( 'No favorite found for this user.' ); + } + + $activities = bp_activity_get_specific( array( + 'activity_ids' => $favorites, + 'per_page' => $assoc_args['count'], + ) ); + + // Sanity check. + if ( empty( $activities['activities'] ) ) { + WP_CLI::error( 'No favorite found for this user.' ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->display_items( $activities['activities'] ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/activity.php b/wp-content/plugins/buddypress/cli/components/activity.php new file mode 100644 index 0000000000000000000000000000000000000000..9d54c55df7771bb8637af5e56b720a85431194ad --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/activity.php @@ -0,0 +1,978 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Activities. + * + * @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', + ); + + /** + * 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. + * --- + * Default: Current time + * --- + * + * [--hide-sitewide=<hide-sitewide>] + * : Whether to hide in sitewide streams. + * --- + * Default: 0 + * --- + * + * [--is-spam=<is-spam>] + * : Whether the item should be marked as spam. + * --- + * Default: 0 + * --- + * + * [--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 --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'] ) { + $group_id = $r['component']; + + 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, + ) ); + + $r['item-id'] = intval( $group_obj->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::line( $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( $_, $assoc_args ) { + $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'] ); // WPCS: XSS ok. + } 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_id = $args[0]; + + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + $activity = bp_activity_get_specific( array( + 'activity_ids' => $activity_id, + '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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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 ) { + $activity_id = $args[0]; + + WP_CLI::confirm( 'Are you sure you want to delete this activity?', $assoc_args ); + + parent::_delete( array( $activity_id ), $assoc_args, function( $activity_id ) { + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + $retval = bp_activity_delete( array( + 'id' => $activity_id, + ) ); + + if ( $retval ) { + 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, $assoc_args ) { + $activity = new \BP_Activity_Activity( $args[0] ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + // 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, $assoc_args ) { + $activity = new \BP_Activity_Activity( $args[0] ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + // 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::line( $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 = new \BP_Activity_Activity( $args[0] ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + $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::line( $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 = $args[0]; + $activity = new \BP_Activity_Activity( $activity_id ); + + if ( empty( $activity->id ) ) { + WP_CLI::error( 'No activity found by that ID.' ); + } + + 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.' ); + } + } + + /** + * Pull up a random active component for use in activity items. + * + * @since 1.1 + * + * @return string + */ + protected function get_random_component() { + $c = buddypress()->active_components; + + // Core components that accept activity items. + $ca = $this->get_components_and_actions(); + + return array_rand( array_flip( array_intersect( array_keys( $c ), array_keys( $ca ) ) ) ); + } + + /** + * 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 ] ) ); + } + + /** + * Get a list of activity components and actions. + * + * @since 1.1 + * + * @return array + */ + protected function get_components_and_actions() { + $actions = array_map( + function( $component ) { + return array_keys( (array) $component ); + }, + (array) bp_activity_get_actions() + ); + + return $actions; + } + + /** + * Generate item details. + * + * @since 1.1 + */ + protected function generate_item_details( $r ) { + global $wpdb, $bp; + + 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', 'buddypress'), 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', 'buddypress' ), 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" ); + + 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', 'buddypress' ), 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" ); + } 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" ); + $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', 'buddypress'), 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', 'buddypress' ), 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', 'buddypress' ), 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', 'buddypress' ), 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', 'buddypress'), 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 ); + $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', 'buddypress' ), 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', 'buddypress' ), $userlink ); + + // new_member. + } elseif ( 'new_member' === $r['type'] ) { + $r['action'] = sprintf( __( '%s became a registered member', 'buddypress' ), $userlink ); + + // updated_profile. + } else { + $r['action'] = sprintf( __( '%s updated their profile', 'buddypress' ), $userlink ); + } + + break; + } + + return $r; + } +} diff --git a/wp-content/plugins/buddypress/cli/components/buddypress.php b/wp-content/plugins/buddypress/cli/components/buddypress.php new file mode 100644 index 0000000000000000000000000000000000000000..9e3255bb939f0a79981fd109cc456c7d440001b3 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/buddypress.php @@ -0,0 +1,48 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * 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 string $command Command. + * @return string + */ + 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/components/component.php b/wp-content/plugins/buddypress/cli/components/component.php new file mode 100644 index 0000000000000000000000000000000000000000..03adfba6ff0f0bcdfc591bea89e7332e587c3fc0 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/component.php @@ -0,0 +1,314 @@ +<?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 | Núcleo do BuddyPress | É o que torna <del>viajar no tempo</del> o | + * | | | | | BuddyPress possível! | + * | 2 | members | Active | Membros da Comunidade | Tudo em uma comunidade BuddyPress gira em | + * | | | | | torno de seus membros. | + * +--------+---------+--------+------------------------------------------+--------------------------+ + * + * @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, $assoc_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( \BP_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, $assoc_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 + * --- + * + * [--status=<status>] + * : Status of the component (all, active, inactive). + * --- + * default: all + * --- + * + * [--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 ) { + $formatter = $this->get_formatter( $assoc_args ); + + // Sanitize type. + $type = $assoc_args['type']; + if ( empty( $type ) || ! in_array( $type, $this->component_types(), true ) ) { + $type = 'all'; + } + + // Sanitize status. + $status = $assoc_args['status']; + if ( empty( $status ) || ! in_array( $status, $this->component_status(), true ) ) { + $status = 'all'; + } + + $components = bp_core_get_components( $type ); + + // Active components. + $active_components = apply_filters( 'bp_active_components', bp_get_option( 'bp-active-components' ) ); + + // Core component is always active. + if ( 'optional' !== $type ) { + $active_components['core'] = $components['core']; + } + + // Inactive components. + $inactive_components = array_diff( array_keys( $components ), array_keys( $active_components ) ); + + $current_components = array(); + switch ( $status ) { + case 'all': + $index = 0; + foreach ( $components as $name => $labels ) { + $index++; + $current_components[] = array( + 'number' => $index, + 'id' => $name, + 'status' => $this->verify_component_status( $name ), + 'title' => $labels['title'], + 'description' => $labels['description'], + ); + } + break; + + case 'active': + $index = 0; + foreach ( array_keys( $active_components ) as $component ) { + $index++; + + $info = $components[ $component ]; + $current_components[] = array( + 'number' => $index, + 'id' => $component, + 'status' => 'Active', + 'title' => $info['title'], + 'description' => $info['description'], + ); + } + break; + + case 'inactive': + $index = 0; + foreach ( $inactive_components as $component ) { + $index++; + + $info = $components[ $component ]; + $current_components[] = array( + 'number' => $index, + 'id' => $component, + 'status' => 'Inactive', + 'title' => $info['title'], + 'description' => $info['description'], + ); + } + break; + } + + // Bail early. + if ( empty( $current_components ) ) { + WP_CLI::error( 'There is no component available.' ); + } + + if ( 'count' === $formatter->format ) { + $formatter->display_items( $current_components ); + } else { + $formatter->display_items( $current_components ); + } + } + + /** + * Does the component exist? + * + * @param string $component Component. + * + * @return bool + */ + protected function component_exists( $component ) { + $keys = array_keys( bp_core_get_components() ); + + return in_array( $component, $keys, true ); + } + + /** + * Verify Component Status. + * + * @since 1.7.0 + * + * @param string $id Component id. + * + * @return string + */ + protected function verify_component_status( $id ) { + $active = 'Active'; + + if ( 'core' === $id ) { + return $active; + } + + return ( bp_is_active( $id ) ) ? $active : 'Inactive'; + } + + /** + * Component Types. + * + * @since 1.6.0 + * + * @return array An array of valid component types. + */ + protected function component_types() { + return array( 'all', 'optional', 'retired', 'required' ); + } + + /** + * Component Status. + * + * @since 1.6.0 + * + * @return array An array of valid component status. + */ + protected function component_status() { + return array( 'all', 'active', 'inactive' ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/email.php b/wp-content/plugins/buddypress/cli/components/email.php new file mode 100644 index 0000000000000000000000000000000000000000..0dacefd12ec40b7b0497e58db4d6a1af20221fbc --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/email.php @@ -0,0 +1,228 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Email Post Types. + * + * @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( "Email type '{$assoc_args['type']}' already exists." ); + } + + if ( ! empty( $args[0] ) ) { + $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; + } + } + + $id = $assoc_args['type']; + + $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'] : '', + ); + + // 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( "Email post created for type '{$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. Defaults to all 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( "Email post for type '{$args[0]}' does not exist." ); + } + + $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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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 ) { + $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/components/friend.php b/wp-content/plugins/buddypress/cli/components/friend.php new file mode 100644 index 0000000000000000000000000000000000000000..399ab1023a6a005ff20dfb76a2fc8e45070d53ff --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/friend.php @@ -0,0 +1,314 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Friends. + * + * @since 1.6.0 + */ +class Friend extends BuddypressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'initiator_user_id', + 'friend_user_id', + 'is_confirmed', + 'is_limited', + ); + + /** + * 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 ) { + // Members. + $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::line( \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, $assoc_args ) { + // Members. + $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 ) { + foreach ( $args as $friendship_id ) { + if ( friends_accept_friendship( (int) $friendship_id ) ) { + WP_CLI::success( 'Friendship successfully accepted.' ); + } else { + WP_CLI::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 ) { + foreach ( $args as $friendship_id ) { + if ( friends_reject_friendship( (int) $friendship_id ) ) { + WP_CLI::success( 'Friendship successfully rejected.' ); + } else { + WP_CLI::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, $assoc_args ) { + // Members. + $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 ) { + $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' ) ); // WPCS: XSS ok. + } 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/components/group-invite.php b/wp-content/plugins/buddypress/cli/components/group-invite.php new file mode 100644 index 0000000000000000000000000000000000000000..bceea56f6e86d76d87203dda5d05bf2ff8c28570 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/group-invite.php @@ -0,0 +1,342 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress group invites. + * + * @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. + * + * [--<field>=<value>] + * : One or more parameters to pass. See groups_invite_user() + * + * [--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=admin --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' => '', + 'group-id' => '', + 'inviter-id' => '', + 'date-modified' => bp_core_current_time(), + 'is-confirmed' => 0, + ) ); + + $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' => $assoc_args['date-modified'], + 'is_confirmed' => $assoc_args['is-confirmed'], + ) ); + + groups_send_invites( $inviter->ID, $group_id ); + + 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 remove --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 ) { + $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->add( 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/components/group-member.php b/wp-content/plugins/buddypress/cli/components/group-member.php new file mode 100644 index 0000000000000000000000000000000000000000..15274b3d7548a9c81fa406ac8af7bbf8fe411c34 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/group-member.php @@ -0,0 +1,358 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress group members. + * + * @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 + * + * ## 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 + * --- + * + * [--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'] ); + + // Sanitize role. + $role = $assoc_args['role']; + if ( empty( $role ) || ! in_array( $role, $this->group_roles(), true ) ) { + $role = 'member'; + } + + $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::line( $user->ID ); + } else { + if ( 'member' !== $role ) { + groups_promote_member( $user->ID, $group_id, $role ); + } + + $success = sprintf( + 'Added user #%d to group #%d as %s.', + $user->ID, + $group_id, + $role + ); + WP_CLI::success( $success ); + } + } + + /** + * 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 ) { + $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'] ) ) { + $fields = array( + 'user_id', + 'user_login', + 'fullname', + 'date_modified', + 'role', + ); + + $assoc_args['fields'] = $fields; + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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 (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'] ); + $role = $assoc_args['role']; + + if ( ! in_array( $role, $this->group_roles(), true ) ) { + WP_CLI::error( 'You need a valid role to promote the member.' ); + } + + $member = new \BP_Groups_Member( $user->ID, $group_id ); + + if ( $member->promote( $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.' ); + } + } + + /** + * Group Roles. + * + * @since 1.5.0 + * + * @return array An array of group roles. + */ + protected function group_roles() { + return array( 'member', 'mod', 'admin' ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/group.php b/wp-content/plugins/buddypress/cli/components/group.php new file mode 100644 index 0000000000000000000000000000000000000000..d77c34d90c1fc1dac4540335c8ee8df221788c4e --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/group.php @@ -0,0 +1,437 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Groups. + * + * @since 1.5.0 + */ +class Group extends BuddypressCommand { + + /** + * Object fields. + * + * @var array + */ + protected $obj_fields = array( + 'id', + 'name', + 'slug', + 'status', + 'date_created', + ); + + /** + * 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. + * --- + * Default: 'Description for group "[name]"' + * --- + * + * [--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 + * --- + * + * [--enable-forum=<enable-forum>] + * : Whether to enable legacy bbPress forums. + * --- + * Default: 0 + * --- + * + * [--date-created=<date-created>] + * : MySQL-formatted date. + * --- + * Default: current 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, + 'status' => 'public', + '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'] ); + } + + // Fallback for group status. + if ( ! in_array( $r['status'], $this->group_status(), true ) ) { + $r['status'] = 'public'; + } + + $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::line( $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. Specify public, private, hidden, or mixed. + * --- + * default: public + * --- + * + * [--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. Defaults to all 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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->display_item( $group_arr ); + } + + /** + * Delete a group. + * + * ## OPTIONS + * + * <group-id>... + * : Identifier(s) for the group(s). 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 ) { + $group_id = $this->get_group_id_from_identifier( $args[0] ); + + WP_CLI::confirm( 'Are you sure you want to delete this group and its metadata?', $assoc_args ); + + parent::_delete( array( $group_id ), $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 ) { + $clean_group_ids = array(); + + foreach ( $args as $group_id ) { + $clean_group_ids[] = $this->get_group_id_from_identifier( $group_id ); + } + + parent::_update( $clean_group_ids, $assoc_args, function( $params ) { + return groups_create_group( $params ); + } ); + } + + /** + * 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: + * - date_created + * - last_activity + * - total_member_count + * - name + * + * [--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>] + * : How many 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 ) { + $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'], + ) ); + + // Groups to list. + $r['per_page'] = $r['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'] ); // WPCS: XSS ok. + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $groups['total'] ); + } else { + $formatter->display_items( $groups['groups'] ); + } + } + + /** + * Group Status + * + * @since 1.5.0 + * + * @return array An array of gruop status. + */ + protected function group_status() { + return array( 'public', 'private', 'hidden' ); + } + + /** + * Gets a randon group status. + * + * @since 1.5.0 + * + * @param string $status Group status. + * @return string Group Status. + */ + protected function random_group_status( $status ) { + $core_status = $this->group_status(); + + if ( 'mixed' === $status ) { + $status = $core_status[ array_rand( $core_status ) ]; + } + + return $status; + } +} diff --git a/wp-content/plugins/buddypress/cli/components/member.php b/wp-content/plugins/buddypress/cli/components/member.php new file mode 100644 index 0000000000000000000000000000000000000000..7aa461be05b53b4b697191ebccfa095095e46cb1 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/member.php @@ -0,0 +1,48 @@ +<?php +namespace Buddypress\CLI\Command; + +if ( ! class_exists( 'User_Command' ) ) { + require_once( WP_CLI_ROOT . '/php/commands/user.php' ); +} + +/** + * Manage BuddyPress Members + * + * @since 1.0.0 + */ +class Member extends BuddypressCommand { + + /** + * Generate BuddyPress members. See documentation for `wp_user_generate`. + * + * This is a kludge workaround for setting last activity. Should fix. + * + * ## OPTIONS + * + * [--count=<number>] + * : How many members to generate. + * --- + * default: 100 + * --- + * + * ## EXAMPLE + * + * $ wp bp member generate --count=50 + */ + public function generate( $args, $assoc_args ) { + add_action( 'user_register', array( __CLASS__, 'update_user_last_activity_random' ) ); + User_Command::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 ) { + $time = date( 'Y-m-d H:i:s', rand( 0, time() ) ); + bp_update_user_last_activity( $user_id, $time ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/message.php b/wp-content/plugins/buddypress/cli/components/message.php new file mode 100644 index 0000000000000000000000000000000000000000..8c762399a73921d6473107acc5a7a4e45cb5fbec --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/message.php @@ -0,0 +1,552 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Messages. + * + * @since 1.6.0 + */ +class Message extends BuddypressCommand { + + /** + * 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. + * --- + * Default: Empty. + * --- + * + * --subject=<subject> + * : Subject of the message. + * + * --content=<content> + * : Content of the message. + * + * [--thread-id=<thread-id>] + * : Thread ID. + * --- + * Default: false + * --- + * + * [--date-sent=<date-sent>] + * : MySQL-formatted date. + * --- + * Default: current 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::line( $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 ) { + $thread_id = $args[0]; + + // Check if we have a valid user. + $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( array( $thread_id ), $assoc_args, function( $thread_id ) { + + // Check if it is a valid thread before deleting. + if ( ! messages_is_valid_thread( $thread_id ) ) { + WP_CLI::error( 'This is not a valid thread ID.' ); + } + + // Actually, delete it. + 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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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 + * --- + * + * [--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( $_, $assoc_args ) { + $formatter = $this->get_formatter( $assoc_args ); + + $r = wp_parse_args( $assoc_args, array( + 'box' => 'sentbox', + 'type' => 'all', + 'search' => '', + 'count' => 10, + ) ); + + $user = $this->get_user_id_from_identifier( $assoc_args['user-id'] ); + $type = ( ! in_array( $r['type'], $this->message_types(), true ) ) ? 'all' : $r['type']; + $box = ( ! in_array( $r['box'], $this->message_boxes(), true ) ) ? 'sentbox' : $r['box']; + + $inbox = new \BP_Messages_Box_Template( array( + 'user_id' => $user->ID, + 'box' => $box, + 'type' => $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' ) ); // WPCS: XSS ok. + } elseif ( 'count' === $formatter->format ) { + $formatter->display_items( $messages ); + } else { + $formatter->display_items( $messages ); + } + } + + /** + * Generate random messages. + * + * ## OPTIONS + * + * [--thread-id=<thread-id>] + * : Thread ID to generate messages against. + * --- + * default: false + * --- + * + * [--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.' ); + } + } + + /** + * Message Types. + * + * @since 1.6.0 + * + * @return array An array of message types. + */ + protected function message_types() { + return array( 'all', 'read', 'unread' ); + } + + /** + * Message Boxes. + * + * @since 1.6.0 + * + * @return array An array of message boxes. + */ + protected function message_boxes() { + return array( 'notices', 'sentbox', 'inbox' ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/signup.php b/wp-content/plugins/buddypress/cli/components/signup.php new file mode 100644 index 0000000000000000000000000000000000000000..9858b8eef6ffb55b3f86c4e0166b2217e6c4b7e7 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/signup.php @@ -0,0 +1,371 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Signups. + * + * @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', + ); + + /** + * 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 before it errors. + 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::line( $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 ) { + $id = $args[0]; + $signup_args = array( + 'number' => 1, + ); + + $signup = $this->get_signup_by_identifier( $id, $assoc_args ); + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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 ) { + $signup_id = $args[0]; + + WP_CLI::confirm( 'Are you sure you want to delete this signup?', $assoc_args ); + + parent::_delete( array( $signup_id ), $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 + * + * [--<field>=<value>] + * : One or more parameters to pass. See \BP_Signup::get() + * + * [--<number>=<number>] + * : How many signups to list. + * --- + * default: 20 + * --- + * + * [--format=<format>] + * : 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( $_, $assoc_args ) { + $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'] ); // WPCS: XSS ok. + } elseif ( 'count' === $formatter->format ) { + WP_CLI::line( $signups['total'] ); + } else { + $formatter->display_items( $signups['signups'] ); + } + } + + /** + * Look up a signup by the provided identifier. + * + * @since 1.5.0 + */ + 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/components/tool.php b/wp-content/plugins/buddypress/cli/components/tool.php new file mode 100644 index 0000000000000000000000000000000000000000..f2c10e4229cd1e1f7fe4c2bc9b5dd375eb35d099 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/tool.php @@ -0,0 +1,64 @@ +<?php +namespace Buddypress\CLI\Command; + +use WP_CLI; + +/** + * Manage BuddyPress Tools. + * + * @since 1.5.0 + */ +class Tool extends BuddypressCommand { + + /** + * Repair. + * + * ## OPTIONS + * + * <type> + * : Name of the repair tool. + * --- + * options: + * - friend-count + * - group-count + * - blog-records + * - count-members + * - last-activity + * --- + * + * ## EXAMPLES + * + * $ wp bp tool repair friend-count + * $ wp bp tool fix friend-count + * Success: Counting the number of friends for each user. Complete! + * + * @alias fix + */ + public function repair( $args, $assoc_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.' ); + } + + $result = $repair(); + + 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: 3.0.0 + */ + public function version() { + WP_CLI::line( 'BuddyPress: ' . bp_get_version() ); + } +} diff --git a/wp-content/plugins/buddypress/cli/components/xprofile-data.php b/wp-content/plugins/buddypress/cli/components/xprofile-data.php new file mode 100644 index 0000000000000000000000000000000000000000..e2b2284d5283abed51e8d168454c1e8b0ba17b08 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/xprofile-data.php @@ -0,0 +1,200 @@ +<?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.' ); + } + + $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 + ); + WP_CLI::success( $success ); + } + + /** + * 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=<multi-format>] + * : The format for 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; + } + + $_field_data = maybe_unserialize( $field_data['field_data'] ); + $_field_data = wp_json_encode( $_field_data ); + + $formatted_data[] = array( + 'field_id' => $field_data['field_id'], + 'field_name' => $field_name, + 'value' => $_field_data, + ); + } + + $format_args = $assoc_args; + $format_args['fields'] = array( + 'field_id', + 'field_name', + 'value', + ); + $formatter = $this->get_formatter( $format_args ); + $formatter->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/components/xprofile-field.php b/wp-content/plugins/buddypress/cli/components/xprofile-field.php new file mode 100644 index 0000000000000000000000000000000000000000..300c162343bc0d958a4ac59fbb802eb4656406fd --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/xprofile-field.php @@ -0,0 +1,217 @@ +<?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( $_, $assoc_args ) { + $args = array_merge( $assoc_args, array( + 'fields' => 'id,name', + 'fetch_fields' => true, + ) ); + + $fields = array(); + $formatter = $this->get_formatter( $assoc_args ); + $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 ); + + $formatter->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 --type=checkbox --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::line( $field_id ); + } else { + $field = new \BP_XProfile_Field( $field_id ); + $success = sprintf( + 'Created XProfile field "%s" (ID %d).', + $field->name, + $field->id + ); + WP_CLI::success( $success ); + } + } + + /** + * 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. + * --- + * Default: All 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 ( ! is_object( $object ) && empty( $object->id ) ) { + 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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->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. + * --- + * default: false + * --- + * + * [--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 ) { + $field_id = $this->get_field_id( $args[0] ); + + WP_CLI::confirm( 'Are you sure you want to delete this field?', $assoc_args ); + + parent::_delete( array( $field_id ), $assoc_args, function( $field_id ) use ( $r ) { + $field = new \BP_XProfile_Field( $field_id ); + $name = $field->name; + $id = $field->id; + $deleted = $field->delete( $r['delete_data'] ); + + if ( $deleted ) { + 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/components/xprofile-group.php b/wp-content/plugins/buddypress/cli/components/xprofile-group.php new file mode 100644 index 0000000000000000000000000000000000000000..251da12b1006e602b200a875777f811dd51e3ab2 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/xprofile-group.php @@ -0,0 +1,174 @@ +<?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: true. + * --- + * + * [--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' => '', + 'can_delete' => true, + ) ); + + $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::line( $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. + * --- + * Default: All 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 ( ! is_object( $object ) && empty( $object->id ) ) { + 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 ); + } + + $formatter = $this->get_formatter( $assoc_args ); + $formatter->display_item( $object_arr ); + } + + /** + * Delete a specific XProfile field group. + * + * ## 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 ) { + $field_group_id = $args[0]; + WP_CLI::confirm( 'Are you sure you want to delete this field group?', $assoc_args ); + + parent::_delete( array( $field_group_id ), $assoc_args, function( $field_group_id ) { + if ( ! is_numeric( $field_group_id ) ) { + WP_CLI::error( 'This is not a valid 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/components/xprofile.php b/wp-content/plugins/buddypress/cli/components/xprofile.php new file mode 100644 index 0000000000000000000000000000000000000000..ac30e7240aa3e465da9acd7854ea604f5341ec7a --- /dev/null +++ b/wp-content/plugins/buddypress/cli/components/xprofile.php @@ -0,0 +1,48 @@ +<?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 { + + /** + * Adds description and subcomands to the DOC. + * + * @param string $command Command. + * @return string + */ + 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/composer.json b/wp-content/plugins/buddypress/cli/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..b937fc8362b30feeab37dcc6afcfdca421afddc5 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/composer.json @@ -0,0 +1,39 @@ +{ + "name": "buddypress/wp-cli-buddypress", + "type": "wp-cli-package", + "description": "WP-CLI Community Package of BuddyPress commands", + "keywords": [ "wp-cli", "buddypress", "community", "wordpress", "bp" ], + "homepage": "https://github.com/buddypress/wp-cli-buddypress", + "license": "MIT", + "authors": [ + { + "name": "The BuddPress Contributors", + "homepage": "https://buddypress.org/" + } + ], + "support": { + "issues": "https://github.com/buddypress/wp-cli-buddypress/issues", + "source": "https://github.com/buddypress/wp-cli-buddypress" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "autoload": { + "files": [ "wp-cli-bp.php" ] + }, + "require": { + "php": ">=5.3", + "wp-cli/wp-cli": ">=0.23.0" + }, + "require-dev": { + "behat/behat": "~2.5" + }, + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "bp" + ] + } +} diff --git a/wp-content/plugins/buddypress/cli/composer.lock b/wp-content/plugins/buddypress/cli/composer.lock new file mode 100644 index 0000000000000000000000000000000000000000..5cbd3dba6c14abd5fa7d4f40dbbc4dd7893353d3 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/composer.lock @@ -0,0 +1,3279 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "49131b60c9111f9e35feb53ac9b9eb9f", + "packages": [ + { + "name": "composer/ca-bundle", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/d2c0a83b7533d6912e8d516756ebd34f893e9169", + "reference": "d2c0a83b7533d6912e8d516756ebd34f893e9169", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "psr/log": "^1.0", + "symfony/process": "^2.5 || ^3.0 || ^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "time": "2018-03-29T19:57:20+00:00" + }, + { + "name": "composer/composer", + "version": "1.6.5", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "reference": "b184a92419cc9a9c4c6a09db555a94d441cb11c9", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/semver": "^1.0", + "composer/spdx-licenses": "^1.2", + "justinrainbow/json-schema": "^3.0 || ^4.0 || ^5.0", + "php": "^5.3.2 || ^7.0", + "psr/log": "^1.0", + "seld/cli-prompt": "^1.0", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.7 || ^3.0 || ^4.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0" + }, + "conflict": { + "symfony/console": "2.8.38" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7", + "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects, ensuring you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "time": "2018-05-04T09:44:59+00:00" + }, + { + "name": "composer/semver", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", + "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.5 || ^5.0.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "time": "2016-08-30T16:08:34+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/cb17687e9f936acd7e7245ad3890f953770dec1b", + "reference": "cb17687e9f936acd7e7245ad3890f953770dec1b", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5", + "phpunit/phpunit-mock-objects": "2.3.0 || ^3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "time": "2018-04-30T10:33:04+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.7", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "8560d4314577199ba51bf2032f02cd1315587c23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/8560d4314577199ba51bf2032f02cd1315587c23", + "reference": "8560d4314577199ba51bf2032f02cd1315587c23", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "time": "2018-02-14T22:26:30+00:00" + }, + { + "name": "mustache/mustache", + "version": "v2.12.0", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/mustache.php.git", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/mustache.php/zipball/fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "reference": "fe8fe72e9d580591854de404cc59a1b83ca4d19e", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~3.7|~4.0|~5.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Mustache": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "A Mustache implementation in PHP.", + "homepage": "https://github.com/bobthecow/mustache.php", + "keywords": [ + "mustache", + "templating" + ], + "time": "2017-07-11T12:54:05+00:00" + }, + { + "name": "nb/oxymel", + "version": "v0.1.0", + "source": { + "type": "git", + "url": "https://github.com/nb/oxymel.git", + "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nb/oxymel/zipball/cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", + "reference": "cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c", + "shasum": "" + }, + "require": { + "php": ">=5.2.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "Oxymel": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nikolay Bachiyski", + "email": "nb@nikolay.bg", + "homepage": "http://extrapolate.me/" + } + ], + "description": "A sweet XML builder", + "homepage": "https://github.com/nb/oxymel", + "keywords": [ + "xml" + ], + "time": "2013-02-24T15:01:54+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10T12:19:37+00:00" + }, + { + "name": "ramsey/array_column", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/array_column.git", + "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/array_column/zipball/f8e52eb28e67eb50e613b451dd916abcf783c1db", + "reference": "f8e52eb28e67eb50e613b451dd916abcf783c1db", + "shasum": "" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "0.8.*", + "phpunit/phpunit": "~4.5", + "satooshi/php-coveralls": "0.6.*", + "squizlabs/php_codesniffer": "~2.2" + }, + "type": "library", + "autoload": { + "files": [ + "src/array_column.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "homepage": "http://benramsey.com" + } + ], + "description": "Provides functionality for array_column() to projects using PHP earlier than version 5.5.", + "homepage": "https://github.com/ramsey/array_column", + "keywords": [ + "array", + "array_column", + "column" + ], + "time": "2015-03-20T22:07:39+00:00" + }, + { + "name": "rmccue/requests", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/rmccue/Requests.git", + "reference": "87932f52ffad70504d93f04f15690cf16a089546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rmccue/Requests/zipball/87932f52ffad70504d93f04f15690cf16a089546", + "reference": "87932f52ffad70504d93f04f15690cf16a089546", + "shasum": "" + }, + "require": { + "php": ">=5.2" + }, + "require-dev": { + "requests/test-server": "dev-master" + }, + "type": "library", + "autoload": { + "psr-0": { + "Requests": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Ryan McCue", + "homepage": "http://ryanmccue.info" + } + ], + "description": "A HTTP library written in PHP, for human beings.", + "homepage": "http://github.com/rmccue/Requests", + "keywords": [ + "curl", + "fsockopen", + "http", + "idna", + "ipv6", + "iri", + "sockets" + ], + "time": "2016-10-13T00:11:37+00:00" + }, + { + "name": "seld/cli-prompt", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/cli-prompt.git", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/cli-prompt/zipball/a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "reference": "a19a7376a4689d4d94cab66ab4f3c816019ba8dd", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\CliPrompt\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Allows you to prompt for user input on the command line, and optionally hide the characters they type", + "keywords": [ + "cli", + "console", + "hidden", + "input", + "prompt" + ], + "time": "2017-03-18T11:32:45+00:00" + }, + { + "name": "seld/jsonlint", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/d15f59a67ff805a44c50ea0516d2341740f81a38", + "reference": "d15f59a67ff805a44c50ea0516d2341740f81a38", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "time": "2018-01-24T12:46:19+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/7009b5139491975ef6486545a39f3e6dad5ac30a", + "reference": "7009b5139491975ef6486545a39f3e6dad5ac30a", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phra" + ], + "time": "2015-10-13T18:44:15+00:00" + }, + { + "name": "symfony/config", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "93bdf96d0e3c9b29740bf9050e7a996b443c8436" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/93bdf96d0e3c9b29740bf9050e7a996b443c8436", + "reference": "93bdf96d0e3c9b29740bf9050e7a996b443c8436", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/filesystem": "~2.3|~3.0.0", + "symfony/polyfill-ctype": "~1.8" + }, + "require-dev": { + "symfony/yaml": "~2.7|~3.0.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2018-05-01T22:52:40+00:00" + }, + { + "name": "symfony/console", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "e8e59b74ad1274714dad2748349b55e3e6e630c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/e8e59b74ad1274714dad2748349b55e3e6e630c7", + "reference": "e8e59b74ad1274714dad2748349b55e3e6e630c7", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/debug": "^2.7.2|~3.0.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.1|~3.0.0", + "symfony/process": "~2.1|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-05-15T21:17:45+00:00" + }, + { + "name": "symfony/debug", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", + "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", + "shasum": "" + }, + "require": { + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2016-07-30T07:22:48+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "3d7cbf34cd75ede7f94b9b990f85bd089e15cd55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/3d7cbf34cd75ede7f94b9b990f85bd089e15cd55", + "reference": "3d7cbf34cd75ede7f94b9b990f85bd089e15cd55", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "conflict": { + "symfony/expression-language": "<2.6" + }, + "require-dev": { + "symfony/config": "~2.2|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/yaml": "~2.3.42|~2.7.14|~2.8.7|~3.0.7" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2018-02-19T16:23:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", + "reference": "9b69aad7d4c086dc94ebade2d5eb9145da5dac8c", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "^2.0.5|~3.0.0", + "symfony/dependency-injection": "~2.6|~3.0.0", + "symfony/expression-language": "~2.6|~3.0.0", + "symfony/stopwatch": "~2.3|~3.0.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-04-06T07:35:03+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v3.0.9", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2016-07-20T05:43:46+00:00" + }, + { + "name": "symfony/finder", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "79764d21163db295f0daf8bd9d9b91f97e65db6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/79764d21163db295f0daf8bd9d9b91f97e65db6a", + "reference": "79764d21163db295f0daf8bd9d9b91f97e65db6a", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-05-15T21:17:45+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "reference": "7cc359f1b7b80fc25ed7796be7d96adc9b354bae", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-04-30T19:57:29+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "3296adf6a6454a050679cde90f95350ad604b171" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/3296adf6a6454a050679cde90f95350ad604b171", + "reference": "3296adf6a6454a050679cde90f95350ad604b171", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2018-04-26T10:06:28+00:00" + }, + { + "name": "symfony/process", + "version": "v3.4.11", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/4cbf2db9abcb01486a21b7a059e03a62fae63187", + "reference": "4cbf2db9abcb01486a21b7a059e03a62fae63187", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2018-05-16T08:49:21+00:00" + }, + { + "name": "symfony/translation", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/c6a27966a92fa361bf2c3a938abc6dee91f7ad67", + "reference": "c6a27966a92fa361bf2c3a938abc6dee91f7ad67", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.7" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8", + "symfony/intl": "~2.7.25|^2.8.18|~3.2.5", + "symfony/yaml": "~2.2|~3.0.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2018-05-21T09:59:10+00:00" + }, + { + "name": "symfony/yaml", + "version": "v2.8.41", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "51356b7a2ff7c9fd06b2f1681cc463bb62b5c1ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/51356b7a2ff7c9fd06b2f1681cc463bb62b5c1ff", + "reference": "51356b7a2ff7c9fd06b2f1681cc463bb62b5c1ff", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "symfony/polyfill-ctype": "~1.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-05-01T22:52:40+00:00" + }, + { + "name": "wp-cli/autoload-splitter", + "version": "v0.1.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/autoload-splitter.git", + "reference": "fb4302da26390811d2631c62b42b75976d224bb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/autoload-splitter/zipball/fb4302da26390811d2631c62b42b75976d224bb8", + "reference": "fb4302da26390811d2631c62b42b75976d224bb8", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1" + }, + "type": "composer-plugin", + "extra": { + "class": "WP_CLI\\AutoloadSplitter\\ComposerPlugin" + }, + "autoload": { + "psr-4": { + "WP_CLI\\AutoloadSplitter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alain Schlesser", + "email": "alain.schlesser@gmail.com", + "homepage": "https://www.alainschlesser.com" + } + ], + "description": "Composer plugin for splitting a generated autoloader into two distinct parts.", + "homepage": "https://wp-cli.org", + "time": "2017-08-03T08:40:16+00:00" + }, + { + "name": "wp-cli/cache-command", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/cache-command.git", + "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/cache-command/zipball/d82cba9effa198f17847dce5771c8fb20c443ffa", + "reference": "d82cba9effa198f17847dce5771c8fb20c443ffa", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "cache", + "cache add", + "cache decr", + "cache delete", + "cache flush", + "cache get", + "cache incr", + "cache replace", + "cache set", + "cache type", + "transient", + "transient delete", + "transient get", + "transient set", + "transient type" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "cache-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manages object and transient caches.", + "homepage": "https://github.com/wp-cli/cache-command", + "time": "2017-12-14T19:21:19+00:00" + }, + { + "name": "wp-cli/checksum-command", + "version": "v1.0.9", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/checksum-command.git", + "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/checksum-command/zipball/89a319440651f2867f282339c2223cfe5e9cc3fb", + "reference": "89a319440651f2867f282339c2223cfe5e9cc3fb", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "core verify-checksums", + "plugin verify-checksums" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "checksum-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Verifies file integrity by comparing to published checksums.", + "homepage": "https://github.com/wp-cli/checksum-command", + "time": "2018-04-20T07:47:27+00:00" + }, + { + "name": "wp-cli/config-command", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/config-command.git", + "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/config-command/zipball/7bec9b4685b4022ab511630422dd6acccadfca9b", + "reference": "7bec9b4685b4022ab511630422dd6acccadfca9b", + "shasum": "" + }, + "require": { + "wp-cli/wp-config-transformer": "^1.2.1" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "config", + "config edit", + "config delete", + "config create", + "config get", + "config has", + "config list", + "config path", + "config set" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "config-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + }, + { + "name": "Alain Schlesser", + "email": "alain.schlesser@gmail.com", + "homepage": "https://www.alainschlesser.com" + } + ], + "description": "Generates and reads the wp-config.php file.", + "homepage": "https://github.com/wp-cli/config-command", + "time": "2018-04-20T08:03:51+00:00" + }, + { + "name": "wp-cli/core-command", + "version": "v1.0.9", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/core-command.git", + "reference": "0e825668d2c060c40ec1d7debbee94bc08eec9b3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/core-command/zipball/0e825668d2c060c40ec1d7debbee94bc08eec9b3", + "reference": "0e825668d2c060c40ec1d7debbee94bc08eec9b3", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "core", + "core check-update", + "core download", + "core install", + "core is-installed", + "core multisite-convert", + "core multisite-install", + "core update", + "core update-db", + "core version" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "core-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Downloads, installs, updates, and manages a WordPress installation.", + "homepage": "https://github.com/wp-cli/core-command", + "time": "2018-01-30T06:57:10+00:00" + }, + { + "name": "wp-cli/cron-command", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/cron-command.git", + "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/cron-command/zipball/9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", + "reference": "9da7e36e8f9c14cb171a3c5204cba2865e0ed7ef", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "cron", + "cron test", + "cron event", + "cron event delete", + "cron event list", + "cron event run", + "cron event schedule", + "cron schedule", + "cron schedule list" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "cron-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules.", + "homepage": "https://github.com/wp-cli/cron-command", + "time": "2017-12-08T15:09:54+00:00" + }, + { + "name": "wp-cli/db-command", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/db-command.git", + "reference": "7d361a15ffe34dfc9d798a81208fe61b8a2f049a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/db-command/zipball/7d361a15ffe34dfc9d798a81208fe61b8a2f049a", + "reference": "7d361a15ffe34dfc9d798a81208fe61b8a2f049a", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "db", + "db create", + "db drop", + "db reset", + "db check", + "db optimize", + "db prefix", + "db repair", + "db cli", + "db query", + "db export", + "db import", + "db search", + "db tables", + "db size" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "db-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Performs basic database operations using credentials stored in wp-config.php.", + "homepage": "https://github.com/wp-cli/db-command", + "time": "2018-01-29T02:30:16+00:00" + }, + { + "name": "wp-cli/embed-command", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/embed-command.git", + "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/embed-command/zipball/81319d4243a8dfe096389bf54cdc4fc3dec53497", + "reference": "81319d4243a8dfe096389bf54cdc4fc3dec53497", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "embed", + "embed fetch", + "embed provider list", + "embed provider match", + "embed handler list", + "embed cache clear", + "embed cache find", + "embed cache trigger" + ] + }, + "autoload": { + "psr-4": { + "WP_CLI\\Embeds\\": "src/" + }, + "files": [ + "embed-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Pascal Birchler", + "homepage": "https://pascalbirchler.com/" + } + ], + "description": "Inspects oEmbed providers, clears embed cache, and more.", + "homepage": "https://github.com/wp-cli/embed-command", + "time": "2018-01-22T21:26:48+00:00" + }, + { + "name": "wp-cli/entity-command", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/entity-command.git", + "reference": "035b74ea16912f5b14db7d28036a6d123eb90547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/entity-command/zipball/035b74ea16912f5b14db7d28036a6d123eb90547", + "reference": "035b74ea16912f5b14db7d28036a6d123eb90547", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "phpunit/phpunit": "^4.8", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "comment", + "comment approve", + "comment count", + "comment create", + "comment delete", + "comment exists", + "comment generate", + "comment get", + "comment list", + "comment meta", + "comment meta add", + "comment meta delete", + "comment meta get", + "comment meta list", + "comment meta patch", + "comment meta pluck", + "comment meta update", + "comment recount", + "comment spam", + "comment status", + "comment trash", + "comment unapprove", + "comment unspam", + "comment untrash", + "comment update", + "menu", + "menu create", + "menu delete", + "menu item", + "menu item add-custom", + "menu item add-post", + "menu item add-term", + "menu item delete", + "menu item list", + "menu item update", + "menu list", + "menu location", + "menu location assign", + "menu location list", + "menu location remove", + "network meta", + "network meta add", + "network meta delete", + "network meta get", + "network meta list", + "network meta patch", + "network meta pluck", + "network meta update", + "option", + "option add", + "option delete", + "option get", + "option list", + "option patch", + "option pluck", + "option update", + "post", + "post create", + "post delete", + "post edit", + "post generate", + "post get", + "post list", + "post meta", + "post meta add", + "post meta delete", + "post meta get", + "post meta list", + "post meta patch", + "post meta pluck", + "post meta update", + "post term", + "post term add", + "post term list", + "post term remove", + "post term set", + "post update", + "post-type", + "post-type get", + "post-type list", + "site", + "site activate", + "site archive", + "site create", + "site deactivate", + "site delete", + "site empty", + "site list", + "site mature", + "site option", + "site private", + "site public", + "site spam", + "site unarchive", + "site unmature", + "site unspam", + "taxonomy", + "taxonomy get", + "taxonomy list", + "term", + "term create", + "term delete", + "term generate", + "term get", + "term list", + "term meta", + "term meta add", + "term meta delete", + "term meta get", + "term meta list", + "term meta patch", + "term meta pluck", + "term meta update", + "term recount", + "term update", + "user", + "user add-cap", + "user add-role", + "user create", + "user delete", + "user generate", + "user get", + "user import-csv", + "user list", + "user list-caps", + "user meta", + "user meta add", + "user meta delete", + "user meta get", + "user meta list", + "user meta patch", + "user meta pluck", + "user meta update", + "user remove-cap", + "user remove-role", + "user reset-password", + "user session", + "user session destroy", + "user session list", + "user set-role", + "user spam", + "user term", + "user term add", + "user term list", + "user term remove", + "user term set", + "user unspam", + "user update" + ] + }, + "autoload": { + "psr-4": { + "": "src/", + "WP_CLI\\": "src/WP_CLI" + }, + "files": [ + "entity-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manage WordPress core entities.", + "homepage": "https://github.com/wp-cli/entity-command", + "time": "2018-01-29T15:10:05+00:00" + }, + { + "name": "wp-cli/eval-command", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/eval-command.git", + "reference": "9640d40ab28cd86590396f08f8c382e659f57321" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/eval-command/zipball/9640d40ab28cd86590396f08f8c382e659f57321", + "reference": "9640d40ab28cd86590396f08f8c382e659f57321", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "*" + }, + "require-dev": { + "behat/behat": "~2.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "eval", + "eval-file" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "eval-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Executes arbitrary PHP code or files.", + "homepage": "https://github.com/wp-cli/eval-command", + "time": "2017-12-08T14:33:34+00:00" + }, + { + "name": "wp-cli/export-command", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/export-command.git", + "reference": "4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/export-command/zipball/4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633", + "reference": "4ae43d370ed6ed0cffd166dd84cfc6c8c2f3f633", + "shasum": "" + }, + "require": { + "nb/oxymel": "~0.1.0" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "export" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "export-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Exports WordPress content to a WXR file.", + "homepage": "https://github.com/wp-cli/export-command", + "time": "2018-01-29T02:33:05+00:00" + }, + { + "name": "wp-cli/extension-command", + "version": "v1.1.10", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/extension-command.git", + "reference": "3fd9ff469311bb2d6935997bc7d7e9f157fe29e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/extension-command/zipball/3fd9ff469311bb2d6935997bc7d7e9f157fe29e6", + "reference": "3fd9ff469311bb2d6935997bc7d7e9f157fe29e6", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "plugin", + "plugin activate", + "plugin deactivate", + "plugin delete", + "plugin get", + "plugin install", + "plugin is-installed", + "plugin list", + "plugin path", + "plugin search", + "plugin status", + "plugin toggle", + "plugin uninstall", + "plugin update", + "theme", + "theme activate", + "theme delete", + "theme disable", + "theme enable", + "theme get", + "theme install", + "theme is-installed", + "theme list", + "theme mod", + "theme mod get", + "theme mod set", + "theme mod remove", + "theme path", + "theme search", + "theme status", + "theme update" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "extension-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Manages plugins and themes, including installs, activations, and updates.", + "homepage": "https://github.com/wp-cli/extension-command", + "time": "2018-03-02T13:26:40+00:00" + }, + { + "name": "wp-cli/import-command", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/import-command.git", + "reference": "d2c21d590a1bfae6ac4e289a0b57fb1870b5990c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/import-command/zipball/d2c21d590a1bfae6ac4e289a0b57fb1870b5990c", + "reference": "d2c21d590a1bfae6ac4e289a0b57fb1870b5990c", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "*" + }, + "require-dev": { + "behat/behat": "~2.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "import" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "import-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Imports content from a given WXR file.", + "homepage": "https://github.com/wp-cli/import-command", + "time": "2017-12-08T15:13:36+00:00" + }, + { + "name": "wp-cli/language-command", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/language-command.git", + "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/language-command/zipball/2a3d1ce5a722a4d70809619a065087aa933f6209", + "reference": "2a3d1ce5a722a4d70809619a065087aa933f6209", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "language", + "language core", + "language core activate", + "language core install", + "language core list", + "language core uninstall", + "language core update" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "language-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Installs, activates, and manages language packs.", + "homepage": "https://github.com/wp-cli/language-command", + "time": "2017-12-08T17:50:26+00:00" + }, + { + "name": "wp-cli/media-command", + "version": "v1.1.4", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/media-command.git", + "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/media-command/zipball/7f8664ba722505446b3ef3dbc6717e8e7f20265c", + "reference": "7f8664ba722505446b3ef3dbc6717e8e7f20265c", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "media", + "media import", + "media regenerate", + "media image-size" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "media-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Imports files as attachments, regenerates thumbnails, or lists registered image sizes.", + "homepage": "https://github.com/wp-cli/media-command", + "time": "2018-01-29T02:17:56+00:00" + }, + { + "name": "wp-cli/mustangostang-spyc", + "version": "0.6.3", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/spyc.git", + "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/spyc/zipball/6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", + "reference": "6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7", + "shasum": "" + }, + "require": { + "php": ">=5.3.1" + }, + "require-dev": { + "phpunit/phpunit": "4.3.*@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Mustangostang\\": "src/" + }, + "files": [ + "includes/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "mustangostang", + "email": "vlad.andersen@gmail.com" + } + ], + "description": "A simple YAML loader/dumper class for PHP (WP-CLI fork)", + "homepage": "https://github.com/mustangostang/spyc/", + "time": "2017-04-25T11:26:20+00:00" + }, + { + "name": "wp-cli/package-command", + "version": "v1.0.13", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/package-command.git", + "reference": "c912f5bbad216997d7496d46fc5c05af0e16fc5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/package-command/zipball/c912f5bbad216997d7496d46fc5c05af0e16fc5b", + "reference": "c912f5bbad216997d7496d46fc5c05af0e16fc5b", + "shasum": "" + }, + "require": { + "composer/composer": "^1.2.0" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "package", + "package browse", + "package install", + "package list", + "package update", + "package uninstall" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "package-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists, installs, and removes WP-CLI packages.", + "homepage": "https://github.com/wp-cli/package-command", + "time": "2018-04-20T23:33:22+00:00" + }, + { + "name": "wp-cli/php-cli-tools", + "version": "v0.11.9", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/php-cli-tools.git", + "reference": "766653b45f99c817edb2b05dc23f7ee9a893768d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/766653b45f99c817edb2b05dc23f7ee9a893768d", + "reference": "766653b45f99c817edb2b05dc23f7ee9a893768d", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "cli": "lib/" + }, + "files": [ + "lib/cli/cli.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "James Logsdon", + "email": "jlogsdon@php.net", + "role": "Developer" + }, + { + "name": "Daniel Bachhuber", + "email": "daniel@handbuilt.co", + "role": "Maintainer" + } + ], + "description": "Console utilities for PHP", + "homepage": "http://github.com/wp-cli/php-cli-tools", + "keywords": [ + "cli", + "console" + ], + "time": "2018-04-20T08:11:30+00:00" + }, + { + "name": "wp-cli/rewrite-command", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/rewrite-command.git", + "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/rewrite-command/zipball/6b1695887e289ffad14c8f4ea86b5f1d92757408", + "reference": "6b1695887e289ffad14c8f4ea86b5f1d92757408", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "rewrite", + "rewrite flush", + "rewrite list", + "rewrite structure" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "rewrite-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists or flushes the site's rewrite rules, updates the permalink structure.", + "homepage": "https://github.com/wp-cli/rewrite-command", + "time": "2017-12-08T17:51:04+00:00" + }, + { + "name": "wp-cli/role-command", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/role-command.git", + "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/role-command/zipball/f50134ea9c27c108b1069cf044f7395c8f9bf716", + "reference": "f50134ea9c27c108b1069cf044f7395c8f9bf716", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "role", + "role create", + "role delete", + "role exists", + "role list", + "role reset", + "cap", + "cap add", + "cap list", + "cap remove" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "role-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Adds, removes, lists, and resets roles and capabilities.", + "homepage": "https://github.com/wp-cli/role-command", + "time": "2018-04-20T08:05:51+00:00" + }, + { + "name": "wp-cli/scaffold-command", + "version": "v1.1.3", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/scaffold-command.git", + "reference": "659348f05ebb47e70d7286b2e989146893a3c588" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/scaffold-command/zipball/659348f05ebb47e70d7286b2e989146893a3c588", + "reference": "659348f05ebb47e70d7286b2e989146893a3c588", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "scaffold", + "scaffold _s", + "scaffold block", + "scaffold child-theme", + "scaffold plugin", + "scaffold plugin-tests", + "scaffold post-type", + "scaffold taxonomy", + "scaffold theme-tests" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "scaffold-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Generates code for post types, taxonomies, blocks, plugins, child themes, etc.", + "homepage": "https://github.com/wp-cli/scaffold-command", + "time": "2018-04-20T18:37:18+00:00" + }, + { + "name": "wp-cli/search-replace-command", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/search-replace-command.git", + "reference": "df1092f65a5953dddace5fc060a9155f430a560e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/search-replace-command/zipball/df1092f65a5953dddace5fc060a9155f430a560e", + "reference": "df1092f65a5953dddace5fc060a9155f430a560e", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "^1.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "bundled": true, + "commands": [ + "search-replace" + ] + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "search-replace-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Searches/replaces strings in the database.", + "homepage": "https://github.com/wp-cli/search-replace-command", + "time": "2018-04-21T01:30:44+00:00" + }, + { + "name": "wp-cli/server-command", + "version": "v1.0.9", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/server-command.git", + "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/server-command/zipball/6192e6d7becd07e4c11a8f1560655c73a3b3526a", + "reference": "6192e6d7becd07e4c11a8f1560655c73a3b3526a", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "*" + }, + "require-dev": { + "behat/behat": "~2.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "server" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "server-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Launches PHP's built-in web server for a specific WordPress installation.", + "homepage": "https://github.com/wp-cli/server-command", + "time": "2017-12-14T20:06:24+00:00" + }, + { + "name": "wp-cli/shell-command", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/shell-command.git", + "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/shell-command/zipball/507603a8994d984b6c4d5bd26e31ede6d9cce37e", + "reference": "507603a8994d984b6c4d5bd26e31ede6d9cce37e", + "shasum": "" + }, + "require": { + "wp-cli/wp-cli": "*" + }, + "require-dev": { + "behat/behat": "~2.5" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "shell" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/", + "WP_CLI\\": "src/WP_CLI" + }, + "files": [ + "shell-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Opens an interactive PHP console for running and testing PHP code.", + "homepage": "https://github.com/wp-cli/shell-command", + "time": "2017-12-08T16:03:53+00:00" + }, + { + "name": "wp-cli/super-admin-command", + "version": "v1.0.6", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/super-admin-command.git", + "reference": "2982d2e6514dbb318561d72d0577746a3a37181e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/super-admin-command/zipball/2982d2e6514dbb318561d72d0577746a3a37181e", + "reference": "2982d2e6514dbb318561d72d0577746a3a37181e", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "super-admin", + "super-admin add", + "super-admin list", + "super-admin remove" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "super-admin-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Lists, adds, or removes super admin users on a multisite installation.", + "homepage": "https://github.com/wp-cli/super-admin-command", + "time": "2017-12-08T17:43:53+00:00" + }, + { + "name": "wp-cli/widget-command", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/widget-command.git", + "reference": "657e0f77d80c892f8f72f90a3a25112c254386df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/widget-command/zipball/657e0f77d80c892f8f72f90a3a25112c254386df", + "reference": "657e0f77d80c892f8f72f90a3a25112c254386df", + "shasum": "" + }, + "require-dev": { + "behat/behat": "~2.5", + "wp-cli/wp-cli": "*" + }, + "type": "wp-cli-package", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "commands": [ + "widget", + "widget add", + "widget deactivate", + "widget delete", + "widget list", + "widget move", + "widget reset", + "widget update", + "sidebar", + "sidebar list" + ], + "bundled": true + }, + "autoload": { + "psr-4": { + "": "src/" + }, + "files": [ + "widget-command.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@runcommand.io", + "homepage": "https://runcommand.io" + } + ], + "description": "Adds, moves, and removes widgets; lists sidebars.", + "homepage": "https://github.com/wp-cli/widget-command", + "time": "2017-12-08T17:45:57+00:00" + }, + { + "name": "wp-cli/wp-cli", + "version": "v1.5.1", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-cli.git", + "reference": "76ee045996169a50b3466dac518e38cdf24109a7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-cli/zipball/76ee045996169a50b3466dac518e38cdf24109a7", + "reference": "76ee045996169a50b3466dac518e38cdf24109a7", + "shasum": "" + }, + "require": { + "composer/composer": "^1.2.0", + "composer/semver": "~1.0", + "justinrainbow/json-schema": "~5.2.5", + "mustache/mustache": "~2.4", + "php": ">=5.3.29", + "ramsey/array_column": "~1.1", + "rmccue/requests": "~1.6", + "symfony/config": "^2.7|^3.0", + "symfony/console": "^2.7|^3.0", + "symfony/debug": "^2.7|^3.0", + "symfony/dependency-injection": "^2.7|^3.0", + "symfony/event-dispatcher": "^2.7|^3.0", + "symfony/filesystem": "^2.7|^3.0", + "symfony/finder": "^2.7|^3.0", + "symfony/process": "^2.1|^3.0", + "symfony/translation": "^2.7|^3.0", + "symfony/yaml": "^2.7|^3.0", + "wp-cli/autoload-splitter": "^0.1.5", + "wp-cli/cache-command": "^1.0", + "wp-cli/checksum-command": "^1.0", + "wp-cli/config-command": "^1.0", + "wp-cli/core-command": "^1.0", + "wp-cli/cron-command": "^1.0", + "wp-cli/db-command": "^1.0", + "wp-cli/embed-command": "^1.0", + "wp-cli/entity-command": "^1.0", + "wp-cli/eval-command": "^1.0", + "wp-cli/export-command": "^1.0", + "wp-cli/extension-command": "^1.0", + "wp-cli/import-command": "^1.0", + "wp-cli/language-command": "^1.0", + "wp-cli/media-command": "^1.0", + "wp-cli/mustangostang-spyc": "^0.6.3", + "wp-cli/package-command": "^1.0", + "wp-cli/php-cli-tools": "~0.11.2", + "wp-cli/rewrite-command": "^1.0", + "wp-cli/role-command": "^1.0", + "wp-cli/scaffold-command": "^1.0", + "wp-cli/search-replace-command": "^1.0", + "wp-cli/server-command": "^1.0", + "wp-cli/shell-command": "^1.0", + "wp-cli/super-admin-command": "^1.0", + "wp-cli/widget-command": "^1.0" + }, + "require-dev": { + "behat/behat": "2.5.*", + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.3", + "phpunit/phpunit": "3.7.*", + "roave/security-advisories": "dev-master", + "wimg/php-compatibility": "^8.0", + "wp-coding-standards/wpcs": "^0.13.1" + }, + "suggest": { + "psy/psysh": "Enhanced `wp shell` functionality" + }, + "bin": [ + "bin/wp.bat", + "bin/wp" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5.x-dev" + }, + "autoload-splitter": { + "splitter-logic": "WP_CLI\\AutoloadSplitter", + "splitter-location": "php/WP_CLI/AutoloadSplitter.php", + "split-target-prefix-true": "autoload_commands", + "split-target-prefix-false": "autoload_framework" + } + }, + "autoload": { + "psr-0": { + "WP_CLI": "php" + }, + "psr-4": { + "": "php/commands/src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The command line interface for WordPress", + "homepage": "https://wp-cli.org", + "keywords": [ + "cli", + "wordpress" + ], + "time": "2018-04-14T14:35:48+00:00" + }, + { + "name": "wp-cli/wp-config-transformer", + "version": "v1.2.1", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/wp-config-transformer.git", + "reference": "6ce0a9fae09d53145c9c9c79486a69684598488d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/wp-config-transformer/zipball/6ce0a9fae09d53145c9c9c79486a69684598488d", + "reference": "6ce0a9fae09d53145c9c9c79486a69684598488d", + "shasum": "" + }, + "require": { + "php": ">=5.3.29" + }, + "require-dev": { + "composer/composer": "^1.5.6", + "phpunit/phpunit": "^6.5.5", + "wp-coding-standards/wpcs": "^0.14.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/WPConfigTransformer.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frankie Jarrett", + "email": "fjarrett@gmail.com" + } + ], + "description": "Programmatically edit a wp-config.php file.", + "time": "2018-03-20T16:19:27+00:00" + } + ], + "packages-dev": [ + { + "name": "behat/behat", + "version": "v2.5.5", + "source": { + "type": "git", + "url": "https://github.com/Behat/Behat.git", + "reference": "c1e48826b84669c97a1efa78459aedfdcdcf2120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Behat/zipball/c1e48826b84669c97a1efa78459aedfdcdcf2120", + "reference": "c1e48826b84669c97a1efa78459aedfdcdcf2120", + "shasum": "" + }, + "require": { + "behat/gherkin": "~2.3.0", + "php": ">=5.3.1", + "symfony/config": "~2.3", + "symfony/console": "~2.0", + "symfony/dependency-injection": "~2.0", + "symfony/event-dispatcher": "~2.0", + "symfony/finder": "~2.0", + "symfony/translation": "~2.3", + "symfony/yaml": "~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~3.7.19" + }, + "suggest": { + "behat/mink-extension": "for integration with Mink testing framework", + "behat/symfony2-extension": "for integration with Symfony2 web framework", + "behat/yii-extension": "for integration with Yii web framework" + }, + "bin": [ + "bin/behat" + ], + "type": "library", + "autoload": { + "psr-0": { + "Behat\\Behat": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Scenario-oriented BDD framework for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "Symfony2" + ], + "time": "2015-06-01T09:37:55+00:00" + }, + { + "name": "behat/gherkin", + "version": "v2.3.5", + "source": { + "type": "git", + "url": "https://github.com/Behat/Gherkin.git", + "reference": "2b33963da5525400573560c173ab5c9c057e1852" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2b33963da5525400573560c173ab5c9c057e1852", + "reference": "2b33963da5525400573560c173ab5c9c057e1852", + "shasum": "" + }, + "require": { + "php": ">=5.3.1", + "symfony/finder": "~2.0" + }, + "require-dev": { + "symfony/config": "~2.0", + "symfony/translation": "~2.0", + "symfony/yaml": "~2.0" + }, + "suggest": { + "symfony/config": "If you want to use Config component to manage resources", + "symfony/translation": "If you want to use Symfony2 translations adapter", + "symfony/yaml": "If you want to parse features, represented in YAML files" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-develop": "2.2-dev" + } + }, + "autoload": { + "psr-0": { + "Behat\\Gherkin": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + } + ], + "description": "Gherkin DSL parser for PHP 5.3", + "homepage": "http://behat.org/", + "keywords": [ + "BDD", + "Behat", + "DSL", + "Symfony2", + "parser" + ], + "time": "2013-10-15T11:22:17+00:00" + } + ], + "aliases": [], + "minimum-stability": "dev", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=5.3" + }, + "platform-dev": [] +} diff --git a/wp-content/plugins/buddypress/cli/features/activity-favorite.feature b/wp-content/plugins/buddypress/cli/features/activity-favorite.feature new file mode 100644 index 0000000000000000000000000000000000000000..dc37cf1766870e5acebae503da1ec0b7d9edee58 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/activity-favorite.feature @@ -0,0 +1,39 @@ +Feature: Manage BuddyPress Activity Favorites + + Scenario: Activity Favorite CRUD Operations + Given a BP install + + When I run `wp user create testuser2 testuser2@example.com --porcelain` + And save STDOUT as {MEMBER_ID} + + When I run `wp bp activity create --component=groups --user-id={MEMBER_ID} --porcelain` + Then STDOUT should be a number + And save STDOUT as {ACTIVITY_ID} + + When I run `wp bp activity list --fields=id,user_id,component` + Then STDOUT should be a table containing rows: + | id | user_id | component | + | {ACTIVITY_ID} | {MEMBER_ID} | groups | + + When I run `wp user create testuser3 testuser3@example.com --porcelain` + And save STDOUT as {SEC_MEMBER_ID} + + When I run `wp bp activity favorite create {ACTIVITY_ID} {SEC_MEMBER_ID}` + Then STDOUT should contain: + """ + Success: Activity item added as a favorite for the user. + """ + + When I run `wp bp activity favorite list {SEC_MEMBER_ID} --fields=id` + Then STDOUT should be a table containing rows: + | id | + | {ACTIVITY_ID} | + + When I run `wp bp activity favorite remove {ACTIVITY_ID} {SEC_MEMBER_ID} --yes` + Then STDOUT should contain: + """ + Success: Activity item removed as a favorite for the user. + """ + + When I try `wp bp activity favorite list {SEC_MEMBER_ID} --fields=id` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/features/activity.feature b/wp-content/plugins/buddypress/cli/features/activity.feature new file mode 100644 index 0000000000000000000000000000000000000000..e6deb19799e234e827bed50b964702208a147bed --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/activity.feature @@ -0,0 +1,92 @@ +Feature: Manage BuddyPress Activities + + Scenario: Activity CRUD Operations + Given a BP install + + When I run `wp user create testuser2 testuser2@example.com --first_name=test --last_name=user --role=subscriber --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ID} + + When I run `wp bp activity create --component=groups --user-id={MEMBER_ID} --porcelain` + Then STDOUT should be a number + And save STDOUT as {ACTIVITY_ID} + + When I run `wp bp activity get {ACTIVITY_ID} --fields=id,user_id,component` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {ACTIVITY_ID} | + | user_id | {MEMBER_ID} | + | component | groups | + + When I run `wp bp activity list --fields=id,user_id,component` + Then STDOUT should be a table containing rows: + | id | user_id | component | + | {ACTIVITY_ID} | {MEMBER_ID} | groups | + + When I run `wp bp activity spam {ACTIVITY_ID}` + Then STDOUT should contain: + """ + Success: Activity marked as spam. + """ + + When I run `wp bp activity get {ACTIVITY_ID} --fields=id,is_spam` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {ACTIVITY_ID} | + | is_spam | 1 | + + When I run `wp bp activity ham {ACTIVITY_ID}` + Then STDOUT should contain: + """ + Success: Activity marked as ham. + """ + + When I run `wp bp activity get {ACTIVITY_ID} --fields=id,is_spam` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {ACTIVITY_ID} | + | is_spam | 0 | + + When I run `wp bp activity delete {ACTIVITY_ID} --yes` + Then STDOUT should contain: + """ + Success: Activity deleted. + """ + + When I try `wp bp activity get {ACTIVITY_ID}` + Then the return code should be 1 + + Scenario: Activity Comment Operations + Given a BP install + + When I run `wp user create testuser2 testuser2@example.com --first_name=test --last_name=user --role=subscriber --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ID} + + When I run `wp bp activity post-update --user-id={MEMBER_ID} --content="Random Content" --porcelain` + Then STDOUT should be a number + And save STDOUT as {ACTIVITY_ID} + + When I run `wp bp activity list --fields=id,user_id,component` + Then STDOUT should be a table containing rows: + | id | user_id | component | + | {ACTIVITY_ID} | {MEMBER_ID} | activity | + + When I run `wp bp activity comment {ACTIVITY_ID} --user-id={MEMBER_ID} --content="Activity Comment" --skip-notification --porcelain` + Then STDOUT should be a number + And save STDOUT as {COMMENT_ID} + + When I run `wp bp activity get {COMMENT_ID} --fields=id,type` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {COMMENT_ID} | + | type | activity_comment | + + When I run `wp bp activity delete_comment {ACTIVITY_ID} --comment-id={COMMENT_ID} --yes` + Then STDOUT should contain: + """ + Success: Activity comment deleted. + """ + + When I try `wp bp activity get {COMMENT_ID} --fields=id,type` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/features/bootstrap/FeatureContext.php b/wp-content/plugins/buddypress/cli/features/bootstrap/FeatureContext.php new file mode 100644 index 0000000000000000000000000000000000000000..b46de6428be9d5994e3964a07f94578feaf56b7b --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/bootstrap/FeatureContext.php @@ -0,0 +1,903 @@ +<?php + +use Behat\Behat\Context\ClosuredContextInterface, + Behat\Behat\Context\TranslatedContextInterface, + Behat\Behat\Context\BehatContext, + Behat\Behat\Event\SuiteEvent; + +use \WP_CLI\Process; +use \WP_CLI\Utils; + +// Inside a community package +if ( file_exists( __DIR__ . '/utils.php' ) ) { + require_once __DIR__ . '/utils.php'; + require_once __DIR__ . '/Process.php'; + require_once __DIR__ . '/ProcessRun.php'; + $project_composer = dirname( dirname( dirname( __FILE__ ) ) ) . '/composer.json'; + if ( file_exists( $project_composer ) ) { + $composer = json_decode( file_get_contents( $project_composer ) ); + if ( ! empty( $composer->autoload->files ) ) { + $contents = 'require:' . PHP_EOL; + foreach( $composer->autoload->files as $file ) { + $contents .= ' - ' . dirname( dirname( dirname( __FILE__ ) ) ) . '/' . $file . PHP_EOL; + } + @mkdir( sys_get_temp_dir() . '/wp-cli-package-test/' ); + $project_config = sys_get_temp_dir() . '/wp-cli-package-test/config.yml'; + file_put_contents( $project_config, $contents ); + putenv( 'WP_CLI_CONFIG_PATH=' . $project_config ); + } + } +// Inside WP-CLI +} else { + require_once __DIR__ . '/../../php/utils.php'; + require_once __DIR__ . '/../../php/WP_CLI/Process.php'; + require_once __DIR__ . '/../../php/WP_CLI/ProcessRun.php'; + if ( file_exists( __DIR__ . '/../../vendor/autoload.php' ) ) { + require_once __DIR__ . '/../../vendor/autoload.php'; + } else if ( file_exists( __DIR__ . '/../../../../autoload.php' ) ) { + require_once __DIR__ . '/../../../../autoload.php'; + } +} + +/** + * Features context. + */ +class FeatureContext extends BehatContext implements ClosuredContextInterface { + + /** + * The current working directory for scenarios that have a "Given a WP install" or "Given an empty directory" step. Variable RUN_DIR. Lives until the end of the scenario. + */ + private static $run_dir; + + /** + * Where WordPress core is downloaded to for caching, and which is copied to RUN_DIR during a "Given a WP install" step. Lives until manually deleted. + */ + private static $cache_dir; + + /** + * The directory that holds the install cache, and which is copied to RUN_DIR during a "Given a WP install" step. Recreated on each suite run. + */ + private static $install_cache_dir; + + /** + * The directory that the WP-CLI cache (WP_CLI_CACHE_DIR, normally "$HOME/.wp-cli/cache") is set to on a "Given an empty cache" step. + * Variable SUITE_CACHE_DIR. Lives until the end of the scenario (or until another "Given an empty cache" step within the scenario). + */ + private static $suite_cache_dir; + + /** + * Where the current WP-CLI source repository is copied to for Composer-based tests with a "Given a dependency on current wp-cli" step. + * Variable COMPOSER_LOCAL_REPOSITORY. Lives until the end of the suite. + */ + private static $composer_local_repository; + + /** + * The test database settings. All but `dbname` can be set via environment variables. The database is dropped at the start of each scenario and created on a "Given a WP install" step. + */ + private static $db_settings = array( + 'dbname' => 'wp_cli_test', + 'dbuser' => 'wp_cli_test', + 'dbpass' => 'password1', + 'dbhost' => '127.0.0.1', + ); + + /** + * Array of background process ids started by the current scenario. Used to terminate them at the end of the scenario. + */ + private $running_procs = array(); + + /** + * Array of variables available as {VARIABLE_NAME}. Some are always set: CORE_CONFIG_SETTINGS, SRC_DIR, CACHE_DIR, WP_VERSION-version-latest. Some are step-dependent: + * RUN_DIR, SUITE_CACHE_DIR, COMPOSER_LOCAL_REPOSITORY, PHAR_PATH. Scenarios can define their own variables using "Given save" steps. Variables are reset for each scenario. + */ + public $variables = array(); + + /** + * The current feature file and scenario line number as '<file>.<line>'. Used in RUN_DIR and SUITE_CACHE_DIR directory names. Set at the start of each scenario. + */ + private static $temp_dir_infix; + + /** + * Settings and variables for WP_CLI_TEST_LOG_RUN_TIMES run time logging. + */ + private static $log_run_times; // Whether to log run times - WP_CLI_TEST_LOG_RUN_TIMES env var. Set on `@BeforeScenario'. + private static $suite_start_time; // When the suite started, set on `@BeforeScenario'. + private static $output_to; // Where to output log - stdout|error_log. Set on `@BeforeSuite`. + private static $num_top_processes; // Number of processes/methods to output by longest run times. Set on `@BeforeSuite`. + private static $num_top_scenarios; // Number of scenarios to output by longest run times. Set on `@BeforeSuite`. + + private static $scenario_run_times = array(); // Scenario run times (top `self::$num_top_scenarios` only). + private static $scenario_count = 0; // Scenario count, incremented on `@AfterScenario`. + private static $proc_method_run_times = array(); // Array of run time info for proc methods, keyed by method name and arg, each a 2-element array containing run time and run count. + + /** + * Get the environment variables required for launched `wp` processes + */ + private static function get_process_env_variables() { + // Ensure we're using the expected `wp` binary + $bin_dir = getenv( 'WP_CLI_BIN_DIR' ) ?: realpath( __DIR__ . '/../../bin' ); + $vendor_dir = realpath( __DIR__ . '/../../vendor/bin' ); + $env = array( + 'PATH' => $bin_dir . ':' . $vendor_dir . ':' . getenv( 'PATH' ), + 'BEHAT_RUN' => 1, + 'HOME' => sys_get_temp_dir() . '/wp-cli-home', + ); + if ( $config_path = getenv( 'WP_CLI_CONFIG_PATH' ) ) { + $env['WP_CLI_CONFIG_PATH'] = $config_path; + } + if ( $term = getenv( 'TERM' ) ) { + $env['TERM'] = $term; + } + if ( $php_args = getenv( 'WP_CLI_PHP_ARGS' ) ) { + $env['WP_CLI_PHP_ARGS'] = $php_args; + } + if ( $travis_build_dir = getenv( 'TRAVIS_BUILD_DIR' ) ) { + $env['TRAVIS_BUILD_DIR'] = $travis_build_dir; + } + if ( $github_token = getenv( 'GITHUB_TOKEN' ) ) { + $env['GITHUB_TOKEN'] = $github_token; + } + return $env; + } + + /** + * We cache the results of `wp core download` to improve test performance. + * Ideally, we'd cache at the HTTP layer for more reliable tests. + */ + private static function cache_wp_files() { + $wp_version_suffix = ( $wp_version = getenv( 'WP_VERSION' ) ) ? "-$wp_version" : ''; + self::$cache_dir = sys_get_temp_dir() . '/wp-cli-test-core-download-cache' . $wp_version_suffix; + + if ( is_readable( self::$cache_dir . '/wp-config-sample.php' ) ) + return; + + $cmd = Utils\esc_cmd( 'wp core download --force --path=%s', self::$cache_dir ); + if ( $wp_version ) { + $cmd .= Utils\esc_cmd( ' --version=%s', $wp_version ); + } + Process::create( $cmd, null, self::get_process_env_variables() )->run_check(); + } + + /** + * @BeforeSuite + */ + public static function prepare( SuiteEvent $event ) { + // Test performance statistics - useful for detecting slow tests. + if ( self::$log_run_times = getenv( 'WP_CLI_TEST_LOG_RUN_TIMES' ) ) { + self::log_run_times_before_suite( $event ); + } + + $result = Process::create( 'wp cli info', null, self::get_process_env_variables() )->run_check(); + echo PHP_EOL; + echo $result->stdout; + echo PHP_EOL; + self::cache_wp_files(); + $result = Process::create( Utils\esc_cmd( 'wp core version --path=%s', self::$cache_dir ) , null, self::get_process_env_variables() )->run_check(); + echo 'WordPress ' . $result->stdout; + echo PHP_EOL; + + // Remove install cache if any (not setting the static var). + $wp_version_suffix = ( $wp_version = getenv( 'WP_VERSION' ) ) ? "-$wp_version" : ''; + $install_cache_dir = sys_get_temp_dir() . '/wp-cli-test-core-install-cache' . $wp_version_suffix; + if ( file_exists( $install_cache_dir ) ) { + self::remove_dir( $install_cache_dir ); + } + } + + /** + * @AfterSuite + */ + public static function afterSuite( SuiteEvent $event ) { + if ( self::$composer_local_repository ) { + self::remove_dir( self::$composer_local_repository ); + self::$composer_local_repository = null; + } + + if ( self::$log_run_times ) { + self::log_run_times_after_suite( $event ); + } + } + + /** + * @BeforeScenario + */ + public function beforeScenario( $event ) { + if ( self::$log_run_times ) { + self::log_run_times_before_scenario( $event ); + } + + $this->variables['SRC_DIR'] = realpath( __DIR__ . '/../..' ); + + // Used in the names of the RUN_DIR and SUITE_CACHE_DIR directories. + self::$temp_dir_infix = null; + if ( $file = self::get_event_file( $event, $line ) ) { + self::$temp_dir_infix = basename( $file ) . '.' . $line; + } + } + + /** + * @AfterScenario + */ + public function afterScenario( $event ) { + + if ( self::$run_dir ) { + // remove altered WP install, unless there's an error + if ( $event->getResult() < 4 ) { + self::remove_dir( self::$run_dir ); + } + self::$run_dir = null; + } + + // Remove WP-CLI package directory if any. Set to `wp package path` by package-command and scaffold-package-command features, and by cli-info.feature. + if ( isset( $this->variables['PACKAGE_PATH'] ) ) { + self::remove_dir( $this->variables['PACKAGE_PATH'] ); + } + + // Remove SUITE_CACHE_DIR if any. + if ( self::$suite_cache_dir ) { + self::remove_dir( self::$suite_cache_dir ); + self::$suite_cache_dir = null; + } + + // Remove any background processes. + foreach ( $this->running_procs as $proc ) { + $status = proc_get_status( $proc ); + self::terminate_proc( $status['pid'] ); + } + + if ( self::$log_run_times ) { + self::log_run_times_after_scenario( $event ); + } + } + + /** + * Terminate a process and any of its children. + */ + private static function terminate_proc( $master_pid ) { + + $output = `ps -o ppid,pid,command | grep $master_pid`; + + foreach ( explode( PHP_EOL, $output ) as $line ) { + if ( preg_match( '/^\s*(\d+)\s+(\d+)/', $line, $matches ) ) { + $parent = $matches[1]; + $child = $matches[2]; + + if ( $parent == $master_pid ) { + self::terminate_proc( $child ); + } + } + } + + if ( ! posix_kill( (int) $master_pid, 9 ) ) { + $errno = posix_get_last_error(); + // Ignore "No such process" error as that's what we want. + if ( 3 /*ESRCH*/ !== $errno ) { + throw new RuntimeException( posix_strerror( $errno ) ); + } + } + } + + /** + * Create a temporary WP_CLI_CACHE_DIR. Exposed as SUITE_CACHE_DIR in "Given an empty cache" step. + */ + public static function create_cache_dir() { + if ( self::$suite_cache_dir ) { + self::remove_dir( self::$suite_cache_dir ); + } + self::$suite_cache_dir = sys_get_temp_dir() . '/' . uniqid( 'wp-cli-test-suite-cache-' . self::$temp_dir_infix . '-', TRUE ); + mkdir( self::$suite_cache_dir ); + return self::$suite_cache_dir; + } + + /** + * Initializes context. + * Every scenario gets its own context object. + * + * @param array $parameters context parameters (set them up through behat.yml) + */ + public function __construct( array $parameters ) { + if ( getenv( 'WP_CLI_TEST_DBUSER' ) ) { + self::$db_settings['dbuser'] = getenv( 'WP_CLI_TEST_DBUSER' ); + } + + if ( false !== getenv( 'WP_CLI_TEST_DBPASS' ) ) { + self::$db_settings['dbpass'] = getenv( 'WP_CLI_TEST_DBPASS' ); + } + + if ( getenv( 'WP_CLI_TEST_DBHOST' ) ) { + self::$db_settings['dbhost'] = getenv( 'WP_CLI_TEST_DBHOST' ); + } + + $this->drop_db(); + $this->set_cache_dir(); + $this->variables['CORE_CONFIG_SETTINGS'] = Utils\assoc_args_to_str( self::$db_settings ); + } + + public function getStepDefinitionResources() { + return glob( __DIR__ . '/../steps/*.php' ); + } + + public function getHookDefinitionResources() { + return array(); + } + + /** + * Replace {VARIABLE_NAME}. Note that variable names can only contain uppercase letters and underscores (no numbers). + */ + public function replace_variables( $str ) { + $ret = preg_replace_callback( '/\{([A-Z_]+)\}/', array( $this, '_replace_var' ), $str ); + if ( false !== strpos( $str, '{WP_VERSION-' ) ) { + $ret = $this->_replace_wp_versions( $ret ); + } + return $ret; + } + + /** + * Replace variables callback. + */ + private function _replace_var( $matches ) { + $cmd = $matches[0]; + + foreach ( array_slice( $matches, 1 ) as $key ) { + $cmd = str_replace( '{' . $key . '}', $this->variables[ $key ], $cmd ); + } + + return $cmd; + } + + /** + * Substitute "{WP_VERSION-version-latest}" variables. + */ + private function _replace_wp_versions( $str ) { + static $wp_versions = null; + if ( null === $wp_versions ) { + $wp_versions = array(); + + $response = Requests::get( 'https://api.wordpress.org/core/version-check/1.7/', null, array( 'timeout' => 30 ) ); + if ( 200 === $response->status_code && ( $body = json_decode( $response->body ) ) && is_object( $body ) && isset( $body->offers ) && is_array( $body->offers ) ) { + // Latest version alias. + $wp_versions["{WP_VERSION-latest}"] = count( $body->offers ) ? $body->offers[0]->version : ''; + foreach ( $body->offers as $offer ) { + $sub_ver = preg_replace( '/(^[0-9]+\.[0-9]+)\.[0-9]+$/', '$1', $offer->version ); + $sub_ver_key = "{WP_VERSION-{$sub_ver}-latest}"; + + $main_ver = preg_replace( '/(^[0-9]+)\.[0-9]+$/', '$1', $sub_ver ); + $main_ver_key = "{WP_VERSION-{$main_ver}-latest}"; + + if ( ! isset( $wp_versions[ $main_ver_key ] ) ) { + $wp_versions[ $main_ver_key ] = $offer->version; + } + if ( ! isset( $wp_versions[ $sub_ver_key ] ) ) { + $wp_versions[ $sub_ver_key ] = $offer->version; + } + } + } + } + return strtr( $str, $wp_versions ); + } + + /** + * Get the file and line number for the current behat event. + */ + private static function get_event_file( $event, &$line ) { + if ( method_exists( $event, 'getScenario' ) ) { + $scenario_feature = $event->getScenario(); + } elseif ( method_exists( $event, 'getFeature' ) ) { + $scenario_feature = $event->getFeature(); + } elseif ( method_exists( $event, 'getOutline' ) ) { + $scenario_feature = $event->getOutline(); + } else { + return null; + } + $line = $scenario_feature->getLine(); + return $scenario_feature->getFile(); + } + + /** + * Create the RUN_DIR directory, unless already set for this scenario. + */ + public function create_run_dir() { + if ( !isset( $this->variables['RUN_DIR'] ) ) { + self::$run_dir = $this->variables['RUN_DIR'] = sys_get_temp_dir() . '/' . uniqid( 'wp-cli-test-run-' . self::$temp_dir_infix . '-', TRUE ); + mkdir( $this->variables['RUN_DIR'] ); + } + } + + public function build_phar( $version = 'same' ) { + $this->variables['PHAR_PATH'] = $this->variables['RUN_DIR'] . '/' . uniqid( "wp-cli-build-", TRUE ) . '.phar'; + + // Test running against a package installed as a WP-CLI dependency + // WP-CLI installed as a project dependency + $make_phar_path = __DIR__ . '/../../../../../utils/make-phar.php'; + if ( ! file_exists( $make_phar_path ) ) { + // Test running against WP-CLI proper + $make_phar_path = __DIR__ . '/../../utils/make-phar.php'; + if ( ! file_exists( $make_phar_path ) ) { + // WP-CLI as a dependency of this project + $make_phar_path = __DIR__ . '/../../vendor/wp-cli/wp-cli/utils/make-phar.php'; + } + } + + $this->proc( Utils\esc_cmd( + 'php -dphar.readonly=0 %1$s %2$s --version=%3$s && chmod +x %2$s', + $make_phar_path, + $this->variables['PHAR_PATH'], + $version + ) )->run_check(); + } + + public function download_phar( $version = 'same' ) { + if ( 'same' === $version ) { + $version = WP_CLI_VERSION; + } + + $download_url = sprintf( + 'https://github.com/wp-cli/wp-cli/releases/download/v%1$s/wp-cli-%1$s.phar', + $version + ); + + $this->variables['PHAR_PATH'] = $this->variables['RUN_DIR'] . '/' + . uniqid( 'wp-cli-download-', true ) + . '.phar'; + + Process::create( Utils\esc_cmd( + 'curl -sSfL %1$s > %2$s && chmod +x %2$s', + $download_url, + $this->variables['PHAR_PATH'] + ) )->run_check(); + } + + /** + * CACHE_DIR is a cache for downloaded test data such as images. Lives until manually deleted. + */ + private function set_cache_dir() { + $path = sys_get_temp_dir() . '/wp-cli-test-cache'; + if ( ! file_exists( $path ) ) { + mkdir( $path ); + } + $this->variables['CACHE_DIR'] = $path; + } + + /** + * Run a MySQL command with `$db_settings`. + * + * @param string $sql_cmd Command to run. + * @param array $assoc_args Optional. Associative array of options. Default empty. + * @param bool $add_database Optional. Whether to add dbname to the $sql_cmd. Default false. + */ + private static function run_sql( $sql_cmd, $assoc_args = array(), $add_database = false ) { + $default_assoc_args = array( + 'host' => self::$db_settings['dbhost'], + 'user' => self::$db_settings['dbuser'], + 'pass' => self::$db_settings['dbpass'], + ); + if ( $add_database ) { + $sql_cmd .= ' ' . escapeshellarg( self::$db_settings['dbname'] ); + } + $start_time = microtime( true ); + Utils\run_mysql_command( $sql_cmd, array_merge( $assoc_args, $default_assoc_args ) ); + if ( self::$log_run_times ) { + self::log_proc_method_run_time( 'run_sql ' . $sql_cmd, $start_time ); + } + } + + public function create_db() { + $dbname = self::$db_settings['dbname']; + self::run_sql( 'mysql --no-defaults', array( 'execute' => "CREATE DATABASE IF NOT EXISTS $dbname" ) ); + } + + public function drop_db() { + $dbname = self::$db_settings['dbname']; + self::run_sql( 'mysql --no-defaults', array( 'execute' => "DROP DATABASE IF EXISTS $dbname" ) ); + } + + public function proc( $command, $assoc_args = array(), $path = '' ) { + if ( !empty( $assoc_args ) ) + $command .= Utils\assoc_args_to_str( $assoc_args ); + + $env = self::get_process_env_variables(); + if ( isset( $this->variables['SUITE_CACHE_DIR'] ) ) { + $env['WP_CLI_CACHE_DIR'] = $this->variables['SUITE_CACHE_DIR']; + } + + if ( isset( $this->variables['RUN_DIR'] ) ) { + $cwd = "{$this->variables['RUN_DIR']}/{$path}"; + } else { + $cwd = null; + } + + return Process::create( $command, $cwd, $env ); + } + + /** + * Start a background process. Will automatically be closed when the tests finish. + */ + public function background_proc( $cmd ) { + $descriptors = array( + 0 => STDIN, + 1 => array( 'pipe', 'w' ), + 2 => array( 'pipe', 'w' ), + ); + + $proc = proc_open( $cmd, $descriptors, $pipes, $this->variables['RUN_DIR'], self::get_process_env_variables() ); + + sleep(1); + + $status = proc_get_status( $proc ); + + if ( !$status['running'] ) { + throw new RuntimeException( stream_get_contents( $pipes[2] ) ); + } else { + $this->running_procs[] = $proc; + } + } + + public function move_files( $src, $dest ) { + rename( $this->variables['RUN_DIR'] . "/$src", $this->variables['RUN_DIR'] . "/$dest" ); + } + + /** + * Remove a directory (recursive). + */ + public static function remove_dir( $dir ) { + Process::create( Utils\esc_cmd( 'rm -rf %s', $dir ) )->run_check(); + } + + /** + * Copy a directory (recursive). Destination directory must exist. + */ + public static function copy_dir( $src_dir, $dest_dir ) { + Process::create( Utils\esc_cmd( "cp -r %s/* %s", $src_dir, $dest_dir ) )->run_check(); + } + + public function add_line_to_wp_config( &$wp_config_code, $line ) { + $token = "/* That's all, stop editing!"; + + $wp_config_code = str_replace( $token, "$line\n\n$token", $wp_config_code ); + } + + public function download_wp( $subdir = '' ) { + $dest_dir = $this->variables['RUN_DIR'] . "/$subdir"; + + if ( $subdir ) { + mkdir( $dest_dir ); + } + + self::copy_dir( self::$cache_dir, $dest_dir ); + + // disable emailing + mkdir( $dest_dir . '/wp-content/mu-plugins' ); + copy( __DIR__ . '/../extra/no-mail.php', $dest_dir . '/wp-content/mu-plugins/no-mail.php' ); + } + + public function create_config( $subdir = '', $extra_php = false ) { + $params = self::$db_settings; + + // Replaces all characters that are not alphanumeric or an underscore into an underscore. + $params['dbprefix'] = $subdir ? preg_replace( '#[^a-zA-Z\_0-9]#', '_', $subdir ) : 'wp_'; + + $params['skip-salts'] = true; + + if( false !== $extra_php ) { + $params['extra-php'] = $extra_php; + } + + $config_cache_path = ''; + if ( self::$install_cache_dir ) { + $config_cache_path = self::$install_cache_dir . '/config_' . md5( implode( ':', $params ) . ':subdir=' . $subdir ); + $run_dir = '' !== $subdir ? ( $this->variables['RUN_DIR'] . "/$subdir" ) : $this->variables['RUN_DIR']; + } + + if ( $config_cache_path && file_exists( $config_cache_path ) ) { + copy( $config_cache_path, $run_dir . '/wp-config.php' ); + } else { + $this->proc( 'wp config create', $params, $subdir )->run_check(); + if ( $config_cache_path && file_exists( $run_dir . '/wp-config.php' ) ) { + copy( $run_dir . '/wp-config.php', $config_cache_path ); + } + } + } + + public function install_wp( $subdir = '' ) { + $wp_version_suffix = ( $wp_version = getenv( 'WP_VERSION' ) ) ? "-$wp_version" : ''; + self::$install_cache_dir = sys_get_temp_dir() . '/wp-cli-test-core-install-cache' . $wp_version_suffix; + if ( ! file_exists( self::$install_cache_dir ) ) { + mkdir( self::$install_cache_dir ); + } + + $subdir = $this->replace_variables( $subdir ); + + $this->create_db(); + $this->create_run_dir(); + $this->download_wp( $subdir ); + $this->create_config( $subdir ); + + $install_args = array( + 'url' => 'http://example.com', + 'title' => 'WP CLI Site', + 'admin_user' => 'admin', + 'admin_email' => 'admin@example.com', + 'admin_password' => 'password1' + ); + + $install_cache_path = ''; + if ( self::$install_cache_dir ) { + $install_cache_path = self::$install_cache_dir . '/install_' . md5( implode( ':', $install_args ) . ':subdir=' . $subdir ); + $run_dir = '' !== $subdir ? ( $this->variables['RUN_DIR'] . "/$subdir" ) : $this->variables['RUN_DIR']; + } + + if ( $install_cache_path && file_exists( $install_cache_path ) ) { + self::copy_dir( $install_cache_path, $run_dir ); + self::run_sql( 'mysql --no-defaults', array( 'execute' => "source {$install_cache_path}.sql" ), true /*add_database*/ ); + } else { + $this->proc( 'wp core install', $install_args, $subdir )->run_check(); + if ( $install_cache_path ) { + mkdir( $install_cache_path ); + self::dir_diff_copy( $run_dir, self::$cache_dir, $install_cache_path ); + self::run_sql( 'mysqldump --no-defaults', array( 'result-file' => "{$install_cache_path}.sql" ), true /*add_database*/ ); + } + } + } + + public function install_wp_with_composer( $vendor_directory = 'vendor' ) { + $this->create_run_dir(); + $this->create_db(); + + $yml_path = $this->variables['RUN_DIR'] . "/wp-cli.yml"; + file_put_contents( $yml_path, 'path: wordpress' ); + + $this->composer_command( 'init --name="wp-cli/composer-test" --type="project" --no-interaction' ); + $this->composer_command( 'config vendor-dir ' . $vendor_directory ); + $this->composer_command( 'require johnpbloch/wordpress --optimize-autoloader --no-interaction' ); + + $config_extra_php = "require_once dirname(__DIR__) . '/" . $vendor_directory . "/autoload.php';"; + $this->create_config( 'wordpress', $config_extra_php ); + + $install_args = array( + 'url' => 'http://localhost:8080', + 'title' => 'WP CLI Site with both WordPress and wp-cli as Composer dependencies', + 'admin_user' => 'admin', + 'admin_email' => 'admin@example.com', + 'admin_password' => 'password1' + ); + + $this->proc( 'wp core install', $install_args )->run_check(); + } + + public function composer_add_wp_cli_local_repository() { + if ( ! self::$composer_local_repository ) { + self::$composer_local_repository = sys_get_temp_dir() . '/' . uniqid( "wp-cli-composer-local-", TRUE ); + mkdir( self::$composer_local_repository ); + + $env = self::get_process_env_variables(); + $src = isset( $env['TRAVIS_BUILD_DIR'] ) ? $env['TRAVIS_BUILD_DIR'] : realpath( __DIR__ . '/../../' ); + + self::copy_dir( $src, self::$composer_local_repository . '/' ); + self::remove_dir( self::$composer_local_repository . '/.git' ); + self::remove_dir( self::$composer_local_repository . '/vendor' ); + } + $dest = self::$composer_local_repository . '/'; + $this->composer_command( "config repositories.wp-cli '{\"type\": \"path\", \"url\": \"$dest\", \"options\": {\"symlink\": false}}'" ); + $this->variables['COMPOSER_LOCAL_REPOSITORY'] = self::$composer_local_repository; + } + + public function composer_require_current_wp_cli() { + $this->composer_add_wp_cli_local_repository(); + $this->composer_command( 'require wp-cli/wp-cli:dev-master --optimize-autoloader --no-interaction' ); + } + + public function get_php_binary() { + if ( getenv( 'WP_CLI_PHP_USED' ) ) + return getenv( 'WP_CLI_PHP_USED' ); + + if ( getenv( 'WP_CLI_PHP' ) ) + return getenv( 'WP_CLI_PHP' ); + + if ( defined( 'PHP_BINARY' ) ) + return PHP_BINARY; + + return 'php'; + } + + public function start_php_server() { + $cmd = Utils\esc_cmd( '%s -S %s -t %s -c %s %s', + $this->get_php_binary(), + 'localhost:8080', + $this->variables['RUN_DIR'] . '/wordpress/', + get_cfg_var( 'cfg_file_path' ), + $this->variables['RUN_DIR'] . '/vendor/wp-cli/server-command/router.php' + ); + $this->background_proc( $cmd ); + } + + private function composer_command($cmd) { + if ( !isset( $this->variables['COMPOSER_PATH'] ) ) { + $this->variables['COMPOSER_PATH'] = exec('which composer'); + } + $this->proc( $this->variables['COMPOSER_PATH'] . ' ' . $cmd )->run_check(); + } + + /** + * Initialize run time logging. + */ + private static function log_run_times_before_suite( $event ) { + self::$suite_start_time = microtime( true ); + + Process::$log_run_times = true; + + $travis = getenv( 'TRAVIS' ); + + // Default output settings. + self::$output_to = 'stdout'; + self::$num_top_processes = $travis ? 10 : 40; + self::$num_top_scenarios = $travis ? 10 : 20; + + // Allow setting of above with "WP_CLI_TEST_LOG_RUN_TIMES=<output_to>[,<num_top_processes>][,<num_top_scenarios>]" formatted env var. + if ( preg_match( '/^(stdout|error_log)?(,[0-9]+)?(,[0-9]+)?$/i', self::$log_run_times, $matches ) ) { + if ( isset( $matches[1] ) ) { + self::$output_to = strtolower( $matches[1] ); + } + if ( isset( $matches[2] ) ) { + self::$num_top_processes = max( (int) substr( $matches[2], 1 ), 1 ); + } + if ( isset( $matches[3] ) ) { + self::$num_top_scenarios = max( (int) substr( $matches[3], 1 ), 1 ); + } + } + } + + /** + * Record the start time of the scenario into the `$scenario_run_times` array. + */ + private static function log_run_times_before_scenario( $event ) { + if ( $scenario_key = self::get_scenario_key( $event ) ) { + self::$scenario_run_times[ $scenario_key ] = -microtime( true ); + } + } + + /** + * Save the run time of the scenario into the `$scenario_run_times` array. Only the top `self::$num_top_scenarios` are kept. + */ + private static function log_run_times_after_scenario( $event ) { + if ( $scenario_key = self::get_scenario_key( $event ) ) { + self::$scenario_run_times[ $scenario_key ] += microtime( true ); + self::$scenario_count++; + if ( count( self::$scenario_run_times ) > self::$num_top_scenarios ) { + arsort( self::$scenario_run_times ); + array_pop( self::$scenario_run_times ); + } + } + } + + /** + * Copy files in updated directory that are not in source directory to copy directory. ("Incremental backup".) + * Note: does not deal with changed files (ie does not compare file contents for changes), for speed reasons. + * + * @param string $upd_dir The directory to search looking for files/directories not in `$src_dir`. + * @param string $src_dir The directory to be compared to `$upd_dir`. + * @param string $cop_dir Where to copy any files/directories in `$upd_dir` but not in `$src_dir` to. + */ + private static function dir_diff_copy( $upd_dir, $src_dir, $cop_dir ) { + if ( false === ( $files = scandir( $upd_dir ) ) ) { + $error = error_get_last(); + throw new \RuntimeException( sprintf( "Failed to open updated directory '%s': %s. " . __FILE__ . ':' . __LINE__, $upd_dir, $error['message'] ) ); + } + foreach ( array_diff( $files, array( '.', '..' ) ) as $file ) { + $upd_file = $upd_dir . '/' . $file; + $src_file = $src_dir . '/' . $file; + $cop_file = $cop_dir . '/' . $file; + if ( ! file_exists( $src_file ) ) { + if ( is_dir( $upd_file ) ) { + if ( ! file_exists( $cop_file ) && ! mkdir( $cop_file, 0777, true /*recursive*/ ) ) { + $error = error_get_last(); + throw new \RuntimeException( sprintf( "Failed to create copy directory '%s': %s. " . __FILE__ . ':' . __LINE__, $cop_file, $error['message'] ) ); + } + self::copy_dir( $upd_file, $cop_file ); + } else { + if ( ! copy( $upd_file, $cop_file ) ) { + $error = error_get_last(); + throw new \RuntimeException( sprintf( "Failed to copy '%s' to '%s': %s. " . __FILE__ . ':' . __LINE__, $upd_file, $cop_file, $error['message'] ) ); + } + } + } elseif ( is_dir( $upd_file ) ) { + self::dir_diff_copy( $upd_file, $src_file, $cop_file ); + } + } + } + + /** + * Get the scenario key used for `$scenario_run_times` array. + * Format "<grandparent-dir> <feature-file>:<line-number>", eg "core-command core-update.feature:221". + */ + private static function get_scenario_key( $event ) { + $scenario_key = ''; + if ( $file = self::get_event_file( $event, $line ) ) { + $scenario_grandparent = Utils\basename( dirname( dirname( $file ) ) ); + $scenario_key = $scenario_grandparent . ' ' . Utils\basename( $file ) . ':' . $line; + } + return $scenario_key; + } + + /** + * Print out stats on the run times of processes and scenarios. + */ + private static function log_run_times_after_suite( $event ) { + + $suite = ''; + if ( self::$scenario_run_times ) { + // Grandparent directory is first part of key. + $keys = array_keys( self::$scenario_run_times ); + $suite = substr( $keys[0], 0, strpos( $keys[0], ' ' ) ); + } + + $run_from = Utils\basename( dirname( dirname( __DIR__ ) ) ); + + // Format same as Behat, if have minutes. + $fmt = function ( $time ) { + $mins = floor( $time / 60 ); + return round( $time, 3 ) . ( $mins ? ( ' (' . $mins . 'm' . round( $time - ( $mins * 60 ), 3 ) . 's)' ) : '' ); + }; + + $time = microtime( true ) - self::$suite_start_time; + + $log = PHP_EOL . str_repeat( '(', 80 ) . PHP_EOL; + + // Process and proc method run times. + $run_times = array_merge( Process::$run_times, self::$proc_method_run_times ); + + list( $ptime, $calls ) = array_reduce( $run_times, function ( $carry, $item ) { + return array( $carry[0] + $item[0], $carry[1] + $item[1] ); + }, array( 0, 0 ) ); + + $overhead = $time - $ptime; + $pct = round( ( $overhead / $time ) * 100 ); + $unique = count( $run_times ); + + $log .= sprintf( + PHP_EOL . "Total process run time %s (tests %s, overhead %.3f %d%%), calls %d (%d unique) for '%s' run from '%s'" . PHP_EOL, + $fmt( $ptime ), $fmt( $time ), $overhead, $pct, $calls, $unique, $suite, $run_from + ); + + uasort( $run_times, function ( $a, $b ) { + return $a[0] === $b[0] ? 0 : ( $a[0] < $b[0] ? 1 : -1 ); // Reverse sort. + } ); + + $tops = array_slice( $run_times, 0, self::$num_top_processes, true ); + + $log .= PHP_EOL . "Top " . self::$num_top_processes . " process run times for '$suite'"; + $log .= PHP_EOL . implode( PHP_EOL, array_map( function ( $k, $v, $i ) { + return sprintf( ' %3d. %7.3f %3d %s', $i + 1, round( $v[0], 3 ), $v[1], $k ); + }, array_keys( $tops ), $tops, array_keys( array_keys( $tops ) ) ) ) . PHP_EOL; + + // Scenario run times. + arsort( self::$scenario_run_times ); + + $tops = array_slice( self::$scenario_run_times, 0, self::$num_top_scenarios, true ); + + $log .= PHP_EOL . "Top " . self::$num_top_scenarios . " (of " . self::$scenario_count . ") scenario run times for '$suite'"; + $log .= PHP_EOL . implode( PHP_EOL, array_map( function ( $k, $v, $i ) { + return sprintf( ' %3d. %7.3f %s', $i + 1, round( $v, 3 ), substr( $k, strpos( $k, ' ' ) + 1 ) ); + }, array_keys( $tops ), $tops, array_keys( array_keys( $tops ) ) ) ) . PHP_EOL; + + $log .= PHP_EOL . str_repeat( ')', 80 ); + + if ( 'error_log' === self::$output_to ) { + error_log( $log ); + } else { + echo PHP_EOL . $log; + } + } + + /** + * Log the run time of a proc method (one that doesn't use Process but does (use a function that does) a `proc_open()`). + */ + private static function log_proc_method_run_time( $key, $start_time ) { + $run_time = microtime( true ) - $start_time; + if ( ! isset( self::$proc_method_run_times[ $key ] ) ) { + self::$proc_method_run_times[ $key ] = array( 0, 0 ); + } + self::$proc_method_run_times[ $key ][0] += $run_time; + self::$proc_method_run_times[ $key ][1]++; + } + +} diff --git a/wp-content/plugins/buddypress/cli/features/bootstrap/Process.php b/wp-content/plugins/buddypress/cli/features/bootstrap/Process.php new file mode 100644 index 0000000000000000000000000000000000000000..8032a2415db70e8df3b8cdbfc6ed2fb6afeb0181 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/bootstrap/Process.php @@ -0,0 +1,116 @@ +<?php + +namespace WP_CLI; + +/** + * Run a system process, and learn what happened. + */ +class Process { + /** + * @var string The full command to execute by the system. + */ + private $command; + + /** + * @var string|null The path of the working directory for the process or NULL if not specified (defaults to current working directory). + */ + private $cwd; + + /** + * @var array Environment variables to set when running the command. + */ + private $env; + + /** + * @var array Descriptor spec for `proc_open()`. + */ + private static $descriptors = array( + 0 => STDIN, + 1 => array( 'pipe', 'w' ), + 2 => array( 'pipe', 'w' ), + ); + + /** + * @var bool Whether to log run time info or not. + */ + public static $log_run_times = false; + + /** + * @var array Array of process run time info, keyed by process command, each a 2-element array containing run time and run count. + */ + public static $run_times = array(); + + /** + * @param string $command Command to execute. + * @param string $cwd Directory to execute the command in. + * @param array $env Environment variables to set when running the command. + * + * @return Process + */ + public static function create( $command, $cwd = null, $env = array() ) { + $proc = new self; + + $proc->command = $command; + $proc->cwd = $cwd; + $proc->env = $env; + + return $proc; + } + + private function __construct() {} + + /** + * Run the command. + * + * @return ProcessRun + */ + public function run() { + $start_time = microtime( true ); + + $proc = proc_open( $this->command, self::$descriptors, $pipes, $this->cwd, $this->env ); + + $stdout = stream_get_contents( $pipes[1] ); + fclose( $pipes[1] ); + + $stderr = stream_get_contents( $pipes[2] ); + fclose( $pipes[2] ); + + $return_code = proc_close( $proc ); + + $run_time = microtime( true ) - $start_time; + + if ( self::$log_run_times ) { + if ( ! isset( self::$run_times[ $this->command ] ) ) { + self::$run_times[ $this->command ] = array( 0, 0 ); + } + self::$run_times[ $this->command ][0] += $run_time; + self::$run_times[ $this->command ][1]++; + } + + return new ProcessRun( array( + 'stdout' => $stdout, + 'stderr' => $stderr, + 'return_code' => $return_code, + 'command' => $this->command, + 'cwd' => $this->cwd, + 'env' => $this->env, + 'run_time' => $run_time, + ) ); + } + + /** + * Run the command, but throw an Exception on error. + * + * @return ProcessRun + */ + public function run_check() { + $r = $this->run(); + + // $r->STDERR is incorrect, but kept incorrect for backwards-compat + if ( $r->return_code || !empty( $r->STDERR ) ) { + throw new \RuntimeException( $r ); + } + + return $r; + } +} diff --git a/wp-content/plugins/buddypress/cli/features/bootstrap/ProcessRun.php b/wp-content/plugins/buddypress/cli/features/bootstrap/ProcessRun.php new file mode 100644 index 0000000000000000000000000000000000000000..96b4c80b66f60b6292bb88ff323ce8c73a419e22 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/bootstrap/ProcessRun.php @@ -0,0 +1,68 @@ +<?php + +namespace WP_CLI; + +/** + * Results of an executed command. + */ +class ProcessRun { + /** + * @var string The full command executed by the system. + */ + public $command; + + /** + * @var string Captured output from the process' STDOUT. + */ + public $stdout; + + /** + * @var string Captured output from the process' STDERR. + */ + public $stderr; + + /** + * @var string|null The path of the working directory for the process or NULL if not specified (defaults to current working directory). + */ + public $cwd; + + /** + * @var array Environment variables set for this process. + */ + public $env; + + /** + * @var int Exit code of the process. + */ + public $return_code; + + /** + * @var float The run time of the process. + */ + public $run_time; + + /** + * @var array $props Properties of executed command. + */ + public function __construct( $props ) { + foreach ( $props as $key => $value ) { + $this->$key = $value; + } + } + + /** + * Return properties of executed command as a string. + * + * @return string + */ + public function __toString() { + $out = "$ $this->command\n"; + $out .= "$this->stdout\n$this->stderr"; + $out .= "cwd: $this->cwd\n"; + $out .= "run time: $this->run_time\n"; + $out .= "exit status: $this->return_code"; + + return $out; + } + +} diff --git a/wp-content/plugins/buddypress/cli/features/bootstrap/support.php b/wp-content/plugins/buddypress/cli/features/bootstrap/support.php new file mode 100644 index 0000000000000000000000000000000000000000..a37a064f65c8ef124208f30e91f86334cac9a4f3 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/bootstrap/support.php @@ -0,0 +1,194 @@ +<?php + +// Utility functions used by Behat steps + +function assertEquals( $expected, $actual ) { + if ( $expected != $actual ) { + throw new Exception( "Actual value: " . var_export( $actual, true ) ); + } +} + +function assertNotEquals( $expected, $actual ) { + if ( $expected == $actual ) { + throw new Exception( "Actual value: " . var_export( $actual, true ) ); + } +} + +function assertNumeric( $actual ) { + if ( !is_numeric( $actual ) ) { + throw new Exception( "Actual value: " . var_export( $actual, true ) ); + } +} + +function assertNotNumeric( $actual ) { + if ( is_numeric( $actual ) ) { + throw new Exception( "Actual value: " . var_export( $actual, true ) ); + } +} + +function checkString( $output, $expected, $action, $message = false ) { + switch ( $action ) { + + case 'be': + $r = $expected === rtrim( $output, "\n" ); + break; + + case 'contain': + $r = false !== strpos( $output, $expected ); + break; + + case 'not contain': + $r = false === strpos( $output, $expected ); + break; + + default: + throw new Behat\Behat\Exception\PendingException(); + } + + if ( !$r ) { + if ( false === $message ) + $message = $output; + throw new Exception( $message ); + } +} + +function compareTables( $expected_rows, $actual_rows, $output ) { + // the first row is the header and must be present + if ( $expected_rows[0] != $actual_rows[0] ) { + throw new \Exception( $output ); + } + + unset( $actual_rows[0] ); + unset( $expected_rows[0] ); + + $missing_rows = array_diff( $expected_rows, $actual_rows ); + if ( !empty( $missing_rows ) ) { + throw new \Exception( $output ); + } +} + +function compareContents( $expected, $actual ) { + if ( gettype( $expected ) != gettype( $actual ) ) { + return false; + } + + if ( is_object( $expected ) ) { + foreach ( get_object_vars( $expected ) as $name => $value ) { + if ( ! compareContents( $value, $actual->$name ) ) + return false; + } + } else if ( is_array( $expected ) ) { + foreach ( $expected as $key => $value ) { + if ( ! compareContents( $value, $actual[$key] ) ) + return false; + } + } else { + return $expected === $actual; + } + + return true; +} + +/** + * Compare two strings containing JSON to ensure that @a $actualJson contains at + * least what the JSON string @a $expectedJson contains. + * + * @return whether or not @a $actualJson contains @a $expectedJson + * @retval true @a $actualJson contains @a $expectedJson + * @retval false @a $actualJson does not contain @a $expectedJson + * + * @param[in] $actualJson the JSON string to be tested + * @param[in] $expectedJson the expected JSON string + * + * Examples: + * expected: {'a':1,'array':[1,3,5]} + * + * 1 ) + * actual: {'a':1,'b':2,'c':3,'array':[1,2,3,4,5]} + * return: true + * + * 2 ) + * actual: {'b':2,'c':3,'array':[1,2,3,4,5]} + * return: false + * element 'a' is missing from the root object + * + * 3 ) + * actual: {'a':0,'b':2,'c':3,'array':[1,2,3,4,5]} + * return: false + * the value of element 'a' is not 1 + * + * 4 ) + * actual: {'a':1,'b':2,'c':3,'array':[1,2,4,5]} + * return: false + * the contents of 'array' does not include 3 + */ +function checkThatJsonStringContainsJsonString( $actualJson, $expectedJson ) { + $actualValue = json_decode( $actualJson ); + $expectedValue = json_decode( $expectedJson ); + + if ( !$actualValue ) { + return false; + } + + return compareContents( $expectedValue, $actualValue ); +} + +/** + * Compare two strings to confirm $actualCSV contains $expectedCSV + * Both strings are expected to have headers for their CSVs. + * $actualCSV must match all data rows in $expectedCSV + * + * @param string A CSV string + * @param array A nested array of values + * @return bool Whether $actualCSV contains $expectedCSV + */ +function checkThatCsvStringContainsValues( $actualCSV, $expectedCSV ) { + $actualCSV = array_map( 'str_getcsv', explode( PHP_EOL, $actualCSV ) ); + + if ( empty( $actualCSV ) ) + return false; + + // Each sample must have headers + $actualHeaders = array_values( array_shift( $actualCSV ) ); + $expectedHeaders = array_values( array_shift( $expectedCSV ) ); + + // Each expectedCSV must exist somewhere in actualCSV in the proper column + $expectedResult = 0; + foreach ( $expectedCSV as $expected_row ) { + $expected_row = array_combine( $expectedHeaders, $expected_row ); + foreach ( $actualCSV as $actual_row ) { + + if ( count( $actualHeaders ) != count( $actual_row ) ) + continue; + + $actual_row = array_intersect_key( array_combine( $actualHeaders, $actual_row ), $expected_row ); + if ( $actual_row == $expected_row ) + $expectedResult++; + } + } + + return $expectedResult >= count( $expectedCSV ); +} + +/** + * Compare two strings containing YAML to ensure that @a $actualYaml contains at + * least what the YAML string @a $expectedYaml contains. + * + * @return whether or not @a $actualYaml contains @a $expectedJson + * @retval true @a $actualYaml contains @a $expectedJson + * @retval false @a $actualYaml does not contain @a $expectedJson + * + * @param[in] $actualYaml the YAML string to be tested + * @param[in] $expectedYaml the expected YAML string + */ +function checkThatYamlStringContainsYamlString( $actualYaml, $expectedYaml ) { + $actualValue = Mustangostang\Spyc::YAMLLoad( $actualYaml ); + $expectedValue = Mustangostang\Spyc::YAMLLoad( $expectedYaml ); + + if ( !$actualValue ) { + return false; + } + + return compareContents( $expectedValue, $actualValue ); +} + diff --git a/wp-content/plugins/buddypress/cli/features/bootstrap/utils.php b/wp-content/plugins/buddypress/cli/features/bootstrap/utils.php new file mode 100644 index 0000000000000000000000000000000000000000..ed7a2282c1d260d5590a000358a3f9b5e77f1147 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/bootstrap/utils.php @@ -0,0 +1,1194 @@ +<?php + +// Utilities that do NOT depend on WordPress code. + +namespace WP_CLI\Utils; + +use \Composer\Semver\Comparator; +use \Composer\Semver\Semver; +use \WP_CLI; +use \WP_CLI\Dispatcher; +use \WP_CLI\Iterators\Transform; + +const PHAR_STREAM_PREFIX = 'phar://'; + +function inside_phar() { + return 0 === strpos( WP_CLI_ROOT, PHAR_STREAM_PREFIX ); +} + +// Files that need to be read by external programs have to be extracted from the Phar archive. +function extract_from_phar( $path ) { + if ( ! inside_phar() ) { + return $path; + } + + $fname = basename( $path ); + + $tmp_path = get_temp_dir() . "wp-cli-$fname"; + + copy( $path, $tmp_path ); + + register_shutdown_function( function() use ( $tmp_path ) { + @unlink( $tmp_path ); + } ); + + return $tmp_path; +} + +function load_dependencies() { + if ( inside_phar() ) { + if ( file_exists( WP_CLI_ROOT . '/vendor/autoload.php' ) ) { + require WP_CLI_ROOT . '/vendor/autoload.php'; + } elseif ( file_exists( dirname( dirname( WP_CLI_ROOT ) ) . '/autoload.php' ) ) { + require dirname( dirname( WP_CLI_ROOT ) ) . '/autoload.php'; + } + return; + } + + $has_autoload = false; + + foreach ( get_vendor_paths() as $vendor_path ) { + if ( file_exists( $vendor_path . '/autoload.php' ) ) { + require $vendor_path . '/autoload.php'; + $has_autoload = true; + break; + } + } + + if ( !$has_autoload ) { + fputs( STDERR, "Internal error: Can't find Composer autoloader.\nTry running: composer install\n" ); + exit(3); + } +} + +function get_vendor_paths() { + $vendor_paths = array( + WP_CLI_ROOT . '/../../../vendor', // part of a larger project / installed via Composer (preferred) + WP_CLI_ROOT . '/vendor', // top-level project / installed as Git clone + ); + $maybe_composer_json = WP_CLI_ROOT . '/../../../composer.json'; + if ( file_exists( $maybe_composer_json ) && is_readable( $maybe_composer_json ) ) { + $composer = json_decode( file_get_contents( $maybe_composer_json ) ); + if ( ! empty( $composer->config ) && ! empty( $composer->config->{'vendor-dir'} ) ) { + array_unshift( $vendor_paths, WP_CLI_ROOT . '/../../../' . $composer->config->{'vendor-dir'} ); + } + } + return $vendor_paths; +} + +// Using require() directly inside a class grants access to private methods to the loaded code +function load_file( $path ) { + require_once $path; +} + +function load_command( $name ) { + $path = WP_CLI_ROOT . "/php/commands/$name.php"; + + if ( is_readable( $path ) ) { + include_once $path; + } +} + +/** + * Like array_map(), except it returns a new iterator, instead of a modified array. + * + * Example: + * + * $arr = array('Football', 'Socker'); + * + * $it = iterator_map($arr, 'strtolower', function($val) { + * return str_replace('foo', 'bar', $val); + * }); + * + * foreach ( $it as $val ) { + * var_dump($val); + * } + * + * @param array|object Either a plain array or another iterator + * @param callback The function to apply to an element + * @return object An iterator that applies the given callback(s) + */ +function iterator_map( $it, $fn ) { + if ( is_array( $it ) ) { + $it = new \ArrayIterator( $it ); + } + + if ( !method_exists( $it, 'add_transform' ) ) { + $it = new Transform( $it ); + } + + foreach ( array_slice( func_get_args(), 1 ) as $fn ) { + $it->add_transform( $fn ); + } + + return $it; +} + +/** + * Search for file by walking up the directory tree until the first file is found or until $stop_check($dir) returns true + * @param string|array The files (or file) to search for + * @param string|null The directory to start searching from; defaults to CWD + * @param callable Function which is passed the current dir each time a directory level is traversed + * @return null|string Null if the file was not found + */ +function find_file_upward( $files, $dir = null, $stop_check = null ) { + $files = (array) $files; + if ( is_null( $dir ) ) { + $dir = getcwd(); + } + while ( @is_readable( $dir ) ) { + // Stop walking up when the supplied callable returns true being passed the $dir + if ( is_callable( $stop_check ) && call_user_func( $stop_check, $dir ) ) { + return null; + } + + foreach ( $files as $file ) { + $path = $dir . DIRECTORY_SEPARATOR . $file; + if ( file_exists( $path ) ) { + return $path; + } + } + + $parent_dir = dirname( $dir ); + if ( empty($parent_dir) || $parent_dir === $dir ) { + break; + } + $dir = $parent_dir; + } + return null; +} + +function is_path_absolute( $path ) { + // Windows + if ( isset($path[1]) && ':' === $path[1] ) + return true; + + return $path[0] === '/'; +} + +/** + * Composes positional arguments into a command string. + * + * @param array + * @return string + */ +function args_to_str( $args ) { + return ' ' . implode( ' ', array_map( 'escapeshellarg', $args ) ); +} + +/** + * Composes associative arguments into a command string. + * + * @param array + * @return string + */ +function assoc_args_to_str( $assoc_args ) { + $str = ''; + + foreach ( $assoc_args as $key => $value ) { + if ( true === $value ) { + $str .= " --$key"; + } elseif( is_array( $value ) ) { + foreach( $value as $_ => $v ) { + $str .= assoc_args_to_str( array( $key => $v ) ); + } + } else { + $str .= " --$key=" . escapeshellarg( $value ); + } + } + + return $str; +} + +/** + * Given a template string and an arbitrary number of arguments, + * returns the final command, with the parameters escaped. + */ +function esc_cmd( $cmd ) { + if ( func_num_args() < 2 ) + trigger_error( 'esc_cmd() requires at least two arguments.', E_USER_WARNING ); + + $args = func_get_args(); + + $cmd = array_shift( $args ); + + return vsprintf( $cmd, array_map( 'escapeshellarg', $args ) ); +} + +function locate_wp_config() { + static $path; + + if ( null === $path ) { + if ( file_exists( ABSPATH . 'wp-config.php' ) ) + $path = ABSPATH . 'wp-config.php'; + elseif ( file_exists( ABSPATH . '../wp-config.php' ) && ! file_exists( ABSPATH . '/../wp-settings.php' ) ) + $path = ABSPATH . '../wp-config.php'; + else + $path = false; + + if ( $path ) + $path = realpath( $path ); + } + + return $path; +} + +function wp_version_compare( $since, $operator ) { + return version_compare( str_replace( array( '-src' ), '', $GLOBALS['wp_version'] ), $since, $operator ); +} + +/** + * Render a collection of items as an ASCII table, JSON, CSV, YAML, list of ids, or count. + * + * Given a collection of items with a consistent data structure: + * + * ``` + * $items = array( + * array( + * 'key' => 'foo', + * 'value' => 'bar', + * ) + * ); + * ``` + * + * Render `$items` as an ASCII table: + * + * ``` + * WP_CLI\Utils\format_items( 'table', $items, array( 'key', 'value' ) ); + * + * # +-----+-------+ + * # | key | value | + * # +-----+-------+ + * # | foo | bar | + * # +-----+-------+ + * ``` + * + * Or render `$items` as YAML: + * + * ``` + * WP_CLI\Utils\format_items( 'yaml', $items, array( 'key', 'value' ) ); + * + * # --- + * # - + * # key: foo + * # value: bar + * ``` + * + * @access public + * @category Output + * + * @param string $format Format to use: 'table', 'json', 'csv', 'yaml', 'ids', 'count' + * @param array $items An array of items to output. + * @param array|string $fields Named fields for each item of data. Can be array or comma-separated list. + * @return null + */ +function format_items( $format, $items, $fields ) { + $assoc_args = compact( 'format', 'fields' ); + $formatter = new \WP_CLI\Formatter( $assoc_args ); + $formatter->display_items( $items ); +} + +/** + * Write data as CSV to a given file. + * + * @access public + * + * @param resource $fd File descriptor + * @param array $rows Array of rows to output + * @param array $headers List of CSV columns (optional) + */ +function write_csv( $fd, $rows, $headers = array() ) { + if ( ! empty( $headers ) ) { + fputcsv( $fd, $headers ); + } + + foreach ( $rows as $row ) { + if ( ! empty( $headers ) ) { + $row = pick_fields( $row, $headers ); + } + + fputcsv( $fd, array_values( $row ) ); + } +} + +/** + * Pick fields from an associative array or object. + * + * @param array|object Associative array or object to pick fields from + * @param array List of fields to pick + * @return array + */ +function pick_fields( $item, $fields ) { + $item = (object) $item; + + $values = array(); + + foreach ( $fields as $field ) { + $values[ $field ] = isset( $item->$field ) ? $item->$field : null; + } + + return $values; +} + +/** + * Launch system's $EDITOR for the user to edit some text. + * + * @access public + * @category Input + * + * @param string $content Some form of text to edit (e.g. post content) + * @return string|bool Edited text, if file is saved from editor; false, if no change to file. + */ +function launch_editor_for_input( $input, $filename = 'WP-CLI' ) { + + check_proc_available( 'launch_editor_for_input' ); + + $tmpdir = get_temp_dir(); + + do { + $tmpfile = basename( $filename ); + $tmpfile = preg_replace( '|\.[^.]*$|', '', $tmpfile ); + $tmpfile .= '-' . substr( md5( rand() ), 0, 6 ); + $tmpfile = $tmpdir . $tmpfile . '.tmp'; + $fp = @fopen( $tmpfile, 'x' ); + if ( ! $fp && is_writable( $tmpdir ) && file_exists( $tmpfile ) ) { + $tmpfile = ''; + continue; + } + if ( $fp ) { + fclose( $fp ); + } + } while( ! $tmpfile ); + + if ( ! $tmpfile ) { + \WP_CLI::error( 'Error creating temporary file.' ); + } + + $output = ''; + file_put_contents( $tmpfile, $input ); + + $editor = getenv( 'EDITOR' ); + if ( !$editor ) { + if ( isset( $_SERVER['OS'] ) && false !== strpos( $_SERVER['OS'], 'indows' ) ) + $editor = 'notepad'; + else + $editor = 'vi'; + } + + $descriptorspec = array( STDIN, STDOUT, STDERR ); + $process = proc_open( "$editor " . escapeshellarg( $tmpfile ), $descriptorspec, $pipes ); + $r = proc_close( $process ); + if ( $r ) { + exit( $r ); + } + + $output = file_get_contents( $tmpfile ); + + unlink( $tmpfile ); + + if ( $output === $input ) + return false; + + return $output; +} + +/** + * @param string MySQL host string, as defined in wp-config.php + * @return array + */ +function mysql_host_to_cli_args( $raw_host ) { + $assoc_args = array(); + + $host_parts = explode( ':', $raw_host ); + if ( count( $host_parts ) == 2 ) { + list( $assoc_args['host'], $extra ) = $host_parts; + $extra = trim( $extra ); + if ( is_numeric( $extra ) ) { + $assoc_args['port'] = intval( $extra ); + $assoc_args['protocol'] = 'tcp'; + } else if ( $extra !== '' ) { + $assoc_args['socket'] = $extra; + } + } else { + $assoc_args['host'] = $raw_host; + } + + return $assoc_args; +} + +function run_mysql_command( $cmd, $assoc_args, $descriptors = null ) { + check_proc_available( 'run_mysql_command' ); + + if ( !$descriptors ) + $descriptors = array( STDIN, STDOUT, STDERR ); + + if ( isset( $assoc_args['host'] ) ) { + $assoc_args = array_merge( $assoc_args, mysql_host_to_cli_args( $assoc_args['host'] ) ); + } + + $pass = $assoc_args['pass']; + unset( $assoc_args['pass'] ); + + $old_pass = getenv( 'MYSQL_PWD' ); + putenv( 'MYSQL_PWD=' . $pass ); + + $final_cmd = force_env_on_nix_systems( $cmd ) . assoc_args_to_str( $assoc_args ); + + $proc = proc_open( $final_cmd, $descriptors, $pipes ); + if ( !$proc ) + exit(1); + + $r = proc_close( $proc ); + + putenv( 'MYSQL_PWD=' . $old_pass ); + + if ( $r ) exit( $r ); +} + +/** + * Render PHP or other types of files using Mustache templates. + * + * IMPORTANT: Automatic HTML escaping is disabled! + */ +function mustache_render( $template_name, $data = array() ) { + if ( ! file_exists( $template_name ) ) + $template_name = WP_CLI_ROOT . "/templates/$template_name"; + + $template = file_get_contents( $template_name ); + + $m = new \Mustache_Engine( array( + 'escape' => function ( $val ) { return $val; }, + ) ); + + return $m->render( $template, $data ); +} + +/** + * Create a progress bar to display percent completion of a given operation. + * + * Progress bar is written to STDOUT, and disabled when command is piped. Progress + * advances with `$progress->tick()`, and completes with `$progress->finish()`. + * Process bar also indicates elapsed time and expected total time. + * + * ``` + * # `wp user generate` ticks progress bar each time a new user is created. + * # + * # $ wp user generate --count=500 + * # Generating users 22 % [=======> ] 0:05 / 0:23 + * + * $progress = \WP_CLI\Utils\make_progress_bar( 'Generating users', $count ); + * for ( $i = 0; $i < $count; $i++ ) { + * // uses wp_insert_user() to insert the user + * $progress->tick(); + * } + * $progress->finish(); + * ``` + * + * @access public + * @category Output + * + * @param string $message Text to display before the progress bar. + * @param integer $count Total number of ticks to be performed. + * @return cli\progress\Bar|WP_CLI\NoOp + */ +function make_progress_bar( $message, $count ) { + if ( \cli\Shell::isPiped() ) + return new \WP_CLI\NoOp; + + return new \cli\progress\Bar( $message, $count ); +} + +function parse_url( $url ) { + $url_parts = \parse_url( $url ); + + if ( !isset( $url_parts['scheme'] ) ) { + $url_parts = parse_url( 'http://' . $url ); + } + + return $url_parts; +} + +/** + * Check if we're running in a Windows environment (cmd.exe). + * + * @return bool + */ +function is_windows() { + return false !== ( $test_is_windows = getenv( 'WP_CLI_TEST_IS_WINDOWS' ) ) ? (bool) $test_is_windows : strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; +} + +/** + * Replace magic constants in some PHP source code. + * + * @param string $source The PHP code to manipulate. + * @param string $path The path to use instead of the magic constants + */ +function replace_path_consts( $source, $path ) { + $replacements = array( + '__FILE__' => "'$path'", + '__DIR__' => "'" . dirname( $path ) . "'", + ); + + $old = array_keys( $replacements ); + $new = array_values( $replacements ); + + return str_replace( $old, $new, $source ); +} + +/** + * Make a HTTP request to a remote URL. + * + * Wraps the Requests HTTP library to ensure every request includes a cert. + * + * ``` + * # `wp core download` verifies the hash for a downloaded WordPress archive + * + * $md5_response = Utils\http_request( 'GET', $download_url . '.md5' ); + * if ( 20 != substr( $md5_response->status_code, 0, 2 ) ) { + * WP_CLI::error( "Couldn't access md5 hash for release (HTTP code {$response->status_code})" ); + * } + * ``` + * + * @access public + * + * @param string $method HTTP method (GET, POST, DELETE, etc.) + * @param string $url URL to make the HTTP request to. + * @param array $headers Add specific headers to the request. + * @param array $options + * @return object + */ +function http_request( $method, $url, $data = null, $headers = array(), $options = array() ) { + + $cert_path = '/rmccue/requests/library/Requests/Transport/cacert.pem'; + if ( inside_phar() ) { + // cURL can't read Phar archives + $options['verify'] = extract_from_phar( + WP_CLI_VENDOR_DIR . $cert_path ); + } else { + foreach( get_vendor_paths() as $vendor_path ) { + if ( file_exists( $vendor_path . $cert_path ) ) { + $options['verify'] = $vendor_path . $cert_path; + break; + } + } + if ( empty( $options['verify'] ) ){ + WP_CLI::error( "Cannot find SSL certificate." ); + } + } + + try { + $request = \Requests::request( $url, $headers, $data, $method, $options ); + return $request; + } catch( \Requests_Exception $ex ) { + // CURLE_SSL_CACERT_BADFILE only defined for PHP >= 7. + if ( 'curlerror' !== $ex->getType() || ! in_array( curl_errno( $ex->getData() ), array( CURLE_SSL_CONNECT_ERROR, CURLE_SSL_CERTPROBLEM, 77 /*CURLE_SSL_CACERT_BADFILE*/ ), true ) ) { + \WP_CLI::error( sprintf( "Failed to get url '%s': %s.", $url, $ex->getMessage() ) ); + } + // Handle SSL certificate issues gracefully + \WP_CLI::warning( sprintf( "Re-trying without verify after failing to get verified url '%s' %s.", $url, $ex->getMessage() ) ); + $options['verify'] = false; + try { + return \Requests::request( $url, $headers, $data, $method, $options ); + } catch( \Requests_Exception $ex ) { + \WP_CLI::error( sprintf( "Failed to get non-verified url '%s' %s.", $url, $ex->getMessage() ) ); + } + } +} + +/** + * Increments a version string using the "x.y.z-pre" format + * + * Can increment the major, minor or patch number by one + * If $new_version == "same" the version string is not changed + * If $new_version is not a known keyword, it will be used as the new version string directly + * + * @param string $current_version + * @param string $new_version + * @return string + */ +function increment_version( $current_version, $new_version ) { + // split version assuming the format is x.y.z-pre + $current_version = explode( '-', $current_version, 2 ); + $current_version[0] = explode( '.', $current_version[0] ); + + switch ( $new_version ) { + case 'same': + // do nothing + break; + + case 'patch': + $current_version[0][2]++; + + $current_version = array( $current_version[0] ); // drop possible pre-release info + break; + + case 'minor': + $current_version[0][1]++; + $current_version[0][2] = 0; + + $current_version = array( $current_version[0] ); // drop possible pre-release info + break; + + case 'major': + $current_version[0][0]++; + $current_version[0][1] = 0; + $current_version[0][2] = 0; + + $current_version = array( $current_version[0] ); // drop possible pre-release info + break; + + default: // not a keyword + $current_version = array( array( $new_version ) ); + break; + } + + // reconstruct version string + $current_version[0] = implode( '.', $current_version[0] ); + $current_version = implode( '-', $current_version ); + + return $current_version; +} + +/** + * Compare two version strings to get the named semantic version. + * + * @access public + * + * @param string $new_version + * @param string $original_version + * @return string $name 'major', 'minor', 'patch' + */ +function get_named_sem_ver( $new_version, $original_version ) { + + if ( ! Comparator::greaterThan( $new_version, $original_version ) ) { + return ''; + } + + $parts = explode( '-', $original_version ); + $bits = explode( '.', $parts[0] ); + $major = $bits[0]; + if ( isset( $bits[1] ) ) { + $minor = $bits[1]; + } + if ( isset( $bits[2] ) ) { + $patch = $bits[2]; + } + + if ( ! is_null( $minor ) && Semver::satisfies( $new_version, "{$major}.{$minor}.x" ) ) { + return 'patch'; + } else if ( Semver::satisfies( $new_version, "{$major}.x.x" ) ) { + return 'minor'; + } else { + return 'major'; + } +} + +/** + * Return the flag value or, if it's not set, the $default value. + * + * Because flags can be negated (e.g. --no-quiet to negate --quiet), this + * function provides a safer alternative to using + * `isset( $assoc_args['quiet'] )` or similar. + * + * @access public + * @category Input + * + * @param array $assoc_args Arguments array. + * @param string $flag Flag to get the value. + * @param mixed $default Default value for the flag. Default: NULL + * @return mixed + */ +function get_flag_value( $assoc_args, $flag, $default = null ) { + return isset( $assoc_args[ $flag ] ) ? $assoc_args[ $flag ] : $default; +} + +/** + * Get the home directory. + * + * @access public + * @category System + * + * @return string + */ +function get_home_dir() { + $home = getenv( 'HOME' ); + if ( ! $home ) { + // In Windows $HOME may not be defined + $home = getenv( 'HOMEDRIVE' ) . getenv( 'HOMEPATH' ); + } + + return rtrim( $home, '/\\' ); +} + +/** + * Appends a trailing slash. + * + * @access public + * @category System + * + * @param string $string What to add the trailing slash to. + * @return string String with trailing slash added. + */ +function trailingslashit( $string ) { + return rtrim( $string, '/\\' ) . '/'; +} + +/** + * Get the system's temp directory. Warns user if it isn't writable. + * + * @access public + * @category System + * + * @return string + */ +function get_temp_dir() { + static $temp = ''; + + if ( $temp ) { + return $temp; + } + + // `sys_get_temp_dir()` introduced PHP 5.2.1. + if ( $try = sys_get_temp_dir() ) { + $temp = trailingslashit( $try ); + } elseif ( $try = ini_get( 'upload_tmp_dir' ) ) { + $temp = trailingslashit( $try ); + } else { + $temp = '/tmp/'; + } + + if ( ! @is_writable( $temp ) ) { + \WP_CLI::warning( "Temp directory isn't writable: {$temp}" ); + } + + return $temp; +} + +/** + * Parse a SSH url for its host, port, and path. + * + * Similar to parse_url(), but adds support for defined SSH aliases. + * + * ``` + * host OR host/path/to/wordpress OR host:port/path/to/wordpress + * ``` + * + * @access public + * + * @return mixed + */ +function parse_ssh_url( $url, $component = -1 ) { + preg_match( '#^((docker|docker\-compose|ssh|vagrant):)?(([^@:]+)@)?([^:/~]+)(:([\d]*))?((/|~)(.+))?$#', $url, $matches ); + $bits = array(); + foreach( array( + 2 => 'scheme', + 4 => 'user', + 5 => 'host', + 7 => 'port', + 8 => 'path', + ) as $i => $key ) { + if ( ! empty( $matches[ $i ] ) ) { + $bits[ $key ] = $matches[ $i ]; + } + } + switch ( $component ) { + case PHP_URL_SCHEME: + return isset( $bits['scheme'] ) ? $bits['scheme'] : null; + case PHP_URL_USER: + return isset( $bits['user'] ) ? $bits['user'] : null; + case PHP_URL_HOST: + return isset( $bits['host'] ) ? $bits['host'] : null; + case PHP_URL_PATH: + return isset( $bits['path'] ) ? $bits['path'] : null; + case PHP_URL_PORT: + return isset( $bits['port'] ) ? $bits['port'] : null; + default: + return $bits; + } +} + +/** + * Report the results of the same operation against multiple resources. + * + * @access public + * @category Input + * + * @param string $noun Resource being affected (e.g. plugin) + * @param string $verb Type of action happening to the noun (e.g. activate) + * @param integer $total Total number of resource being affected. + * @param integer $successes Number of successful operations. + * @param integer $failures Number of failures. + */ +function report_batch_operation_results( $noun, $verb, $total, $successes, $failures ) { + $plural_noun = $noun . 's'; + $past_tense_verb = past_tense_verb( $verb ); + $past_tense_verb_upper = ucfirst( $past_tense_verb ); + if ( $failures ) { + if ( $successes ) { + WP_CLI::error( "Only {$past_tense_verb} {$successes} of {$total} {$plural_noun}." ); + } else { + WP_CLI::error( "No {$plural_noun} {$past_tense_verb}." ); + } + } else { + if ( $successes ) { + WP_CLI::success( "{$past_tense_verb_upper} {$successes} of {$total} {$plural_noun}." ); + } else { + $message = $total > 1 ? ucfirst( $plural_noun ) : ucfirst( $noun ); + WP_CLI::success( "{$message} already {$past_tense_verb}." ); + } + } +} + +/** + * Parse a string of command line arguments into an $argv-esqe variable. + * + * @access public + * @category Input + * + * @param string $arguments + * @return array + */ +function parse_str_to_argv( $arguments ) { + preg_match_all ('/(?<=^|\s)([\'"]?)(.+?)(?<!\\\\)\1(?=$|\s)/', $arguments, $matches ); + $argv = isset( $matches[0] ) ? $matches[0] : array(); + $argv = array_map( function( $arg ){ + foreach( array( '"', "'" ) as $char ) { + if ( $char === substr( $arg, 0, 1 ) && $char === substr( $arg, -1 ) ) { + $arg = substr( $arg, 1, -1 ); + break; + } + } + return $arg; + }, $argv ); + return $argv; +} + +/** + * Locale-independent version of basename() + * + * @access public + * + * @param string $path + * @param string $suffix + * @return string + */ +function basename( $path, $suffix = '' ) { + return urldecode( \basename( str_replace( array( '%2F', '%5C' ), '/', urlencode( $path ) ), $suffix ) ); +} + +/** + * Checks whether the output of the current script is a TTY or a pipe / redirect + * + * Returns true if STDOUT output is being redirected to a pipe or a file; false is + * output is being sent directly to the terminal. + * + * If an env variable SHELL_PIPE exists, returned result depends it's + * value. Strings like 1, 0, yes, no, that validate to booleans are accepted. + * + * To enable ASCII formatting even when shell is piped, use the + * ENV variable SHELL_PIPE=0 + * + * @access public + * + * @return bool + */ +function isPiped() { + $shellPipe = getenv('SHELL_PIPE'); + + if ($shellPipe !== false) { + return filter_var($shellPipe, FILTER_VALIDATE_BOOLEAN); + } else { + return (function_exists('posix_isatty') && !posix_isatty(STDOUT)); + } +} + +/** + * Expand within paths to their matching paths. + * + * Has no effect on paths which do not use glob patterns. + * + * @param string|array $paths Single path as a string, or an array of paths. + * @param int $flags Optional. Flags to pass to glob. Defaults to GLOB_BRACE. + * + * @return array Expanded paths. + */ +function expand_globs( $paths, $flags = 'default' ) { + // Compatibility for systems without GLOB_BRACE. + $glob_func = 'glob'; + if ( 'default' === $flags ) { + if ( ! defined( 'GLOB_BRACE' ) || getenv( 'WP_CLI_TEST_EXPAND_GLOBS_NO_GLOB_BRACE' ) ) { + $glob_func = 'WP_CLI\Utils\glob_brace'; + } else { + $flags = GLOB_BRACE; + } + } + + $expanded = array(); + + foreach ( (array) $paths as $path ) { + $matching = array( $path ); + + if ( preg_match( '/[' . preg_quote( '*?[]{}!', '/' ) . ']/', $path ) ) { + $matching = $glob_func( $path, $flags ) ?: array(); + } + $expanded = array_merge( $expanded, $matching ); + } + + return array_values( array_unique( $expanded ) ); +} + +/** + * Simulate a `glob()` with the `GLOB_BRACE` flag set. For systems (eg Alpine Linux) built against a libc library (eg https://www.musl-libc.org/) that lacks it. + * Copied and adapted from Zend Framework's `Glob::fallbackGlob()` and Glob::nextBraceSub()`. + * + * Zend Framework (http://framework.zend.com/) + * + * @link http://github.com/zendframework/zf2 for the canonical source repository + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + * + * @param string $pattern Filename pattern. + * @param void $dummy_flags Not used. + * + * @return array Array of paths. + */ +function glob_brace( $pattern, $dummy_flags = null ) { + + static $next_brace_sub; + if ( ! $next_brace_sub ) { + // Find the end of the subpattern in a brace expression. + $next_brace_sub = function ( $pattern, $current ) { + $length = strlen( $pattern ); + $depth = 0; + + while ( $current < $length ) { + if ( '\\' === $pattern[ $current ] ) { + if ( ++$current === $length ) { + break; + } + $current++; + } else { + if ( ( '}' === $pattern[ $current ] && $depth-- === 0 ) || ( ',' === $pattern[ $current ] && 0 === $depth ) ) { + break; + } elseif ( '{' === $pattern[ $current++ ] ) { + $depth++; + } + } + } + + return $current < $length ? $current : null; + }; + } + + $length = strlen( $pattern ); + + // Find first opening brace. + for ( $begin = 0; $begin < $length; $begin++ ) { + if ( '\\' === $pattern[ $begin ] ) { + $begin++; + } elseif ( '{' === $pattern[ $begin ] ) { + break; + } + } + + // Find comma or matching closing brace. + if ( null === ( $next = $next_brace_sub( $pattern, $begin + 1 ) ) ) { + return glob( $pattern ); + } + + $rest = $next; + + // Point `$rest` to matching closing brace. + while ( '}' !== $pattern[ $rest ] ) { + if ( null === ( $rest = $next_brace_sub( $pattern, $rest + 1 ) ) ) { + return glob( $pattern ); + } + } + + $paths = array(); + $p = $begin + 1; + + // For each comma-separated subpattern. + do { + $subpattern = substr( $pattern, 0, $begin ) + . substr( $pattern, $p, $next - $p ) + . substr( $pattern, $rest + 1 ); + + if ( ( $result = glob_brace( $subpattern ) ) ) { + $paths = array_merge( $paths, $result ); + } + + if ( '}' === $pattern[ $next ] ) { + break; + } + + $p = $next + 1; + $next = $next_brace_sub( $pattern, $p ); + } while ( null !== $next ); + + return array_values( array_unique( $paths ) ); +} + +/** + * Get the closest suggestion for a mis-typed target term amongst a list of + * options. + * + * Uses the Levenshtein algorithm to calculate the relative "distance" between + * terms. + * + * If the "distance" to the closest term is higher than the threshold, an empty + * string is returned. + * + * @param string $target Target term to get a suggestion for. + * @param array $options Array with possible options. + * @param int $threshold Threshold above which to return an empty string. + * + * @return string + */ +function get_suggestion( $target, array $options, $threshold = 2 ) { + if ( empty( $options ) ) { + return ''; + } + foreach ( $options as $option ) { + $distance = levenshtein( $option, $target ); + $levenshtein[ $option ] = $distance; + } + + // Sort known command strings by distance to user entry. + asort( $levenshtein ); + + // Fetch the closest command string. + reset( $levenshtein ); + $suggestion = key( $levenshtein ); + + // Only return a suggestion if below a given threshold. + return $levenshtein[ $suggestion ] <= $threshold && $suggestion !== $target + ? (string) $suggestion + : ''; +} + +/** + * Get a Phar-safe version of a path. + * + * For paths inside a Phar, this strips the outer filesystem's location to + * reduce the path to what it needs to be within the Phar archive. + * + * Use the __FILE__ or __DIR__ constants as a starting point. + * + * @param string $path An absolute path that might be within a Phar. + * + * @return string A Phar-safe version of the path. + */ +function phar_safe_path( $path ) { + + if ( ! inside_phar() ) { + return $path; + } + + return str_replace( + PHAR_STREAM_PREFIX . WP_CLI_PHAR_PATH . '/', + PHAR_STREAM_PREFIX, + $path + ); +} + +/** + * Check whether a given Command object is part of the bundled set of + * commands. + * + * This function accepts both a fully qualified class name as a string as + * well as an object that extends `WP_CLI\Dispatcher\CompositeCommand`. + * + * @param \WP_CLI\Dispatcher\CompositeCommand|string $command + * + * @return bool + */ +function is_bundled_command( $command ) { + static $classes; + + if ( null === $classes ) { + $classes = array(); + $class_map = WP_CLI_VENDOR_DIR . '/composer/autoload_commands_classmap.php'; + if ( file_exists( WP_CLI_VENDOR_DIR . '/composer/') ) { + $classes = include $class_map; + } + } + + if ( is_object( $command ) ) { + $command = get_class( $command ); + } + + return is_string( $command ) + ? array_key_exists( $command, $classes ) + : false; +} + +/** + * Maybe prefix command string with "/usr/bin/env". + * Removes (if there) if Windows, adds (if not there) if not. + * + * @param string $command + * + * @return string + */ +function force_env_on_nix_systems( $command ) { + $env_prefix = '/usr/bin/env '; + $env_prefix_len = strlen( $env_prefix ); + if ( is_windows() ) { + if ( 0 === strncmp( $command, $env_prefix, $env_prefix_len ) ) { + $command = substr( $command, $env_prefix_len ); + } + } else { + if ( 0 !== strncmp( $command, $env_prefix, $env_prefix_len ) ) { + $command = $env_prefix . $command; + } + } + return $command; +} + +/** + * Check that `proc_open()` and `proc_close()` haven't been disabled. + * + * @param string $context Optional. If set will appear in error message. Default null. + * @param bool $return Optional. If set will return false rather than error out. Default false. + * + * @return bool + */ +function check_proc_available( $context = null, $return = false ) { + if ( ! function_exists( 'proc_open' ) || ! function_exists( 'proc_close' ) ) { + if ( $return ) { + return false; + } + $msg = 'The PHP functions `proc_open()` and/or `proc_close()` are disabled. Please check your PHP ini directive `disable_functions` or suhosin settings.'; + if ( $context ) { + WP_CLI::error( sprintf( "Cannot do '%s': %s", $context, $msg ) ); + } else { + WP_CLI::error( $msg ); + } + } + return true; +} + +/** + * Returns past tense of verb, with limited accuracy. Only regular verbs catered for, apart from "reset". + * + * @param string $verb Verb to return past tense of. + * + * @return string + */ +function past_tense_verb( $verb ) { + static $irregular = array( 'reset' => 'reset' ); + if ( isset( $irregular[ $verb ] ) ) { + return $irregular[ $verb ]; + } + $last = substr( $verb, -1 ); + if ( 'e' === $last ) { + $verb = substr( $verb, 0, -1 ); + } elseif ( 'y' === $last && ! preg_match( '/[aeiou]y$/', $verb ) ) { + $verb = substr( $verb, 0, -1 ) . 'i'; + } elseif ( preg_match( '/^[^aeiou]*[aeiou][^aeiouhwxy]$/', $verb ) ) { + // Rule of thumb that most (all?) one-voweled regular verbs ending in vowel + consonant (excluding "h", "w", "x", "y") double their final consonant - misses many cases (eg "submit"). + $verb .= $last; + } + return $verb . 'ed'; +} diff --git a/wp-content/plugins/buddypress/cli/features/component.feature b/wp-content/plugins/buddypress/cli/features/component.feature new file mode 100644 index 0000000000000000000000000000000000000000..2fbc043bf641327074bc19a4367e0f93165ce4f4 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/component.feature @@ -0,0 +1,46 @@ +Feature: Manage BuddyPress Components + + Scenario: Component CRUD Operations + Given a BP install + + When I run `wp bp component list --format=count` + Then STDOUT should be: + """ + 10 + """ + + When I run `wp bp component list --type=required --format=count` + Then STDOUT should be: + """ + 2 + """ + + When I run `wp bp component list --type=required` + Then STDOUT should be a table containing rows: + | number | id | status | title | description | + | 1 | core | Active | BuddyPress Core | It‘s what makes <del>time travel</del> BuddyPress possible! | + | 2 | members | Inactive | Community Members | Everything in a BuddyPress community revolves around its members. | + + When I run `wp bp component list --fields=id --type=required` + Then STDOUT should be a table containing rows: + | id | + | core | + | members | + + When I run `wp bp component deactivate groups` + Then STDOUT should contain: + """ + Success: The Groups component has been deactivated. + """ + + When I try `wp bp component deactivate groups` + Then the return code should be 1 + + When I run `wp bp component activate groups` + Then STDOUT should contain: + """ + Success: The Groups component has been activated. + """ + + When I try `wp bp component activate groups` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/features/email.feature b/wp-content/plugins/buddypress/cli/features/email.feature new file mode 100644 index 0000000000000000000000000000000000000000..44330345b446ee48672cf112a7317981f80368ae --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/email.feature @@ -0,0 +1,10 @@ +Feature: Manage BuddyPress Emails + + Scenario: BuddyPress reinstall emails + Given a BP install + + When I run `wp bp email reinstall --yes` + Then STDOUT should contain: + """ + Success: Emails have been successfully reinstalled. + """ diff --git a/wp-content/plugins/buddypress/cli/features/extra/no-mail.php b/wp-content/plugins/buddypress/cli/features/extra/no-mail.php new file mode 100644 index 0000000000000000000000000000000000000000..de7a422724a4d9a41df2d19bb3f295281ce3d97a --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/extra/no-mail.php @@ -0,0 +1,7 @@ +<?php + +function wp_mail( $to ) { + // Log for testing purposes + WP_CLI::log( "WP-CLI test suite: Sent email to {$to}." ); +} + diff --git a/wp-content/plugins/buddypress/cli/features/friend.feature b/wp-content/plugins/buddypress/cli/features/friend.feature new file mode 100644 index 0000000000000000000000000000000000000000..247aef44a7901f8b6e4a7d71cf18fd94c73caa9a --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/friend.feature @@ -0,0 +1,56 @@ +Feature: Manage BuddyPress Friends + + Scenario: Friends CRUD Operations + Given a BP install + + When I try `wp user get bogus-user` + Then the return code should be 1 + And STDOUT should be empty + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {BOB_ID} + + When I run `wp user create testuser2 testuser2@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SALLY_ID} + + When I run `wp user create testuser3 testuser3@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {JOHN_ID} + + When I run `wp bp friend create {BOB_ID} {SALLY_ID} --force-accept` + Then STDOUT should contain: + """ + Success: Friendship successfully created. + """ + + When I run `wp bp friend check {BOB_ID} {SALLY_ID}` + Then STDOUT should contain: + """ + Success: Yes, they are friends. + """ + + When I run `wp bp friend create {BOB_ID} {JOHN_ID} --force-accept` + Then STDOUT should contain: + """ + Success: Friendship successfully created. + """ + + When I run `wp bp friend list {BOB_ID} --fields=friend_user_id,is_confirmed` + Then STDOUT should be a table containing rows: + | friend_user_id | is_confirmed | + | {SALLY_ID} | 1 | + | {JOHN_ID} | 1 | + + When I run `wp bp friend remove {BOB_ID} {SALLY_ID}` + Then STDOUT should contain: + """ + Success: Friendship successfully removed. + """ + + When I run `wp bp friend remove {BOB_ID} {JOHN_ID}` + Then STDOUT should contain: + """ + Success: Friendship successfully removed. + """ diff --git a/wp-content/plugins/buddypress/cli/features/group-invite.feature b/wp-content/plugins/buddypress/cli/features/group-invite.feature new file mode 100644 index 0000000000000000000000000000000000000000..29278537383dee3bd5caffb03b6d61636630f53f --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/group-invite.feature @@ -0,0 +1,62 @@ +Feature: Manage BuddyPress Group Invites + + Scenario: Group Invite CRUD Operations + Given a BP install + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ID} + + When I run `wp user create inviter inviter@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {INVITER_ID} + + When I run `wp bp group create --name="Cool Group" --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp group invite create --group-id={GROUP_ID} --user-id={MEMBER_ID} --inviter-id={INVITER_ID}` + Then STDOUT should contain: + """ + Success: Member invited to the group. + """ + + When I run `wp bp group invite remove --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: User uninvited from the group. + """ + + When I run `wp bp group invite accept --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: User is now a "member" of the group. + """ + + Scenario: Group Invite list + Given a BP install + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ONE_ID} + + When I run `wp user create testuser2 testuser2@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_TWO_ID} + + When I run `wp bp group create --name="Group 1" --slug=group1 --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ONE_ID} + + When I run `wp bp group create --name="Group 2" --slug=group2 --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_TWO_ID} + + When I run `wp bp group invite create --group-id={GROUP_ONE_ID} --user-id={MEMBER_ONE_ID} --inviter-id={MEMBER_TWO_ID}` + Then the return code should be 0 + + When I run `wp bp group invite create --group-id={GROUP_TWO_ID} --user-id={MEMBER_TWO_ID} --inviter-id={MEMBER_ONE_ID}` + Then the return code should be 0 + + When I try `wp bp group invite list` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/features/group-member.feature b/wp-content/plugins/buddypress/cli/features/group-member.feature new file mode 100644 index 0000000000000000000000000000000000000000..da2364cd78a5e940501c51ff0a17d59a6151bd94 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/group-member.feature @@ -0,0 +1,79 @@ +Feature: Manage BuddyPress Group Members + + Scenario: Group Member CRUD Operations + Given a BP install + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {CREATOR_ID} + + When I run `wp user create mod mod@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ID} + + When I run `wp bp group create --name="Totally Cool Group" --creator-id={CREATOR_ID} --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp group member create --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: Added user #{MEMBER_ID} to group #{GROUP_ID} as member. + """ + + When I run `wp bp group member list {GROUP_ID} --fields=user_id` + Then STDOUT should be a table containing rows: + | user_id | + | {CREATOR_ID} | + | {MEMBER_ID} | + + When I run `wp bp group member promote --group-id={GROUP_ID} --user-id={MEMBER_ID} --role=mod` + Then STDOUT should contain: + """ + Success: Member promoted to new role successfully. + """ + + When I run `wp bp group member list {GROUP_ID} --fields=user_id --role=mod` + Then STDOUT should be a table containing rows: + | user_id | + | {MEMBER_ID} | + + When I run `wp bp group member demote --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: User demoted to the "member" status. + """ + + When I try `wp bp group member list {GROUP_ID} --fields=user_id --role=mod` + Then the return code should be 1 + + When I run `wp bp group member ban --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: Member banned from the group. + """ + + When I run `wp bp group member list {GROUP_ID} --fields=user_id --role=banned` + Then STDOUT should be a table containing rows: + | user_id | + | {MEMBER_ID} | + + When I run `wp bp group member unban --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: Member unbanned from the group. + """ + + When I try `wp bp group member list {GROUP_ID} --fields=user_id --role=banned` + Then the return code should be 1 + + When I run `wp bp group member remove --group-id={GROUP_ID} --user-id={MEMBER_ID}` + Then STDOUT should contain: + """ + Success: Member #{MEMBER_ID} removed from the group #{GROUP_ID}. + """ + + When I run `wp bp group member list {GROUP_ID} --fields=user_id --role=member,admin,mod,banned` + Then STDOUT should be a table containing rows: + | user_id | + | {CREATOR_ID} | diff --git a/wp-content/plugins/buddypress/cli/features/group.feature b/wp-content/plugins/buddypress/cli/features/group.feature new file mode 100644 index 0000000000000000000000000000000000000000..777f3411c7cf198475d9eb65f1ab03cfe0fe4f92 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/group.feature @@ -0,0 +1,87 @@ +Feature: Manage BuddyPress Groups + + Scenario: Group CRUD Operations + Given a BP install + + When I run `wp bp group create --name="Totally Cool Group" --slug=totally-cool-group --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp group get {GROUP_ID}` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {GROUP_ID} | + | name | Totally Cool Group | + + When I run `wp bp group get totally-cool-group` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {GROUP_ID} | + | name | Totally Cool Group | + + When I try `wp bp group get i-do-not-exist` + Then the return code should be 1 + + When I run `wp bp group update {GROUP_ID} --description=foo` + Then STDOUT should not be empty + + When I run `wp bp group get {GROUP_ID}` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {GROUP_ID} | + | name | Totally Cool Group | + | description | foo | + | url | http://example.com/groups/totally-cool-group/ | + + When I run `wp bp group delete {GROUP_ID} --yes` + Then STDOUT should contain: + """ + Success: Group successfully deleted. + """ + + When I try `wp bp group get {GROUP_ID}` + Then the return code should be 1 + + Scenario: Group list + Given a BP install + + When I run `wp bp group create --name="ZZZ Group 1" --slug=group1 --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ONE_ID} + + When I run `wp bp group create --name="AAA Group 2" --slug=group2 --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_TWO_ID} + + When I run `wp bp group list --fields=id,name,slug` + Then STDOUT should be a table containing rows: + | id | name | slug | + | {GROUP_ONE_ID} | ZZZ Group 1 | group1 | + | {GROUP_TWO_ID} | AAA Group 2 | group2 | + + When I run `wp bp group list --fields=id,name,slug --orderby=name` + Then STDOUT should be a table containing rows: + | id | name | slug | + | {GROUP_TWO_ID} | AAA Group 2 | group2 | + | {GROUP_ONE_ID} | ZZZ Group 1 | group1 | + + When I run `wp bp group list --fields=id,name,slug --orderby=name --order=DESC` + Then STDOUT should be a table containing rows: + | id | name | slug | + | {GROUP_ONE_ID} | ZZZ Group 1 | group1 | + | {GROUP_TWO_ID} | AAA Group 2 | group2 | + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {MEMBER_ID} + + When I try `wp bp group list --fields=id --user-id={MEMBER_ID}` + Then the return code should be 1 + + When I run `wp bp group member create --group-id={GROUP_ONE_ID} --user-id={MEMBER_ID}` + Then the return code should be 0 + + When I run `wp bp group list --fields=id --user-id={MEMBER_ID}` + Then STDOUT should be a table containing rows: + | id | + | {GROUP_ONE_ID} | diff --git a/wp-content/plugins/buddypress/cli/features/message.feature b/wp-content/plugins/buddypress/cli/features/message.feature new file mode 100644 index 0000000000000000000000000000000000000000..1d58a6763452bc38426611d391b74a6c7c3ded53 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/message.feature @@ -0,0 +1,105 @@ +Feature: Manage BuddyPress Messages + + Scenario: Message CRUD Operations + Given a BP install + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {BOB_ID} + + When I run `wp user create testuser2 testuser2@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SALLY_ID} + + When I run `wp bp message send-notice --subject="Important Notice" --content="Notice Message"` + Then STDOUT should contain: + """ + Success: Notice was successfully sent. + """ + + When I run `wp bp message create --from={BOB_ID} --to={SALLY_ID} --subject="Message" --content="Message Content" --porcelain` + Then STDOUT should be a number + And save STDOUT as {THREAD_ID} + + When I run `wp bp message star-thread {THREAD_ID} --user-id={SALLY_ID}` + Then STDOUT should contain: + """ + Success: Thread was successfully starred. + """ + + When I run `wp bp message unstar-thread {THREAD_ID} --user-id={SALLY_ID}` + Then STDOUT should contain: + """ + Success: Thread was successfully unstarred. + """ + + When I run `wp bp message delete-thread {THREAD_ID} --user-id={SALLY_ID} --yes` + Then STDOUT should contain: + """ + Success: Thread successfully deleted. + """ + + Scenario: Message list + Given a BP install + + When I run `wp user create testuser2 testuser2@example.com --porcelain` + And save STDOUT as {BOB_ID} + + When I run `wp user create testuser3 testuser3@example.com --porcelain` + And save STDOUT as {SALLY_ID} + + When I try `wp bp message list --user-id={BOB_ID} --fields=id` + Then the return code should be 1 + + When I try `wp bp message list --user-id={SALLY_ID} --fields=id` + Then the return code should be 1 + + When I run `wp bp message create --from={BOB_ID} --to={SALLY_ID} --subject="Test Thread" --content="Message one" --porcelain` + Then STDOUT should be a number + And save STDOUT as {THREAD_ID} + + When I run `wp bp message create --from={SALLY_ID} --thread-id={THREAD_ID} --subject="Test Answer" --content="Message two"` + Then STDOUT should contain: + """ + Success: Message successfully created. + """ + + When I run `wp bp message create --from={BOB_ID} --thread-id={THREAD_ID} --subject="Another Answer" --content="Message three"` + Then STDOUT should contain: + """ + Success: Message successfully created. + """ + + When I run `wp bp message list --user-id={BOB_ID} --fields=sender_id` + Then STDOUT should be a table containing rows: + | sender_id | + | {BOB_ID} | + | {SALLY_ID} | + + When I run `wp bp message list --user-id={SALLY_ID} --fields=thread_id,sender_id,subject,message` + Then STDOUT should be a table containing rows: + | thread_id | sender_id | subject | message | + | {THREAD_ID} | {BOB_ID} | Test Thread | Message one | + | {THREAD_ID} | {SALLY_ID} | Test Answer | Message two | + | {THREAD_ID} | {BOB_ID} | Another Answer | Message three | + + When I run `wp user create testuser4 testuser4@example.com --porcelain` + And save STDOUT as {JOHN_ID} + + When I try `wp bp message list --user-id={JOHN_ID} --fields=id` + Then the return code should be 1 + + When I run `wp bp message create --from={JOHN_ID} --to={SALLY_ID} --subject="Second Thread" --content="Message four" --porcelain` + Then STDOUT should be a number + And save STDOUT as {ANOTHER_THREAD_ID} + + When I run `wp bp message create --from={SALLY_ID} --thread-id={ANOTHER_THREAD_ID} --subject="Final Message" --content="Final Message"` + Then STDOUT should contain: + """ + Success: Message successfully created. + """ + + When I run `wp bp message list --user-id={JOHN_ID} --fields=thread_id,sender_id,subject,message` + Then STDOUT should be a table containing rows: + | thread_id | sender_id | subject | message | + | {ANOTHER_THREAD_ID} | {JOHN_ID} | Second Thread | Message four | diff --git a/wp-content/plugins/buddypress/cli/features/signup.feature b/wp-content/plugins/buddypress/cli/features/signup.feature new file mode 100644 index 0000000000000000000000000000000000000000..e23e849f8e21dae4f0b15a1510d697eac4b27d19 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/signup.feature @@ -0,0 +1,83 @@ +Feature: Manage BuddyPress Signups + + Scenario: Signup CRUD Operations + Given a BP install + + When I run `wp bp signup add --user-login=test_user --user-email=test@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SIGNUP_ID} + + When I run `wp bp signup list --fields=signup_id,user_login,user_email` + Then STDOUT should be a table containing rows: + | signup_id | user_login | user_email | + | {SIGNUP_ID} | test_user | test@example.com | + + When I run `wp bp signup delete {SIGNUP_ID} --yes` + Then STDOUT should contain: + """ + Success: Signup deleted. + """ + + Scenario: Signup fetching by identifier + Given a BP install + + When I run `wp bp signup add --user-login=signup1 --user-email=signup1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SIGNUP_ONE_ID} + + When I run `wp bp signup get {SIGNUP_ONE_ID} --fields=signup_id,user_login,user_email` + Then STDOUT should be a table containing rows: + | Field | Value | + | signup_id | {SIGNUP_ONE_ID} | + | user_login | signup1 | + | user_email | signup1@example.com | + + When I run `wp bp signup add --user-login={SIGNUP_ONE_ID} --user-email=signup2@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SIGNUP_TWO_ID} + + When I run `wp bp signup get {SIGNUP_ONE_ID} --fields=signup_id,user_login,user_email` + Then STDOUT should be a table containing rows: + | Field | Value | + | signup_id | {SIGNUP_ONE_ID} | + | user_login | signup1 | + | user_email | signup1@example.com | + + When I run `wp bp signup get {SIGNUP_ONE_ID} --fields=signup_id,user_login,user_email --match-field=user_login` + Then STDOUT should be a table containing rows: + | Field | Value | + | signup_id | {SIGNUP_TWO_ID} | + | user_login | {SIGNUP_ONE_ID} | + | user_email | signup2@example.com | + + Scenario: Signup activation + Given a BP install + + When I run `wp bp signup add --user-login=test_user --user-email=test@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SIGNUP_ID} + + When I run `wp bp signup activate {SIGNUP_ID}` + Then STDOUT should contain: + """ + Signup activated + """ + + When I run `wp user get test_user --field=user_email` + Then STDOUT should contain: + """ + test@example.com + """ + + Scenario: Signup resending + Given a BP install + + When I run `wp bp signup add --user-login=test_user --user-email=test@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {SIGNUP_ID} + + When I run `wp bp signup resend {SIGNUP_ID}` + Then STDOUT should contain: + """ + success + """ diff --git a/wp-content/plugins/buddypress/cli/features/steps/given-custom.php b/wp-content/plugins/buddypress/cli/features/steps/given-custom.php new file mode 100644 index 0000000000000000000000000000000000000000..d77e20257c3a9b28ab65795b0973d7bbd4470ee8 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/steps/given-custom.php @@ -0,0 +1,30 @@ +<?php + +use Behat\Gherkin\Node\PyStringNode, + Behat\Gherkin\Node\TableNode, + WP_CLI\Process; + +$steps->Given( '/^a BP install$/', + function ( $world ) { + $world->install_wp(); + $dest_dir = $world->variables['RUN_DIR'] . '/wp-content/plugins/buddypress/'; + if ( ! is_dir( $dest_dir ) ) { + mkdir( $dest_dir ); + } + + $bp_src_dir = getenv( 'BP_SRC_DIR' ); + if ( ! is_dir( $bp_src_dir ) ) { + throw new Exception( 'BuddyPress not found in BP_SRC_DIR' ); + } + + try { + $world->copy_dir( $bp_src_dir, $dest_dir ); + $world->proc( 'wp plugin activate buddypress' )->run_check(); + + $components = array( 'friends', 'groups', 'xprofile', 'activity', 'messages' ); + foreach ( $components as $component ) { + $world->proc( "wp bp component activate $component" )->run_check(); + } + } catch ( Exception $e ) {}; + } +); diff --git a/wp-content/plugins/buddypress/cli/features/steps/given.php b/wp-content/plugins/buddypress/cli/features/steps/given.php new file mode 100644 index 0000000000000000000000000000000000000000..e568bff3f4e3d5cf6e42d45041a72b148a6acc5d --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/steps/given.php @@ -0,0 +1,213 @@ +<?php + +use Behat\Gherkin\Node\PyStringNode, + Behat\Gherkin\Node\TableNode, + WP_CLI\Process; + +$steps->Given( '/^an empty directory$/', + function ( $world ) { + $world->create_run_dir(); + } +); + +$steps->Given( '/^an? (empty|non-existent) ([^\s]+) directory$/', + function ( $world, $empty_or_nonexistent, $dir ) { + $dir = $world->replace_variables( $dir ); + if ( ! WP_CLI\Utils\is_path_absolute( $dir ) ) { + $dir = $world->variables['RUN_DIR'] . "/$dir"; + } + if ( 0 !== strpos( $dir, sys_get_temp_dir() ) ) { + throw new RuntimeException( sprintf( "Attempted to delete directory '%s' that is not in the temp directory '%s'. " . __FILE__ . ':' . __LINE__, $dir, sys_get_temp_dir() ) ); + } + $world->remove_dir( $dir ); + if ( 'empty' === $empty_or_nonexistent ) { + mkdir( $dir, 0777, true /*recursive*/ ); + } + } +); + +$steps->Given( '/^an empty cache/', + function ( $world ) { + $world->variables['SUITE_CACHE_DIR'] = FeatureContext::create_cache_dir(); + } +); + +$steps->Given( '/^an? ([^\s]+) file:$/', + function ( $world, $path, PyStringNode $content ) { + $content = (string) $content . "\n"; + $full_path = $world->variables['RUN_DIR'] . "/$path"; + $dir = dirname( $full_path ); + if ( ! file_exists( $dir ) ) { + mkdir( $dir, 0777, true /*recursive*/ ); + } + file_put_contents( $full_path, $content ); + } +); + +$steps->Given( '/^"([^"]+)" replaced with "([^"]+)" in the ([^\s]+) file$/', function( $world, $search, $replace, $path ) { + $full_path = $world->variables['RUN_DIR'] . "/$path"; + $contents = file_get_contents( $full_path ); + $contents = str_replace( $search, $replace, $contents ); + file_put_contents( $full_path, $contents ); +}); + +$steps->Given( '/^WP files$/', + function ( $world ) { + $world->download_wp(); + } +); + +$steps->Given( '/^wp-config\.php$/', + function ( $world ) { + $world->create_config(); + } +); + +$steps->Given( '/^a database$/', + function ( $world ) { + $world->create_db(); + } +); + +$steps->Given( '/^a WP install$/', + function ( $world ) { + $world->install_wp(); + } +); + +$steps->Given( "/^a WP install in '([^\s]+)'$/", + function ( $world, $subdir ) { + $world->install_wp( $subdir ); + } +); + +$steps->Given( '/^a WP install with Composer$/', + function ( $world ) { + $world->install_wp_with_composer(); + } +); + +$steps->Given( "/^a WP install with Composer and a custom vendor directory '([^\s]+)'$/", + function ( $world, $vendor_directory ) { + $world->install_wp_with_composer( $vendor_directory ); + } +); + +$steps->Given( '/^a WP multisite (subdirectory|subdomain)?\s?install$/', + function ( $world, $type = 'subdirectory' ) { + $world->install_wp(); + $subdomains = ! empty( $type ) && 'subdomain' === $type ? 1 : 0; + $world->proc( 'wp core install-network', array( 'title' => 'WP CLI Network', 'subdomains' => $subdomains ) )->run_check(); + } +); + +$steps->Given( '/^these installed and active plugins:$/', + function( $world, $stream ) { + $plugins = implode( ' ', array_map( 'trim', explode( PHP_EOL, (string)$stream ) ) ); + $world->proc( "wp plugin install $plugins --activate" )->run_check(); + } +); + +$steps->Given( '/^a custom wp-content directory$/', + function ( $world ) { + $wp_config_path = $world->variables['RUN_DIR'] . "/wp-config.php"; + + $wp_config_code = file_get_contents( $wp_config_path ); + + $world->move_files( 'wp-content', 'my-content' ); + $world->add_line_to_wp_config( $wp_config_code, + "define( 'WP_CONTENT_DIR', dirname(__FILE__) . '/my-content' );" ); + + $world->move_files( 'my-content/plugins', 'my-plugins' ); + $world->add_line_to_wp_config( $wp_config_code, + "define( 'WP_PLUGIN_DIR', __DIR__ . '/my-plugins' );" ); + + file_put_contents( $wp_config_path, $wp_config_code ); + } +); + +$steps->Given( '/^download:$/', + function ( $world, TableNode $table ) { + foreach ( $table->getHash() as $row ) { + $path = $world->replace_variables( $row['path'] ); + if ( file_exists( $path ) ) { + // assume it's the same file and skip re-download + continue; + } + + Process::create( \WP_CLI\Utils\esc_cmd( 'curl -sSL %s > %s', $row['url'], $path ) )->run_check(); + } + } +); + +$steps->Given( '/^save (STDOUT|STDERR) ([\'].+[^\'])?\s?as \{(\w+)\}$/', + function ( $world, $stream, $output_filter, $key ) { + + $stream = strtolower( $stream ); + + if ( $output_filter ) { + $output_filter = '/' . trim( str_replace( '%s', '(.+[^\b])', $output_filter ), "' " ) . '/'; + if ( false !== preg_match( $output_filter, $world->result->$stream, $matches ) ) + $output = array_pop( $matches ); + else + $output = ''; + } else { + $output = $world->result->$stream; + } + $world->variables[ $key ] = trim( $output, "\n" ); + } +); + +$steps->Given( '/^a new Phar with (?:the same version|version "([^"]+)")$/', + function ( $world, $version = 'same' ) { + $world->build_phar( $version ); + } +); + +$steps->Given( '/^a downloaded Phar with (?:the same version|version "([^"]+)")$/', + function ( $world, $version = 'same' ) { + $world->download_phar( $version ); + } +); + +$steps->Given( '/^save the (.+) file ([\'].+[^\'])?as \{(\w+)\}$/', + function ( $world, $filepath, $output_filter, $key ) { + $full_file = file_get_contents( $world->replace_variables( $filepath ) ); + + if ( $output_filter ) { + $output_filter = '/' . trim( str_replace( '%s', '(.+[^\b])', $output_filter ), "' " ) . '/'; + if ( false !== preg_match( $output_filter, $full_file, $matches ) ) + $output = array_pop( $matches ); + else + $output = ''; + } else { + $output = $full_file; + } + $world->variables[ $key ] = trim( $output, "\n" ); + } +); + +$steps->Given('/^a misconfigured WP_CONTENT_DIR constant directory$/', + function($world) { + $wp_config_path = $world->variables['RUN_DIR'] . "/wp-config.php"; + + $wp_config_code = file_get_contents( $wp_config_path ); + + $world->add_line_to_wp_config( $wp_config_code, + "define( 'WP_CONTENT_DIR', '' );" ); + + file_put_contents( $wp_config_path, $wp_config_code ); + } +); + +$steps->Given( '/^a dependency on current wp-cli$/', + function ( $world ) { + $world->composer_require_current_wp_cli(); + } +); + +$steps->Given( '/^a PHP built-in web server$/', + function ( $world ) { + $world->start_php_server(); + } +); diff --git a/wp-content/plugins/buddypress/cli/features/steps/then.php b/wp-content/plugins/buddypress/cli/features/steps/then.php new file mode 100644 index 0000000000000000000000000000000000000000..03e14dada54c94c355b81d8cd3240c617d436466 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/steps/then.php @@ -0,0 +1,217 @@ +<?php + +use Behat\Gherkin\Node\PyStringNode, + Behat\Gherkin\Node\TableNode; + +$steps->Then( '/^the return code should be (\d+)$/', + function ( $world, $return_code ) { + if ( $return_code != $world->result->return_code ) { + throw new RuntimeException( $world->result ); + } + } +); + +$steps->Then( '/^(STDOUT|STDERR) should (be|contain|not contain):$/', + function ( $world, $stream, $action, PyStringNode $expected ) { + $stream = strtolower( $stream ); + + $expected = $world->replace_variables( (string) $expected ); + + checkString( $world->result->$stream, $expected, $action, $world->result ); + } +); + +$steps->Then( '/^(STDOUT|STDERR) should be a number$/', + function ( $world, $stream ) { + + $stream = strtolower( $stream ); + + assertNumeric( trim( $world->result->$stream, "\n" ) ); + } +); + +$steps->Then( '/^(STDOUT|STDERR) should not be a number$/', + function ( $world, $stream ) { + + $stream = strtolower( $stream ); + + assertNotNumeric( trim( $world->result->$stream, "\n" ) ); + } +); + +$steps->Then( '/^STDOUT should be a table containing rows:$/', + function ( $world, TableNode $expected ) { + $output = $world->result->stdout; + $actual_rows = explode( "\n", rtrim( $output, "\n" ) ); + + $expected_rows = array(); + foreach ( $expected->getRows() as $row ) { + $expected_rows[] = $world->replace_variables( implode( "\t", $row ) ); + } + + compareTables( $expected_rows, $actual_rows, $output ); + } +); + +$steps->Then( '/^STDOUT should end with a table containing rows:$/', + function ( $world, TableNode $expected ) { + $output = $world->result->stdout; + $actual_rows = explode( "\n", rtrim( $output, "\n" ) ); + + $expected_rows = array(); + foreach ( $expected->getRows() as $row ) { + $expected_rows[] = $world->replace_variables( implode( "\t", $row ) ); + } + + $start = array_search( $expected_rows[0], $actual_rows ); + + if ( false === $start ) + throw new \Exception( $world->result ); + + compareTables( $expected_rows, array_slice( $actual_rows, $start ), $output ); + } +); + +$steps->Then( '/^STDOUT should be JSON containing:$/', + function ( $world, PyStringNode $expected ) { + $output = $world->result->stdout; + $expected = $world->replace_variables( (string) $expected ); + + if ( !checkThatJsonStringContainsJsonString( $output, $expected ) ) { + throw new \Exception( $world->result ); + } +}); + +$steps->Then( '/^STDOUT should be a JSON array containing:$/', + function ( $world, PyStringNode $expected ) { + $output = $world->result->stdout; + $expected = $world->replace_variables( (string) $expected ); + + $actualValues = json_decode( $output ); + $expectedValues = json_decode( $expected ); + + $missing = array_diff( $expectedValues, $actualValues ); + if ( !empty( $missing ) ) { + throw new \Exception( $world->result ); + } +}); + +$steps->Then( '/^STDOUT should be CSV containing:$/', + function ( $world, TableNode $expected ) { + $output = $world->result->stdout; + + $expected_rows = $expected->getRows(); + foreach ( $expected as &$row ) { + foreach ( $row as &$value ) { + $value = $world->replace_variables( $value ); + } + } + + if ( ! checkThatCsvStringContainsValues( $output, $expected_rows ) ) + throw new \Exception( $world->result ); + } +); + +$steps->Then( '/^STDOUT should be YAML containing:$/', + function ( $world, PyStringNode $expected ) { + $output = $world->result->stdout; + $expected = $world->replace_variables( (string) $expected ); + + if ( !checkThatYamlStringContainsYamlString( $output, $expected ) ) { + throw new \Exception( $world->result ); + } +}); + +$steps->Then( '/^(STDOUT|STDERR) should be empty$/', + function ( $world, $stream ) { + + $stream = strtolower( $stream ); + + if ( !empty( $world->result->$stream ) ) { + throw new \Exception( $world->result ); + } + } +); + +$steps->Then( '/^(STDOUT|STDERR) should not be empty$/', + function ( $world, $stream ) { + + $stream = strtolower( $stream ); + + if ( '' === rtrim( $world->result->$stream, "\n" ) ) { + throw new Exception( $world->result ); + } + } +); + +$steps->Then( '/^(STDOUT|STDERR) should be a version string (<|<=|>|>=|==|=|!=|<>) ([+\w.{}-]+)$/', + function ( $world, $stream, $operator, $goal_ver ) { + $goal_ver = $world->replace_variables( $goal_ver ); + $stream = strtolower( $stream ); + if ( false === version_compare( trim( $world->result->$stream, "\n" ), $goal_ver, $operator ) ) { + throw new Exception( $world->result ); + } + } +); + +$steps->Then( '/^the (.+) (file|directory) should (exist|not exist|be:|contain:|not contain:)$/', + function ( $world, $path, $type, $action, $expected = null ) { + $path = $world->replace_variables( $path ); + + // If it's a relative path, make it relative to the current test dir + if ( '/' !== $path[0] ) + $path = $world->variables['RUN_DIR'] . "/$path"; + + if ( 'file' == $type ) { + $test = 'file_exists'; + } else if ( 'directory' == $type ) { + $test = 'is_dir'; + } + + switch ( $action ) { + case 'exist': + if ( ! $test( $path ) ) { + throw new Exception( "$path doesn't exist." ); + } + break; + case 'not exist': + if ( $test( $path ) ) { + throw new Exception( "$path exists." ); + } + break; + default: + if ( ! $test( $path ) ) { + throw new Exception( "$path doesn't exist." ); + } + $action = substr( $action, 0, -1 ); + $expected = $world->replace_variables( (string) $expected ); + if ( 'file' == $type ) { + $contents = file_get_contents( $path ); + } else if ( 'directory' == $type ) { + $files = glob( rtrim( $path, '/' ) . '/*' ); + foreach( $files as &$file ) { + $file = str_replace( $path . '/', '', $file ); + } + $contents = implode( PHP_EOL, $files ); + } + checkString( $contents, $expected, $action ); + } + } +); + +$steps->Then( '/^an email should (be sent|not be sent)$/', function( $world, $expected ) { + if ( 'be sent' === $expected ) { + assertNotEquals( 0, $world->email_sends ); + } else if ( 'not be sent' === $expected ) { + assertEquals( 0, $world->email_sends ); + } else { + throw new Exception( 'Invalid expectation' ); + } +}); + +$steps->Then( '/^the HTTP status code should be (\d+)$/', + function ( $world, $return_code ) { + $response = \Requests::request( 'http://localhost:8080' ); + assertEquals( $return_code, $response->status_code ); + } +); diff --git a/wp-content/plugins/buddypress/cli/features/steps/when.php b/wp-content/plugins/buddypress/cli/features/steps/when.php new file mode 100644 index 0000000000000000000000000000000000000000..afe3f7a0dfe4d568ae27cf20b089ed0a40ff4fc8 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/steps/when.php @@ -0,0 +1,54 @@ +<?php + +use Behat\Gherkin\Node\PyStringNode, + Behat\Gherkin\Node\TableNode, + WP_CLI\Process; + +function invoke_proc( $proc, $mode ) { + $map = array( + 'run' => 'run_check', + 'try' => 'run' + ); + $method = $map[ $mode ]; + + return $proc->$method(); +} + +function capture_email_sends( $stdout ) { + $stdout = preg_replace( '#WP-CLI test suite: Sent email to.+\n?#', '', $stdout, -1, $email_sends ); + return array( $stdout, $email_sends ); +} + +$steps->When( '/^I launch in the background `([^`]+)`$/', + function ( $world, $cmd ) { + $world->background_proc( $cmd ); + } +); + +$steps->When( '/^I (run|try) `([^`]+)`$/', + function ( $world, $mode, $cmd ) { + $cmd = $world->replace_variables( $cmd ); + $world->result = invoke_proc( $world->proc( $cmd ), $mode ); + list( $world->result->stdout, $world->email_sends ) = capture_email_sends( $world->result->stdout ); + } +); + +$steps->When( "/^I (run|try) `([^`]+)` from '([^\s]+)'$/", + function ( $world, $mode, $cmd, $subdir ) { + $cmd = $world->replace_variables( $cmd ); + $world->result = invoke_proc( $world->proc( $cmd, array(), $subdir ), $mode ); + list( $world->result->stdout, $world->email_sends ) = capture_email_sends( $world->result->stdout ); + } +); + +$steps->When( '/^I (run|try) the previous command again$/', + function ( $world, $mode ) { + if ( !isset( $world->result ) ) + throw new \Exception( 'No previous command.' ); + + $proc = Process::create( $world->result->command, $world->result->cwd, $world->result->env ); + $world->result = invoke_proc( $proc, $mode ); + list( $world->result->stdout, $world->email_sends ) = capture_email_sends( $world->result->stdout ); + } +); + diff --git a/wp-content/plugins/buddypress/cli/features/tool.feature b/wp-content/plugins/buddypress/cli/features/tool.feature new file mode 100644 index 0000000000000000000000000000000000000000..bc6ce5554aa001919df4d71ed50456edaf923e21 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/tool.feature @@ -0,0 +1,10 @@ +Feature: Manage BuddyPress Tools + + Scenario: BuddyPress repair + Given a BP install + + When I run `wp bp tool repair friend-count` + Then STDOUT should contain: + """ + Complete! + """ diff --git a/wp-content/plugins/buddypress/cli/features/xprofile-data.feature b/wp-content/plugins/buddypress/cli/features/xprofile-data.feature new file mode 100644 index 0000000000000000000000000000000000000000..bc5d13a909ef2ee5a5ff0571d3b06435da841202 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/xprofile-data.feature @@ -0,0 +1,52 @@ +Feature: Manage BuddyPress XProfile Data + + Scenario: XProfile Data CRUD Operations + Given a BP install + + When I run `wp bp xprofile group create --name="Group Name" --description="Group Description" --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp xprofile field create --field-group-id={GROUP_ID} --name="Field Name" --porcelain` + Then STDOUT should be a number + And save STDOUT as {FIELD_ID} + + When I run `wp user create testuser1 testuser1@example.com --porcelain` + Then STDOUT should be a number + And save STDOUT as {USER_ID} + + When I run `wp bp xprofile data set --field-id={FIELD_ID} --user-id={USER_ID} --value=foo` + Then STDOUT should contain: + """ + Updated + """ + + When I run `wp bp xprofile data get --user-id={USER_ID} --field-id={FIELD_ID}` + Then STDOUT should be: + """ + foo + """ + + When I run `wp bp xprofile data get --user-id={USER_ID}` + Then STDOUT should be a table containing rows: + | field_id | field_name | value | + | {FIELD_ID} | Field Name | "foo" | + + When I try `wp bp xprofile data delete --user-id={USER_ID} --yes` + Then the return code should be 1 + Then STDERR should contain: + """ + Either --field-id or --delete-all must be provided + """ + + When I run `wp bp xprofile data delete --user-id={USER_ID} --field-id={FIELD_ID} --yes` + Then STDOUT should contain: + """ + XProfile data removed + """ + + When I run `wp bp xprofile data get --user-id={USER_ID} --field-id={FIELD_ID}` + Then STDOUT should not contain: + """ + foo + """ diff --git a/wp-content/plugins/buddypress/cli/features/xprofile-field.feature b/wp-content/plugins/buddypress/cli/features/xprofile-field.feature new file mode 100644 index 0000000000000000000000000000000000000000..236d68587feecf4c6957053e570c6171ccae3229 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/xprofile-field.feature @@ -0,0 +1,29 @@ +Feature: Manage BuddyPress XProfile Fields + + Scenario: XProfile Field CRUD Operations + Given a BP install + + When I run `wp bp xprofile group create --name="Group Name" --description="Group Description" --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp xprofile field create --type=checkbox --field-group-id={GROUP_ID} --name="Field Name" --porcelain` + Then STDOUT should be a number + And save STDOUT as {FIELD_ID} + + When I run `wp bp xprofile field get {FIELD_ID}` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {FIELD_ID} | + | group_id | {GROUP_ID} | + | name | Field Name | + | type | checkbox | + + When I run `wp bp xprofile field delete {FIELD_ID} --yes` + Then STDOUT should contain: + """ + Deleted XProfile field + """ + + When I try `wp bp xprofile field delete {FIELD_ID} --yes` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/features/xprofile-group.feature b/wp-content/plugins/buddypress/cli/features/xprofile-group.feature new file mode 100644 index 0000000000000000000000000000000000000000..9406f538341904d42e815d8d1e8ab26548e3ec7d --- /dev/null +++ b/wp-content/plugins/buddypress/cli/features/xprofile-group.feature @@ -0,0 +1,26 @@ +Feature: Manage BuddyPress XProfile Groups + + Scenario: XProfile Group CRUD operations + Given a BP install + + When I run `wp bp xprofile group create --name="Group Name" --description="Group Description" --porcelain` + Then STDOUT should be a number + And save STDOUT as {GROUP_ID} + + When I run `wp bp xprofile group get {GROUP_ID}` + Then STDOUT should be a table containing rows: + | Field | Value | + | id | {GROUP_ID} | + | name | Group Name | + | description | Group Description | + | can_delete | 1 | + | group_order | 0 | + + When I run `wp bp xprofile group delete {GROUP_ID} --yes` + Then STDOUT should contain: + """ + Field group deleted. + """ + + When I try `wp bp xprofile group get {GROUP_ID}` + Then the return code should be 1 diff --git a/wp-content/plugins/buddypress/cli/license.txt b/wp-content/plugins/buddypress/cli/license.txt new file mode 100644 index 0000000000000000000000000000000000000000..b5fcfa6e7a5343eec02d2d25805773efbdf65121 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/license.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) 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 +this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + END OF TERMS AND CONDITIONS + diff --git a/wp-content/plugins/buddypress/cli/readme.md b/wp-content/plugins/buddypress/cli/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..ac5d92e9f8a428625b628cc3e3fd22f1af2d0a6c --- /dev/null +++ b/wp-content/plugins/buddypress/cli/readme.md @@ -0,0 +1,77 @@ +# buddypress/wp-cli-buddypress + +WP-CLI commands for use with BuddyPress. + +[](https://travis-ci.org/buddypress/wp-cli-buddypress) + +These commands may be in flux, as we work toward a potential merge into BuddyPress. See https://buddypress.trac.wordpress.org/ticket/7604. + +Please use and provide feedback! + +## System Requirements + +* PHP >= 5.3 +* wp-cli >= 0.23.0 +* BuddyPress trunk (development version). + +## Setup + +* Install [wp-cli](https://wp-cli.org) +* Install wp-cli-buddypress. Manuall installation is recommended, though Composer installation should work too. See https://wp-cli.org/package-index/ for information. +* Inside of a WP installation, type `wp bp`. You should see a list of available commands. + +## Changelog + +### 1.7.0 + +* Updated `bp` and `bp xprofile` commands PHPDoc info +* Fixed `component list` commands output +* Check if the `component` exists first before using it +* Fixed `component` Behat tests +* Removed PHP 5.3 support from Travis + +### 1.6.0 + +* `bp email` commands introduced +* With PSR-4 support for the classes + +### 1.5.0 + +* CRUD commands introduced to the main BuddyPress components +* Behat tests added for all commands +* Codebase fixed for WPCS + +### 1.4.0 + +* New commands: `bp xprofile list_fields`, `bp xprofile delete_field` +* Added the ability to pass multiple comma-separated values when updating xprofile fields +* Fixed bug in component activation + +### 1.3.1 + +* Improved logic for user-id parsing + +### 1.3.0 + +* New commands: `bp group get_members`, `bp group update` +* Ability to pass 'content' when using `bp activity generate` +* When using `bp activity generate` with type=activity_update and component=groups, format the activity action properly + +### 1.2.0 + +* Use wp-cli's new fourth-level commands +* New commands: xprofile create_group, xprofile create_field, xprofile set_data + +### 1.1.1 + +* Ensure that components have their install routine run after activation + +### 1.1 + +* New commands: activate, deactivate, activity_create, activity_generate +* Improved documentation +* Added support for installation via Composer + +### 1.0 + +* Initial release diff --git a/wp-content/plugins/buddypress/cli/utils/behat-tags.php b/wp-content/plugins/buddypress/cli/utils/behat-tags.php new file mode 100644 index 0000000000000000000000000000000000000000..ee51fc91ee864ebc358bd8a7186bc0a2784f3dea --- /dev/null +++ b/wp-content/plugins/buddypress/cli/utils/behat-tags.php @@ -0,0 +1,76 @@ +<?php +/** + * Generate a list of tags to skip during the test run. + * + * Require a minimum version of WordPress: + * + * @require-wp-4.0 + * Scenario: Core translation CRUD + * + * Then use in bash script: + * + * BEHAT_TAGS=$(php behat-tags.php) + * vendor/bin/behat --format progress $BEHAT_TAGS + */ + +function version_tags( $prefix, $current, $operator = '<' ) { + if ( ! $current ) + return array(); + + exec( "grep '@{$prefix}-[0-9\.]*' -h -o features/*.feature | uniq", $existing_tags ); + + $skip_tags = array(); + + foreach ( $existing_tags as $tag ) { + $compare = str_replace( "@{$prefix}-", '', $tag ); + if ( version_compare( $current, $compare, $operator ) ) { + $skip_tags[] = $tag; + } + } + + return $skip_tags; +} + +$wp_version_reqs = array(); +// Only apply @require-wp tags when WP_VERSION isn't 'latest' or 'nightly' +// 'latest' and 'nightly' are expected to work with all features +if ( ! in_array( getenv( 'WP_VERSION' ), array( 'latest', 'nightly', 'trunk' ), true ) ) { + $wp_version_reqs = version_tags( 'require-wp', getenv( 'WP_VERSION' ), '<' ); +} + +$skip_tags = array_merge( + $wp_version_reqs, + version_tags( 'require-php', PHP_VERSION, '<' ), + version_tags( 'less-than-php', PHP_VERSION, '>' ) +); + +# Skip Github API tests by default because of rate limiting. See https://github.com/wp-cli/wp-cli/issues/1612 +$skip_tags[] = '@github-api'; + +# Skip tests known to be broken. +$skip_tags[] = '@broken'; + +# Require PHP extension, eg 'imagick'. +function extension_tags() { + $extension_tags = array(); + exec( "grep '@require-extension-[A-Za-z_]*' -h -o features/*.feature | uniq", $extension_tags ); + + $skip_tags = array(); + + $substr_start = strlen( '@require-extension-' ); + foreach ( $extension_tags as $tag ) { + $extension = substr( $tag, $substr_start ); + if ( ! extension_loaded( $extension ) ) { + $skip_tags[] = $tag; + } + } + + return $skip_tags; +} + +$skip_tags = array_merge( $skip_tags, extension_tags() ); + +if ( !empty( $skip_tags ) ) { + echo '--tags=~' . implode( '&&~', $skip_tags ); +} + diff --git a/wp-content/plugins/buddypress/cli/wp-cli-bp.php b/wp-content/plugins/buddypress/cli/wp-cli-bp.php new file mode 100644 index 0000000000000000000000000000000000000000..8c00715797bd1a4abf85e5c7cf06e56adb9facf7 --- /dev/null +++ b/wp-content/plugins/buddypress/cli/wp-cli-bp.php @@ -0,0 +1,212 @@ +<?php +namespace Buddypress\CLI; + +use WP_CLI; + +// Bail if WP-CLI is not present. +if ( ! defined( '\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/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 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.' ); + } + }, + ) ); +} ); diff --git a/wp-content/plugins/buddypress/cli/wp-cli.yml b/wp-content/plugins/buddypress/cli/wp-cli.yml new file mode 100644 index 0000000000000000000000000000000000000000..6e859c19a9f5f471387c18c550b875f3dbf6f44a --- /dev/null +++ b/wp-content/plugins/buddypress/cli/wp-cli.yml @@ -0,0 +1,2 @@ +require: + - wp-cli-bp.php diff --git a/wp-content/plugins/buddypress/composer.json b/wp-content/plugins/buddypress/composer.json index bdd8c697498d2d95c9bdd20b18b7268846decb50..0de32cbe5853b70ead2eac0ec404e40a4e41ba53 100644 --- a/wp-content/plugins/buddypress/composer.json +++ b/wp-content/plugins/buddypress/composer.json @@ -1,34 +1,33 @@ { - "name": "buddypress/buddypress", - "description": "BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more!", - "type": "wordpress-plugin", - "keywords": [ - "activity", - "community", - "forum", - "friends", - "groups", - "messaging", - "notifications", - "profiles", - "social network" - ], - "homepage": "https://buddypress.org", - "license": "GPL-2.0+", - "authors": [ { - "name": "BuddyPress Community", - "homepage": "https://buddypress.org/about/" - } ], - "support": { - "forum": "https://buddypress.org/support/", - "docs": "https://codex.buddypress.org/", - "issues": "https://buddypress.trac.wordpress.org/", - "rss": "https://buddypress.org/feed/", - "source": "https://buddypress.trac.wordpress.org/browser/", - "wiki": "https://codex.buddypress.org/" - }, - "require": { - "composer/installers": "~1.0", - "php": ">=5.3.0" - } + "name": "buddypress/buddypress", + "description": "BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more!", + "type": "wordpress-plugin", + "keywords": [ + "activity", + "community", + "friends", + "groups", + "messaging", + "notifications", + "profiles", + "social network" + ], + "homepage": "https://buddypress.org", + "license": "GPL-2.0+", + "authors": [ { + "name": "BuddyPress Community", + "homepage": "https://buddypress.org/about/" + } ], + "support": { + "forum": "https://buddypress.org/support/", + "docs": "https://codex.buddypress.org/", + "issues": "https://buddypress.trac.wordpress.org/", + "rss": "https://buddypress.org/feed/", + "source": "https://buddypress.trac.wordpress.org/browser/", + "wiki": "https://codex.buddypress.org/" + }, + "require": { + "composer/installers": "~1.0", + "php": ">=5.3.0" + } } diff --git a/wp-content/plugins/buddypress/humans.txt b/wp-content/plugins/buddypress/humans.txt index 5af7e71a4b693ce347a6a95db42e5cc82b9333a8..ed5cb5807c4185961410473bf23ad30c785f4f83 100644 --- a/wp-content/plugins/buddypress/humans.txt +++ b/wp-content/plugins/buddypress/humans.txt @@ -99,9 +99,18 @@ Title: Core Developer Twitter: slaFFik Favorite Food: Cakes +Name: Venutius +Title: Community Support +Favourite Food: Apple Crumble + +Name: Laurens Offereins +Title: Core Developer +Twitter: lmoffereins +Favorite Food: Lasagna + /* THANKS */ modemlooper, cnorris23, karmatosed, photomatt /* META */ -Updated: 2017/02/01 +Updated: 2018/04/05 See: http://humanstxt.org/ diff --git a/wp-content/plugins/buddypress/readme.txt b/wp-content/plugins/buddypress/readme.txt index 207ff80bc7a0e8cd0ed10d62b9dab41448f816a0..964f68aadc124339de0b0fe0172e7401513fbe3a 100644 --- a/wp-content/plugins/buddypress/readme.txt +++ b/wp-content/plugins/buddypress/readme.txt @@ -1,72 +1,72 @@ === BuddyPress === -Contributors: johnjamesjacoby, DJPaul, boonebgorges, r-a-y, imath, mercime, tw2113, dcavins, hnla -Tags: social networking, activity, profiles, messaging, friends, groups, forums, notifications, settings, social, community, networks, networking -Requires at least: 4.4 -Tested up to: 4.9 +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 +Requires at least: 4.5 +Tested up to: 4.9.6 Requires PHP: 5.3 -Stable tag: 2.9.2 +Stable tag: 3.1.0 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html -BuddyPress adds community features to WordPress. Member Profiles, Activity Streams, Direct Messaging, Notifications, and more! +BuddyPress helps site builders & developers add community features to their websites, with user profiles, activity streams, and more! == Description == Are you looking for modern, robust, and sophisticated social network software? BuddyPress is a suite of components that are common to a typical social network, and allows for great add-on features through WordPress's extensive plugin system. -BuddyPress is focused on ease of integration, ease of use, and extensibility. It is deliberately powerful yet unbelievably simple social network software, built by contributors to WordPress. +Aimed at site builders & developers, BuddyPress is focused on ease of integration, ease of use, and extensibility. It is deliberately powerful yet unbelievably simple social network software, built by contributors to WordPress. -Enable registered members to create profiles, have private conversations, make connections, create & interact in groups, and much more. Truly a social network in a box, BuddyPress helps you more easily build a home for your company, school, sports team, or other niche community. +https://wordpress.tv/2015/08/23/rocio-valdivia-buddypress-much-more-than-a-plugin/ -= Extensions = +Members can register on your site to create user profiles, have private conversations, make social connections, create and interact in groups, and much more. Truly a social network in a box, BuddyPress helps you build a home for your company, school, sports team, or other niche community. -BuddyPress has an ever-increasing array of extended features developed by an active and thriving plugin development community, with hundreds of free-and-open BuddyPress-compatible plugins available at <a href="https://wordpress.org/plugins/search.php?q=buddypress">WordPress.org</a>. Any plugin can be conveniently installed using the plugin installer in your WordPress Dashboard. += Built with developers in mind = -= More Information = +BuddyPress helps site builders & developers add community features to their websites. It comes with a robust theme compatibility API that does its best to make every BuddyPress content page look and feel right with just about any WordPress theme. You will likely need to adjust some styling on your own to make everything look pristine. -Visit the <a href="https://buddypress.org/">BuddyPress website</a> for documentation, support, and information on getting involved in the project and community. +BuddyPress themes are just WordPress themes with additional templates, and with a little work, you could easily create your own, too! A handful of BuddyPress-specific themes are readily available for download from WordPress.org, and lots more are available from third-party theme authors. -== Installation == +BuddyPress also comes with built-in support for Akismet and [bbPress](https://wordpress.org/plugins/bbpress/), two very popular and very powerful WordPress plugins. If you're using either, visit their settings pages and ensure everything is configured to your liking. -= From your WordPress dashboard = += The BuddyPress ecosystem = -1. Visit 'Plugins > Add New' -2. Search for 'BuddyPress' -3. Activate BuddyPress from your Plugins page. (You will be greeted with a Welcome page.) +WordPress.org is home to some amazing extensions for BuddyPress, including: -= From WordPress.org = +- [rtMedia for WordPress, BuddyPress and bbPress](https://wordpress.org/plugins/buddypress-media/) +- [BuddyPress Docs](https://wordpress.org/plugins/buddypress-docs/) +- [BuddyPress Activity Plus](https://wordpress.org/plugins/buddypress-activity-plus/) -1. Download BuddyPress. -2. Upload the 'buddypress' directory to your '/wp-content/plugins/' directory, using your favorite method (ftp, sftp, scp, etc...) -3. Activate BuddyPress from your Plugins page. (You will be greeted with a Welcome page.) +Search WordPress.org for "BuddyPress" to find them all! -= Once Activated = += Join our community = -1. If you do not have pretty permalinks enabled, you will see a notice to enable them. (BuddyPress will not currently work without them.) -2. Visit 'Settings > BuddyPress > Components' and adjust the active components to match your community. (You can always toggle these later.) -3. Visit 'Settings > BuddyPress > Pages' and setup your directories and special pages. We create a few automatically, but suggest you customize these to fit the flow and verbiage of your site. -4. Visit 'Settings > BuddyPress > Settings' and take a moment to match BuddyPress's settings to your expectations. We pick the most common configuration by default, but every community is different. +If you're interested in contributing to BuddyPress, we'd love to have you. Head over to the [BuddyPress Documentation](https://codex.buddypress.org/participate-and-contribute/) site to find out how you can pitch in. -= Once Configured = +BuddyPress is available in many languages thanks to the volunteer efforts of individuals all around the world. Check out our <a href="https://codex.buddypress.org/translations/">translations page</a> on the BuddyPress Documentation site for more details. If you are a polygot, please <a href="https://translate.wordpress.org/projects/wp-plugins/buddypress">consider helping translate BuddyPress</a> into your language. -* BuddyPress comes with a robust theme-compatibility API that does its best to make every BuddyPress page look and feel right with just-about any WordPress theme. You may need to adjust some styling on your own to make everything look pristine. -* A few BuddyPress specific themes are readily available for download from WordPress.org, and hundreds more are available from third-party theme authors. BuddyPress themes are just WordPress themes with additional templates for each component, and with a little work you could easily create your own too! -* BuddyPress also comes with built-in support for Akismet and bbPress, two very popular and very powerful WordPress plugins. If you're using either, visit their settings pages and ensure everything is configured to your liking. +Growing the BuddyPress community means better software for everyone! -= Multisite & Multiple Networks = +== Installation == -BuddyPress can be activated and operate in just about any scope you need for it to. += Requirements = -* Activate at the site level to only load BuddyPress on that site. -* Activate at the network level for full integration with all sites in your network. (This is the most common multisite installation type.) -* Enable <a href="https://codex.buddypress.org/getting-started/customizing/bp_enable_multiblog/">multiblog</a> mode to allow your BuddyPress content to be displayed on any site in your WordPress Multisite network, using the same central data. -* Extend BuddyPress with a third-party multi-network plugin to allow each site or network to have an isolated and dedicated community, all from the same WordPress installation. +To run BuddyPress, we recommend your host supports: -Read more about custom BuddyPress activations <a href="https://codex.buddypress.org/getting-started/installation-in-wordpress-multisite/">on our codex page.</a> +* PHP version 7.2 or greater. +* MySQL version 5.6 or greater, or, MariaDB version 10.0 or greater. +* HTTPS support. -= Discussion Forums = += Automatic installation = -Try <a href="https://wordpress.org/plugins/bbpress/">bbPress</a>. It integrates with BuddyPress Groups, Profiles, and Notifications. Each group on your site can choose to have its own forum, and each user's topics, replies, favorites, and subscriptions appear in their profiles. +Automatic installation is the easiest option as WordPress handles everything itself. To do an automatic install of BuddyPress, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New. + +In the search field type "BuddyPress" and click Search Plugins. Once you've found it, you can view details about the latest release, such as community reviews, ratings, and description. Install BuddyPress by simply pressing "Install Now". + +Once activated: + +1. Visit 'Settings > BuddyPress > Components' and adjust the active components to match your community. (You can always toggle these later.) +2. Visit 'Settings > BuddyPress > Pages' and setup your directories and special pages. We create a few automatically, but suggest you customize these to fit the flow and verbiage of your site. +3. Visit 'Settings > BuddyPress > Settings' and take a moment to match BuddyPress's settings to your expectations. We pick the most common configuration by default, but every community is different. == Frequently Asked Questions == @@ -78,13 +78,22 @@ Yes! BuddyPress works out-of-the-box with nearly every WordPress theme. Yes! If your WordPress installation has multisite enabled, BuddyPress will support the global tracking of blogs, posts, comments, and even custom post types with a little bit of custom code. +Furthermore, BuddyPress can be activated and operate in just about any scope you need for it to: + +* Activate at the site level to only load BuddyPress on that site. +* Activate at the network level for full integration with all sites in your network. (This is the most common multisite installation type.) +* Enable <a href="https://codex.buddypress.org/getting-started/customizing/bp_enable_multiblog/">multiblog</a> mode to allow your BuddyPress content to be displayed on any site in your WordPress Multisite network, using the same central data. +* Extend BuddyPress with a third-party multi-network plugin to allow each site or network to have an isolated and dedicated community, all from the same WordPress installation. + +Read <a href="https://codex.buddypress.org/getting-started/installation-in-wordpress-multisite/">custom BuddyPress activations </a> for more information. + = Where can I get support? = Our community provides free support at <a href="https://buddypress.org/support/">https://buddypress.org/support/</a>. = Where can I find documentation? = -Our codex can be found at <a href="https://codex.buddypress.org/">https://codex.buddypress.org/</a>. +Our documentation site can be found at <a href="https://codex.buddypress.org/">https://codex.buddypress.org/</a>. = Where can I report a bug? = @@ -96,7 +105,13 @@ Check out the development trunk of BuddyPress from Subversion at <a href="https: = Who builds BuddyPress? = -BuddyPress is free software, built by an international community of volunteers. Some contributors to BuddyPress are employed by companies that use BuddyPress, while others are consultants who offer BuddyPress-related services for hire. No one is paid by the BuddyPress project for his or her contributions. If you would like to provide monetary support to BuddyPress, please consider a donation to the <a href="http://wordpressfoundation.org">WordPress Foundation</a>, or ask your favorite contributor how they prefer to have their efforts rewarded. +BuddyPress is free software, built by an international community of volunteers. Some contributors to BuddyPress are employed by companies that use BuddyPress, while others are consultants who offer BuddyPress-related services for hire. No one is paid by the BuddyPress project for his or her contributions. + +If you would like to provide monetary support to BuddyPress, please consider a donation to the <a href="https://wordpressfoundation.org">WordPress Foundation</a>, or ask your favorite contributor how they prefer to have their efforts rewarded. + += Discussion Forums = + +Try <a href="https://wordpress.org/plugins/bbpress/">bbPress</a>. It integrates with BuddyPress Groups, Profiles, and Notifications. Each group on your site can choose to have its own forum, and each user's topics, replies, favorites, and subscriptions appear in their profiles. == Screenshots == @@ -109,18 +124,13 @@ BuddyPress is free software, built by an international community of volunteers. 7. **Site Tracking** - Track posts and comments in the activity stream, and allow your users to add their own blogs using WordPress' Multisite feature. 8. **Notifications** - Keep your members up-to-date with relevant activity via toolbar and email notifications. -== Languages == - -BuddyPress is available in many languages thanks to the volunteer efforts of individuals all around the world. Check out our <a href="https://codex.buddypress.org/translations/">translations page</a> on the BuddyPress Codex for more details. - -Please consider helping translate BuddyPress at our <a href="https://translate.wordpress.org/projects/wp-plugins/buddypress">GlotPress project</a>. Growing the BuddyPress community means better software for everyone! - == Upgrade Notice == -= 2.9.2 = -See: https://codex.buddypress.org/releases/version-2-9-2/ += 3.1.0 = +See: https://codex.buddypress.org/releases/version-3-1-0/ == Changelog == -= 2.9.2 = -See: https://codex.buddypress.org/releases/version-2-9-2/ += 3.1.0 = + +See: https://codex.buddypress.org/releases/version-3-1-0/