Ticket #8394: 8394.patch
File 8394.patch, 13.9 KB (added by , 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() { 2718 2718 // Specific to BuddyPress. 2719 2719 'bp_type_id_label' => _x( 'Member Type ID', 'BP Member type ID label', 'buddypress' ), 2720 2720 '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' ), 2721 2722 ) 2722 2723 ); 2723 2724 } … … function bp_get_member_type_tax_args() { 2762 2763 function bp_get_member_type_metadata_schema( $schema = array(), $taxonomy = '' ) { 2763 2764 if ( bp_get_member_type_tax_name() === $taxonomy ) { 2764 2765 2765 // Directory 2766 // Directory. 2766 2767 if ( isset( $schema['bp_type_has_directory']['description'] ) ) { 2767 2768 $schema['bp_type_has_directory']['description'] = __( 'Make a list of members matching this type available on the members directory.', 'buddypress' ); 2768 2769 } 2769 2770 2770 // Slug 2771 // Slug. 2771 2772 if ( isset( $schema['bp_type_directory_slug']['description'] ) ) { 2772 2773 $schema['bp_type_directory_slug']['description'] = __( 'Enter if you want the type slug to be different from its ID.', 'buddypress' ); 2773 2774 } 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 ); 2774 2783 } 2775 2784 2776 2785 return $schema; … … add_action( 'bp_register_type_metadata', 'bp_register_member_type_metadata' ); 2810 2819 * Pass `true` to use the `$member_type` string as the type's slug. 2811 2820 * Pass a string to customize the slug. Pass `false` to disable. 2812 2821 * 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. 2813 2826 * } 2814 2827 * @return object|WP_Error Member type object on success, WP_Error object on failure. 2815 2828 */ … … function bp_register_member_type( $member_type, $args = array() ) { 2823 2836 $r = bp_parse_args( $args, array( 2824 2837 'labels' => array(), 2825 2838 'has_directory' => true, 2839 'show_in_list' => false, 2826 2840 'code' => true, 2827 2841 'db_id' => 0, 2828 2842 ), 'register_member_type' ); … … function bp_register_member_type( $member_type, $args = array() ) { 2872 2886 $r['has_directory'] = false; 2873 2887 } 2874 2888 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 2875 2892 $bp->members->types[ $member_type ] = $type = (object) $r; 2876 2893 2877 2894 /** -
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 ) { 1689 1689 if ( empty( $user_id ) ) 1690 1690 $user_id = bp_displayed_user_id(); 1691 1691 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' ) ); 1693 1693 1694 1694 /** 1695 1695 * Filters the 'active [x days ago]' string for a user. … … function bp_current_member_type_message() { 2017 2017 return apply_filters( 'bp_get_current_member_type_message', $message ); 2018 2018 } 2019 2019 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 */ 2027 function 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 */ 2065 function 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 2020 2176 /** Signup Form ***************************************************************/ 2021 2177 2022 2178 /** -
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
33 33 'container_classes' => array( 'member-header-actions' ), 34 34 ) 35 35 ); 36 ?>36 ?> 37 37 38 38 <?php bp_nouveau_member_hook( 'before', 'header_meta' ); ?> 39 39 … … 45 45 </div><!-- #item-meta --> 46 46 <?php endif; ?> 47 47 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 48 58 </div><!-- #item-header-content --> 49 59 50 60 </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
31 31 </div><!-- #item-meta --> 32 32 <?php endif; ?> 33 33 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 34 44 <?php bp_nouveau_member_header_buttons( array( 'container_classes' => array( 'member-header-actions' ) ) ); ?> 35 45 </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
1 1 // BP Single User Specific Header Styles 2 // @version 3.0.0 2 // @since 3.0.0 3 // @version 7.0.0 3 4 4 .bp-user {5 body.buddypress.bp-user { 5 6 6 . users-header{7 .buddypress-wrap { 7 8 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 } 10 29 } 11 }12 30 13 .member-header-actions { 14 overflow: hidden; 31 .member-header-actions { 32 overflow: hidden; 33 padding-left: 0; 15 34 16 * > * { 17 display: block; 35 * > * { 36 display: block; 37 } 18 38 } 19 39 } 20 40 } -
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 { 2404 2404 * User Accounts Specific Item Header 2405 2405 *----------------------------------------------------- 2406 2406 */ 2407 .bp-user .users-header .user-nicename { 2407 body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename { 2408 margin-top: 0; 2408 2409 margin-bottom: 5px; 2409 2410 } 2410 2411 2411 .bp-user .member-header-actions { 2412 body.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 2420 body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong { 2421 padding-left: 1em; 2422 white-space: nowrap; 2423 } 2424 2425 body.buddypress.bp-user .buddypress-wrap .member-header-actions { 2412 2426 overflow: hidden; 2427 padding-right: 0; 2413 2428 } 2414 2429 2415 .bp-user.member-header-actions * > * {2430 body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * { 2416 2431 display: block; 2417 2432 } 2418 2433 -
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 { 2404 2404 * User Accounts Specific Item Header 2405 2405 *----------------------------------------------------- 2406 2406 */ 2407 .bp-user .users-header .user-nicename { 2407 body.buddypress.bp-user .buddypress-wrap .users-header h2.user-nicename { 2408 margin-top: 0; 2408 2409 margin-bottom: 5px; 2409 2410 } 2410 2411 2411 .bp-user .member-header-actions { 2412 body.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 2420 body.buddypress.bp-user .buddypress-wrap .users-header .bp-member-type-list strong { 2421 padding-right: 1em; 2422 white-space: nowrap; 2423 } 2424 2425 body.buddypress.bp-user .buddypress-wrap .member-header-actions { 2412 2426 overflow: hidden; 2427 padding-left: 0; 2413 2428 } 2414 2429 2415 .bp-user.member-header-actions * > * {2430 body.buddypress.bp-user .buddypress-wrap .member-header-actions * > * { 2416 2431 display: block; 2417 2432 } 2418 2433