Changeset 13007
- Timestamp:
- 07/14/2021 10:06:43 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 14 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Gruntfile.js
r13006 r13007 51 51 '!bp-groups/css/blocks/dynamic-groups.css', 52 52 '!bp-messages/css/blocks/sitewide-notices.css', 53 '!bp-blogs/css/blocks/recent-posts.css' 53 '!bp-blogs/css/blocks/recent-posts.css', 54 '!bp-members/css/blocks/active-members.css', 55 '!bp-members/css/blocks/online-members.css' 54 56 ], 55 57 -
trunk/src/bp-members/bp-members-blocks.php
r13004 r13007 556 556 return $widget_content; 557 557 } 558 559 /** 560 * Common function to render the Recently Active & Online Members Blocks. 561 * 562 * @since 9.0.0 563 * 564 * @param array $block_args { 565 * Optional. An array of Block arguments. 566 * 567 * @type string $title The title of the Block. 568 * @type int $maxMembers The maximum number of members to show. Defaults to `0`. 569 * @type string $noMembers The string to output when there are no members to show. 570 * @type string $classname The name of the CSS class to use. 571 * @type string $type The type of filter to perform. Possible values are `online`, `active`, 572 * `newest`, `alphabetical`, `random` or `popular`. 573 * } 574 * @return string HTML output. 575 */ 576 function bp_members_render_members_avatars_block( $block_args = array() ) { 577 $args = bp_parse_args( 578 $block_args, 579 array( 580 'title' => '', 581 'maxMembers' => 0, 582 'noMembers' => '', 583 'classname' => '', 584 'type' => 'active', 585 ), 586 '' 587 ); 588 589 $title = $args['title']; 590 $max_members = (int) $args['maxMembers']; 591 $no_members = $args['noMembers']; 592 $classname = sanitize_key( $args['classname'] ); 593 $wrapper_attributes = get_block_wrapper_attributes( 594 array( 595 'class' => sprintf( '%s buddypress widget', $classname ), 596 ) 597 ); 598 $type = sanitize_key( $args['type'] ); 599 600 if ( $title ) { 601 $widget_content = sprintf( '<h2 class="widget-title">%s</h2>', esc_html( $title ) ); 602 } else { 603 $widget_content = ''; 604 } 605 606 // Query Users. 607 $query = bp_core_get_users( 608 array( 609 'user_id' => 0, 610 'type' => $type, 611 'per_page' => $max_members, 612 'max' => $max_members, 613 'populate_extras' => true, 614 'search_terms' => false, 615 ) 616 ); 617 618 // Build the output for online members. 619 if ( isset( $query['total'] ) && 1 <= (int) $query['total'] ) { 620 $members = $query['users']; 621 $member_avatars = array(); 622 623 foreach ( $members as $member ) { 624 $member_avatars[] = sprintf( 625 '<div class="item-avatar"> 626 <a href="%1$s" class="bp-tooltip" data-bp-tooltip="%2$s"> 627 <img loading="lazy" src="%3$s" class="avatar user-%4$s-avatar avatar-50 photo" width="50" height="50" alt="%5$s"> 628 </a> 629 </div>', 630 esc_url( bp_core_get_user_domain( $member->ID, $member->user_nicename, $member->user_login ) ), 631 esc_html( $member->display_name ), 632 bp_core_fetch_avatar( 633 array( 634 'item_id' => $member->ID, 635 'html' => false, 636 ) 637 ), 638 esc_attr( $member->ID ), 639 esc_html( 640 sprintf( 641 /* translators: %s: member name */ 642 __( 'Profile picture of %s', 'buddypress' ), 643 $member->display_name 644 ) 645 ) 646 ); 647 } 648 649 $widget_content .= sprintf( 650 '<div class="avatar-block"> 651 %s 652 </div>', 653 implode( "\n", $member_avatars ) 654 ); 655 } else { 656 $widget_content .= sprintf( 657 '<div class="widget-error"> 658 %s 659 </div>', 660 esc_html( $no_members ) 661 ); 662 } 663 664 // Only add a block wrapper if not loaded into a Widgets sidebar. 665 if ( ! did_action( 'dynamic_sidebar_before' ) ) { 666 return sprintf( 667 '<div %1$s>%2$s</div>', 668 $wrapper_attributes, 669 $widget_content 670 ); 671 } 672 673 return $widget_content; 674 } 675 676 /** 677 * Callback function to render the Online Members Block. 678 * 679 * @since 9.0.0 680 * 681 * @param array $attributes The block attributes. 682 * @return string HTML output. 683 */ 684 function bp_members_render_online_members_block( $attributes = array() ) { 685 $block_args = bp_parse_args( 686 $attributes, 687 array( 688 'title' => __( 'Who\'s Online', 'buddypress' ), 689 'maxMembers' => 15, 690 'noMembers' => __( 'There are no users currently online', 'buddypress' ), 691 'classname' => 'widget_bp_core_whos_online_widget', 692 ), 693 'members_widget_settings' 694 ); 695 696 $block_args['type'] = 'online'; 697 698 return bp_members_render_members_avatars_block( $block_args ); 699 } 700 701 /** 702 * Callback function to render the Recently Active Members Block. 703 * 704 * @since 9.0.0 705 * 706 * @param array $attributes The block attributes. 707 * @return string HTML output. 708 */ 709 function bp_members_render_active_members_block( $attributes = array() ) { 710 $block_args = bp_parse_args( 711 $attributes, 712 array( 713 'title' => __( 'Recently Active Members', 'buddypress' ), 714 'maxMembers' => 15, 715 'noMembers' => __( 'There are no recently active members', 'buddypress' ), 716 'classname' => 'widget_bp_core_recently_active_widget', 717 ), 718 'recently_active_members_widget_settings' 719 ); 720 721 $block_args['type'] = 'active'; 722 723 return bp_members_render_members_avatars_block( $block_args ); 724 } -
trunk/src/bp-members/classes/class-bp-members-component.php
r13003 r13007 201 201 'bp/dynamic-members' => array( 202 202 'widget_classnames' => array( 'widget_bp_core_members_widget', 'buddypress' ), 203 ) 203 ), 204 'bp/online-members' => array( 205 'widget_classnames' => array( 'widget_bp_core_whos_online_widget', 'buddypress' ), 206 ), 207 'bp/active-members' => array( 208 'widget_classnames' => array( 'widget_bp_core_recently_active_widget', 'buddypress' ), 209 ), 204 210 ), 205 211 ); … … 863 869 'render_callback' => 'bp_members_render_dynamic_members_block', 864 870 ), 871 'bp/online-members' => array( 872 'name' => 'bp/online-members', 873 'editor_script' => 'bp-online-members-block', 874 'editor_script_url' => plugins_url( 'js/blocks/online-members.js', dirname( __FILE__ ) ), 875 'editor_script_deps' => array( 876 'wp-blocks', 877 'wp-element', 878 'wp-components', 879 'wp-i18n', 880 'wp-block-editor', 881 'bp-block-components', 882 ), 883 'editor_style' => 'bp-online-members-block', 884 'editor_style_url' => plugins_url( 'css/blocks/online-members.css', dirname( __FILE__ ) ), 885 'attributes' => array( 886 'title' => array( 887 'type' => 'string', 888 'default' => __( 'Who\'s Online', 'buddypress' ), 889 ), 890 'maxMembers' => array( 891 'type' => 'number', 892 'default' => 15, 893 ), 894 ), 895 'render_callback' => 'bp_members_render_online_members_block', 896 ), 897 'bp/active-members' => array( 898 'name' => 'bp/active-members', 899 'editor_script' => 'bp-active-members-block', 900 'editor_script_url' => plugins_url( 'js/blocks/active-members.js', dirname( __FILE__ ) ), 901 'editor_script_deps' => array( 902 'wp-blocks', 903 'wp-element', 904 'wp-components', 905 'wp-i18n', 906 'wp-block-editor', 907 'bp-block-components', 908 ), 909 'editor_style' => 'bp-active-members-block', 910 'editor_style_url' => plugins_url( 'css/blocks/active-members.css', dirname( __FILE__ ) ), 911 'attributes' => array( 912 'title' => array( 913 'type' => 'string', 914 'default' => __( 'Recently Active Members', 'buddypress' ), 915 ), 916 'maxMembers' => array( 917 'type' => 'number', 918 'default' => 15, 919 ), 920 ), 921 'render_callback' => 'bp_members_render_active_members_block', 922 ), 865 923 ) 866 924 );
Note: See TracChangeset
for help on using the changeset viewer.