Skip to:
Content

BuddyPress.org

Ticket #8394: 8394.patch

File 8394.patch, 13.9 KB (added by imath, 3 years ago)
  • src/bp-members/bp-members-functions.php

    diff --git src/bp-members/bp-members-functions.php src/bp-members/bp-members-functions.php
    index ab02eae92..165bc97c3 100644
    function bp_get_member_type_tax_labels() { 
    27182718                        // Specific to BuddyPress.
    27192719                        'bp_type_id_label'           => _x( 'Member Type ID', 'BP Member type ID label', 'buddypress' ),
    27202720                        'bp_type_id_description'     => _x( 'Enter a lower-case string without spaces or special characters (used internally to identify the member type).', 'BP Member type ID description', 'buddypress' ),
     2721                        'bp_type_show_in_list'       => _x( 'Show on Member', 'BP Member type show in list', 'buddypress' ),
    27212722                )
    27222723        );
    27232724}
    function bp_get_member_type_tax_args() { 
    27622763function bp_get_member_type_metadata_schema( $schema = array(), $taxonomy = '' ) {
    27632764        if ( bp_get_member_type_tax_name() === $taxonomy ) {
    27642765
    2765                 // Directory
     2766                // Directory.
    27662767                if ( isset( $schema['bp_type_has_directory']['description'] ) ) {
    27672768                        $schema['bp_type_has_directory']['description'] = __( 'Make a list of members matching this type available on the members directory.', 'buddypress' );
    27682769                }
    27692770
    2770                 // Slug
     2771                // Slug.
    27712772                if ( isset( $schema['bp_type_directory_slug']['description'] ) ) {
    27722773                        $schema['bp_type_directory_slug']['description'] = __( 'Enter if you want the type slug to be different from its ID.', 'buddypress' );
    27732774                }
     2775
     2776                // List.
     2777                $schema['bp_type_show_in_list'] = array(
     2778                        'description'       => __( 'Show where member types may be listed, like in the member header.', 'buddypress' ),
     2779                        'type'              => 'boolean',
     2780                        'single'            => true,
     2781                        'sanitize_callback' => 'absint',
     2782                );
    27742783        }
    27752784
    27762785        return $schema;
    add_action( 'bp_register_type_metadata', 'bp_register_member_type_metadata' ); 
    28102819 *                                      Pass `true` to use the `$member_type` string as the type's slug.
    28112820 *                                      Pass a string to customize the slug. Pass `false` to disable.
    28122821 *                                      Default: true.
     2822 *     @type bool        $show_in_list  Whether this member type should be shown in lists rendered by
     2823 *                                      bp_member_type_list(). Default: false.
     2824 *     @type bool        $code          Whether this member type is registered using code. Default: true.
     2825 *     @type int         $db_id         The member type term ID. Default: 0.
    28132826 * }
    28142827 * @return object|WP_Error Member type object on success, WP_Error object on failure.
    28152828 */
    function bp_register_member_type( $member_type, $args = array() ) { 
    28232836        $r = bp_parse_args( $args, array(
    28242837                'labels'        => array(),
    28252838                'has_directory' => true,
     2839                'show_in_list'  => false,
    28262840                'code'          => true,
    28272841                'db_id'         => 0,
    28282842        ), 'register_member_type' );
    function bp_register_member_type( $member_type, $args = array() ) { 
    28722886                $r['has_directory']  = false;
    28732887        }
    28742888
     2889        // Show the list of member types on front-end (member header, for now).
     2890        $r['show_in_list'] = (bool) $r['show_in_list'];
     2891
    28752892        $bp->members->types[ $member_type ] = $type = (object) $r;
    28762893
    28772894        /**
  • src/bp-members/bp-members-template.php

    diff --git src/bp-members/bp-members-template.php src/bp-members/bp-members-template.php
    index e202ea11b..dad6b6110 100644
    function bp_last_activity( $user_id = 0 ) { 
    16891689                if ( empty( $user_id ) )
    16901690                        $user_id = bp_displayed_user_id();
    16911691
    1692                 $last_activity = bp_core_get_last_activity( bp_get_user_last_activity( $user_id ), __('active %s', 'buddypress') );
     1692                $last_activity = bp_core_get_last_activity( bp_get_user_last_activity( $user_id ), __( 'Active %s', 'buddypress' ) );
    16931693
    16941694                /**
    16951695                 * Filters the 'active [x days ago]' string for a user.
    function bp_current_member_type_message() { 
    20172017                return apply_filters( 'bp_get_current_member_type_message', $message );
    20182018        }
    20192019
     2020/**
     2021 * Output member type directory link.
     2022 *
     2023 * @since 7.0.0
     2024 *
     2025 * @param string $member_type Unique member type identifier as used in bp_register_member_type().
     2026 */
     2027function bp_member_type_directory_link( $member_type = '' ) {
     2028        echo bp_get_member_type_directory_link( $member_type );
     2029}
     2030        /**
     2031         * Return member type directory link.
     2032         *
     2033         * @since 7.0.0
     2034         *
     2035         * @param string $member_type Unique member type identifier as used in bp_register_member_type().
     2036         * @return string
     2037         */
     2038        function bp_get_member_type_directory_link( $member_type = '' ) {
     2039                if ( empty( $member_type ) ) {
     2040                        return '';
     2041                }
     2042
     2043                $member_type_object = bp_get_member_type_object( $member_type );
     2044
     2045                if ( ! isset( $member_type_object->labels['name'] ) ) {
     2046                        return '';
     2047                }
     2048
     2049                return sprintf(
     2050                        '<a href="%1$s">%2$s</a>',
     2051                        esc_url( bp_get_member_type_directory_permalink( $member_type ) ),
     2052                        esc_html( $member_type_object->labels['name'] )
     2053                );
     2054        }
     2055
     2056/**
     2057 * Output a comma-delimited list of member types.
     2058 *
     2059 * @since 7.0.0
     2060 * @see   bp_get_member_type_list() For additional information on default arguments.
     2061 *
     2062 * @param int   $user_id User ID.
     2063 * @param array $r       Optional. Member type list arguments. Default empty array.
     2064 */
     2065function bp_member_type_list( $user_id = 0, $r = array() ) {
     2066        echo bp_get_member_type_list( $user_id, $r );
     2067}
     2068        /**
     2069         * Return a comma-delimited list of member types.
     2070         *
     2071         * @since 7.0.0
     2072         *
     2073         * @param int $user_id User ID. Defaults to displayed user ID if on a member page.
     2074         * @param array|string $r {
     2075         *     Array of parameters. All items are optional.
     2076         *     @type string $parent_element     Element to wrap around the list. Defaults to 'p'.
     2077         *     @type array  $parent_attr        Element attributes for parent element. Defaults to
     2078         *                                      array( 'class' => 'bp-member-type-list' ).
     2079         *     @type string $label              Label to add before the list. Defaults to 'Member Types:'.
     2080         *     @type string $label_element      Element to wrap around the label. Defaults to 'strong'.
     2081         *     @type array  $label_attr         Element attributes for label element. Defaults to array().
     2082         *     @type bool   $show_all           Whether to show all registered group types. Defaults to 'false'. If
     2083         *                                      'false', only shows member types with the 'show_in_list' parameter set to
     2084         *                                      true. See bp_register_member_type() for more info.
     2085         *     @type string $list_element       Element to wrap around the comma separated list of membet types. Defaults to ''.
     2086         *     @type string $list_element_attr  Element attributes for list element. Defaults to array().
     2087         * }
     2088         * @return string
     2089         */
     2090        function bp_get_member_type_list( $user_id = 0, $r = array() ) {
     2091                if ( empty( $user_id ) ) {
     2092                        $user_id = bp_displayed_user_id();
     2093                }
     2094
     2095                $r = bp_parse_args(
     2096                        $r,
     2097                        array(
     2098                                'parent_element'    => 'p',
     2099                                'parent_attr'       => array(
     2100                                        'class' => 'bp-member-type-list',
     2101                                ),
     2102                                'label'             => __( 'Member Types:', 'buddypress' ),
     2103                                'label_element'     => 'strong',
     2104                                'label_attr'        => array(),
     2105                                'show_all'          => false,
     2106                                'list_element'      => '',
     2107                                'list_element_attr' => array(),
     2108                        ),
     2109                        'member_type_list'
     2110                );
     2111
     2112                $retval = '';
     2113                $types  = bp_get_member_type( $user_id, false );
     2114
     2115                if ( $types ) {
     2116                        // Make sure we can show the type in the list.
     2117                        if ( false === $r['show_all'] ) {
     2118                                $types = array_intersect( bp_get_member_types( array( 'show_in_list' => true ) ), $types );
     2119                                if ( empty( $types ) ) {
     2120                                        return $retval;
     2121                                }
     2122                        }
     2123
     2124                        $before = $after = $label = '';
     2125
     2126                        // Render parent element.
     2127                        if ( ! empty( $r['parent_element'] ) ) {
     2128                                $parent_elem = new BP_Core_HTML_Element( array(
     2129                                        'element' => $r['parent_element'],
     2130                                        'attr'    => $r['parent_attr']
     2131                                ) );
     2132
     2133                                // Set before and after.
     2134                                $before = $parent_elem->get( 'open_tag' );
     2135                                $after  = $parent_elem->get( 'close_tag' );
     2136                        }
     2137
     2138                        // Render label element.
     2139                        if ( ! empty( $r['label_element'] ) ) {
     2140                                $label = new BP_Core_HTML_Element( array(
     2141                                        'element'    => $r['label_element'],
     2142                                        'attr'       => $r['label_attr'],
     2143                                        'inner_html' => esc_html( $r['label'] )
     2144                                ) );
     2145                                $label = $label->contents() . ' ';
     2146
     2147                        // No element, just the label.
     2148                        } else {
     2149                                $label = esc_html( $r['label'] );
     2150                        }
     2151
     2152                        // The list of types.
     2153                        $list = implode( ', ', array_map( 'bp_get_member_type_directory_link', $types ) );
     2154
     2155                        // Render the list of types element.
     2156                        if ( ! empty( $r['list_element'] ) ) {
     2157                                $list_element = new BP_Core_HTML_Element( array(
     2158                                        'element'    => $r['list_element'],
     2159                                        'attr'       => $r['list_element_attr'],
     2160                                        'inner_html' => $list,
     2161                                ) );
     2162
     2163                                $list = $list_element->contents();
     2164                        }
     2165
     2166                        // Comma-delimit each type into the group type directory link.
     2167                        $label .= $list;
     2168
     2169                        // Retval time!
     2170                        $retval = $before . $label . $after;
     2171                }
     2172
     2173                return $retval;
     2174        }
     2175
    20202176/** Signup Form ***************************************************************/
    20212177
    20222178/**
  • src/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php

    diff --git src/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php src/bp-templates/bp-nouveau/buddypress/members/single/cover-image-header.php
    index 5315091c2..763cdeba8 100644
     
    3333                                        'container_classes' => array( 'member-header-actions' ),
    3434                                )
    3535                        );
    36 ?>
     36                        ?>
    3737
    3838                        <?php bp_nouveau_member_hook( 'before', 'header_meta' ); ?>
    3939
     
    4545                                </div><!-- #item-meta -->
    4646                        <?php endif; ?>
    4747
     48                        <?php
     49                        bp_member_type_list(
     50                                bp_displayed_user_id(),
     51                                array(
     52                                        'label'        => __( 'Member Types', 'buddypress' ),
     53                                        'list_element' => 'span',
     54                                )
     55                        );
     56                        ?>
     57
    4858                </div><!-- #item-header-content -->
    4959
    5060        </div><!-- #item-header-cover-image -->
  • src/bp-templates/bp-nouveau/buddypress/members/single/member-header.php

    diff --git src/bp-templates/bp-nouveau/buddypress/members/single/member-header.php src/bp-templates/bp-nouveau/buddypress/members/single/member-header.php
    index e82926bed..01413d709 100644
     
    3131                </div><!-- #item-meta -->
    3232        <?php endif; ?>
    3333
     34        <?php
     35        bp_member_type_list(
     36                bp_displayed_user_id(),
     37                array(
     38                        'label'        => __( 'Member Types', 'buddypress' ),
     39                        'list_element' => 'span',
     40                )
     41        );
     42        ?>
     43
    3444        <?php bp_nouveau_member_header_buttons( array( 'container_classes' => array( 'member-header-actions' ) ) ); ?>
    3545</div><!-- #item-header-content -->
  • src/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss

    diff --git src/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss src/bp-templates/bp-nouveau/common-styles/_bp_user_header.scss
    index 4b8449dd0..10d4a5d86 100644
     
    11// BP Single User Specific Header Styles
    2 // @version 3.0.0
     2// @since 3.0.0
     3// @version 7.0.0
    34
    4 .bp-user {
     5body.buddypress.bp-user {
    56
    6         .users-header {
     7        .buddypress-wrap {
    78
    8                 .user-nicename {
    9                         margin-bottom: $marg-xsml;
     9                .users-header {
     10
     11                        h2.user-nicename {
     12                                margin-top: 0;
     13                                margin-bottom: $marg-xsml;
     14                        }
     15
     16                        .bp-member-type-list {
     17                                padding-bottom: 0.5em;
     18
     19                                @include font-size(18);
     20                                margin: 0;
     21                                color: $black;
     22                                display: flex;
     23
     24                                strong {
     25                                        padding-right: $pad-med;
     26                                        white-space: nowrap;
     27                                }
     28                        }
    1029                }
    11         }
    1230
    13         .member-header-actions {
    14                 overflow: hidden;
     31                .member-header-actions {
     32                        overflow: hidden;
     33                        padding-left: 0;
    1534
    16                 * > * {
    17                         display: block;
     35                        * > * {
     36                                display: block;
     37                        }
    1838                }
    1939        }
    2040}
  • src/bp-templates/bp-nouveau/css/buddypress-rtl.css

    diff --git src/bp-templates/bp-nouveau/css/buddypress-rtl.css src/bp-templates/bp-nouveau/css/buddypress-rtl.css
    index abe37caa7..3f55a7e34 100644
    body.no-js .single-item-header .js-self-profile-button { 
    24042404* User Accounts Specific Item Header
    24052405*-----------------------------------------------------
    24062406*/
    2407 .bp-user .users-header .user-nicename {
     2407body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename {
     2408        margin-top: 0;
    24082409        margin-bottom: 5px;
    24092410}
    24102411
    2411 .bp-user .member-header-actions {
     2412body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list {
     2413        padding-bottom: 0.5em;
     2414        font-size: 18px;
     2415        margin: 0;
     2416        color: #333;
     2417        display: flex;
     2418}
     2419
     2420body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong {
     2421        padding-left: 1em;
     2422        white-space: nowrap;
     2423}
     2424
     2425body.buddypress.bp-user .buddypress-wrap .member-header-actions {
    24122426        overflow: hidden;
     2427        padding-right: 0;
    24132428}
    24142429
    2415 .bp-user .member-header-actions * > * {
     2430body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
    24162431        display: block;
    24172432}
    24182433
  • src/bp-templates/bp-nouveau/css/buddypress.css

    diff --git src/bp-templates/bp-nouveau/css/buddypress.css src/bp-templates/bp-nouveau/css/buddypress.css
    index b3df10a7e..906c225b9 100644
    body.no-js .single-item-header .js-self-profile-button { 
    24042404* User Accounts Specific Item Header
    24052405*-----------------------------------------------------
    24062406*/
    2407 .bp-user .users-header .user-nicename {
     2407body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename {
     2408        margin-top: 0;
    24082409        margin-bottom: 5px;
    24092410}
    24102411
    2411 .bp-user .member-header-actions {
     2412body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list {
     2413        padding-bottom: 0.5em;
     2414        font-size: 18px;
     2415        margin: 0;
     2416        color: #333;
     2417        display: flex;
     2418}
     2419
     2420body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong {
     2421        padding-right: 1em;
     2422        white-space: nowrap;
     2423}
     2424
     2425body.buddypress.bp-user .buddypress-wrap .member-header-actions {
    24122426        overflow: hidden;
     2427        padding-left: 0;
    24132428}
    24142429
    2415 .bp-user .member-header-actions * > * {
     2430body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * {
    24162431        display: block;
    24172432}
    24182433