Ticket #5008: 5008.patch
File 5008.patch, 18.9 KB (added by , 10 years ago) |
---|
-
bp-friends/bp-friends-loader.php
39 39 'template', 40 40 'functions', 41 41 'notifications', 42 'widgets' 42 43 ); 43 44 44 45 parent::includes( $includes ); -
bp-friends/bp-friends-widgets.php
1 <?php 2 /** 3 * BuddyPress Widgets 4 * 5 * @package BuddyPress 6 * @subpackage Friends 7 * @since 1.9.0 8 */ 9 10 // Exit if accessed directly 11 if ( ! defined( 'ABSPATH' ) ) exit; 12 13 /* Register widgets for the core component */ 14 function bp_friends_register_widgets() { 15 16 if( bp_is_active( 'friends' ) ) 17 add_action( 'widgets_init', create_function( '', 'return register_widget("BP_Core_Friends_Widget");' ) ); 18 } 19 20 add_action( 'bp_register_widgets', 'bp_friends_register_widgets' ); 21 22 /*** MEMBER FRIENDS WIDGET *****************/ 23 24 class BP_Core_Friends_Widget extends WP_Widget { 25 26 function __construct() { 27 $widget_ops = array( 28 'description' => __( 'A dynamic list of recently active, popular, and newest Friends of the displayed member. Widget is only shown when viewing a member profile.', 'buddypress' ), 29 'classname' => 'widget_bp_core_friends_widget buddypress widget', 30 ); 31 parent::__construct( false, $name = _x( '(BuddyPress) Friends', 'widget name', 'buddypress' ), $widget_ops ); 32 33 } 34 35 function widget( $args, $instance ) { 36 37 38 global $bp; 39 extract( $args ); 40 41 if ( bp_displayed_user_domain() ) { 42 43 $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; 44 wp_enqueue_script( 'bp_core_widget_friends-js', BP_PLUGIN_URL . "bp-friends/js/widget-friends{$min}.js", array( 'jquery' ), bp_get_version() ); 45 46 $user_id = bp_displayed_user_id(); 47 $link = bp_displayed_user_domain() .bp_get_friends_slug(); 48 $instance['title'] = sprintf( __( '%s friends', 'buddypress' ), bp_get_displayed_user_fullname() ); 49 50 } else { 51 return; 52 } 53 54 if ( ! $instance['friend_default'] ) 55 $instance['friend_default'] = 'active'; 56 57 $title = apply_filters( 'widget_title', $instance['title'] ); 58 59 echo $before_widget; 60 61 $title = $instance['link_title'] ? '<a href="' . esc_url( $link ) . '">' . esc_html( $title ) . '</a>' : esc_html( $title ); 62 63 echo $before_title . $title .$after_title; 64 ?> 65 66 <?php if ( bp_has_members( 'user_id=' . absint( $user_id ) . '&type=' . sanitize_text_field( $instance['friend_default'] ) . '&max=' . absint( $instance['max_friends'] ) . '&populate_extras=1' ) ) : ?> 67 <div class="item-options" id="friends-list-options"> 68 <a href="<?php bp_members_directory_permalink(); ?>" id="newest-friends" <?php if ( $instance['friend_default'] == 'newest' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></a> 69 | <a href="<?php bp_members_directory_permalink(); ?>" id="recently-active-friends" <?php if ( $instance['friend_default'] == 'active' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></a> 70 | <a href="<?php bp_members_directory_permalink(); ?>" id="popular-friends" <?php if ( $instance['friend_default'] == 'popular' ) : ?>class="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></a> 71 </div> 72 73 <ul id="friends-list" class="item-list"> 74 <?php while ( bp_members() ) : bp_the_member(); ?> 75 <li class="vcard"> 76 <div class="item-avatar"> 77 <a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_avatar() ?></a> 78 </div> 79 80 <div class="item"> 81 <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> 82 <div class="item-meta"> 83 <span class="activity"> 84 <?php 85 if ( 'newest' == $instance['friend_default'] ) 86 bp_member_registered(); 87 if ( 'active' == $instance['friend_default'] ) 88 bp_member_last_active(); 89 if ( 'popular' == $instance['friend_default'] ) 90 bp_member_total_friend_count(); 91 ?> 92 </span> 93 </div> 94 </div> 95 </li> 96 97 <?php endwhile; ?> 98 </ul> 99 <?php wp_nonce_field( 'bp_core_widget_friends', '_wpnonce-friends' ); ?> 100 <input type="hidden" name="friends_widget_max" id="friends_widget_max" value="<?php echo absint( $instance['max_friends'] ); ?>" /> 101 102 <?php else: ?> 103 104 <div class="widget-error"> 105 <?php _e( 'Sorry, no members were found.', 'buddypress' ); ?> 106 </div> 107 108 <?php endif; ?> 109 110 <?php echo $after_widget; ?> 111 <?php 112 } 113 114 function update( $new_instance, $old_instance ) { 115 $instance = $old_instance; 116 117 $instance['max_friends'] = absint( $new_instance['max_friends'] ); 118 $instance['friend_default'] = sanitize_text_field( $new_instance['friend_default'] ); 119 $instance['link_title'] = (bool)$new_instance['link_title']; 120 121 return $instance; 122 } 123 124 function form( $instance ) { 125 $defaults = array( 126 'max_friends' => 5, 127 'friend_default' => 'active', 128 'link_title' => false 129 ); 130 $instance = wp_parse_args( (array) $instance, $defaults ); 131 132 $max_friends = $instance['max_friends']; 133 $friend_default = $instance['friend_default']; 134 $link_title = (bool)$instance['link_title']; 135 ?> 136 137 <p><label for="<?php echo $this->get_field_name('link_title') ?>"><input type="checkbox" name="<?php echo $this->get_field_name('link_title') ?>" value="1" <?php checked( $link_title ) ?> /> <?php _e( 'Link widget title to Members directory', 'buddypress' ) ?></label></p> 138 139 <p><label for="bp-core-widget-friends-max"><?php _e( 'Max friends to show:', 'buddypress' ); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_friends' ); ?>" name="<?php echo $this->get_field_name( 'max_friends' ); ?>" type="text" value="<?php echo absint( $max_friends ); ?>" style="width: 30%" /></label></p> 140 141 <p> 142 <label for="bp-core-widget-friends-default"><?php _e( 'Default friends to show:', 'buddypress' ); ?> 143 <select name="<?php echo $this->get_field_name( 'friend_default' ) ?>"> 144 <option value="newest" <?php selected( $friend_default, 'newest' ); ?>><?php _e( 'Newest', 'buddypress' ) ?></option> 145 <option value="active" <?php selected( $friend_default, 'active' );?>><?php _e( 'Active', 'buddypress' ) ?></option> 146 <option value="popular" <?php selected( $friend_default, 'popular' ); ?>><?php _e( 'Popular', 'buddypress' ) ?></option> 147 </select> 148 </label> 149 </p> 150 151 <?php 152 } 153 } 154 155 /** Widget AJAX ******************/ 156 157 function bp_core_ajax_widget_friends() { 158 159 global $bp; 160 check_ajax_referer( 'bp_core_widget_friends' ); 161 162 switch ( $_POST['filter'] ) { 163 case 'newest-friends': 164 $type = 'newest'; 165 break; 166 167 case 'recently-active-friends': 168 $type = 'active'; 169 break; 170 171 case 'popular-friends': 172 $type = 'popular'; 173 break; 174 } 175 176 177 $user_id = bp_displayed_user_id(); 178 179 if ( bp_has_members( 'user_id=' . absint( $user_id ) . '&type=' . $type . '&per_page=' . absint( $_POST['max-friends'] ) . '&max=' . absint( $_POST['max-friends'] ) . '&populate_extras=1' ) ) : ?> 180 <?php echo '0[[SPLIT]]'; // return valid result. TODO: remove this. ?> 181 <?php while ( bp_members() ) : bp_the_member(); ?> 182 <li class="vcard"> 183 <div class="item-avatar"> 184 <a href="<?php bp_member_permalink() ?>"><?php bp_member_avatar() ?></a> 185 </div> 186 187 <div class="item"> 188 <div class="item-title fn"><a href="<?php bp_member_permalink() ?>" title="<?php bp_member_name() ?>"><?php bp_member_name() ?></a></div> 189 <?php if ( 'active' == $type ) : ?> 190 <div class="item-meta"><span class="activity"><?php bp_member_last_active() ?></span></div> 191 <?php elseif ( 'newest' == $type ) : ?> 192 <div class="item-meta"><span class="activity"><?php bp_member_registered() ?></span></div> 193 <?php elseif ( bp_is_active( 'friends' ) ) : ?> 194 <div class="item-meta"><span class="activity"><?php bp_member_total_friend_count() ?></span></div> 195 <?php endif; ?> 196 </div> 197 </li> 198 <?php endwhile; ?> 199 200 <?php else: ?> 201 <?php echo "-1[[SPLIT]]<li>"; ?> 202 <?php _e( 'There were no members found, please try another filter.', 'buddypress' ) ?> 203 <?php echo "</li>"; ?> 204 <?php endif; 205 } 206 207 add_action( 'wp_ajax_widget_friends', 'bp_core_ajax_widget_friends' ); 208 add_action( 'wp_ajax_nopriv_widget_friends', 'bp_core_ajax_widget_friends' ); 209 -
bp-friends/js/widget-friends.js
1 jQuery(document).ready( function() { 2 jQuery(".widget div#friends-list-options a").on('click', 3 function() { 4 var link = this; 5 jQuery(link).addClass('loading'); 6 7 jQuery(".widget div#friends-list-options a").removeClass("selected"); 8 jQuery(this).addClass('selected'); 9 10 jQuery.post( ajaxurl, { 11 action: 'widget_friends', 12 'cookie': encodeURIComponent(document.cookie), 13 '_wpnonce': jQuery("input#_wpnonce-friends").val(), 14 'max-friends': jQuery("input#friends_widget_max").val(), 15 'filter': jQuery(this).attr('id') 16 }, 17 function(response) 18 { 19 jQuery(link).removeClass('loading'); 20 friend_wiget_response(response); 21 }); 22 23 return false; 24 } 25 ); 26 }); 27 28 function friend_wiget_response(response) { 29 response = response.substr(0, response.length-1); 30 response = response.split('[[SPLIT]]'); 31 32 if ( response[0] != "-1" ) { 33 jQuery(".widget ul#friends-list").fadeOut(200, 34 function() { 35 jQuery(".widget ul#friends-list").html(response[1]); 36 jQuery(".widget ul#friends-list").fadeIn(200); 37 } 38 ); 39 40 } else { 41 jQuery(".widget ul#friends-list").fadeOut(200, 42 function() { 43 var message = '<p>' + response[1] + '</p>'; 44 jQuery(".widget ul#friends-list").html(message); 45 jQuery(".widget ul#friends-list").fadeIn(200); 46 } 47 ); 48 } 49 } 50 No newline at end of file -
bp-groups/bp-groups-widgets.php
13 13 /* Register widgets for groups component */ 14 14 function groups_register_widgets() { 15 15 add_action('widgets_init', create_function('', 'return register_widget("BP_Groups_Widget");') ); 16 add_action('widgets_init', create_function('', 'return register_widget("BP_Member_Groups_Widget");') ); 16 17 } 17 18 add_action( 'bp_register_widgets', 'groups_register_widgets' ); 18 19 … … 208 209 } 209 210 add_action( 'wp_ajax_widget_groups_list', 'groups_ajax_widget_groups_list' ); 210 211 add_action( 'wp_ajax_nopriv_widget_groups_list', 'groups_ajax_widget_groups_list' ); 212 213 class BP_Member_Groups_Widget extends WP_Widget { 214 215 function __construct() { 216 $widget_ops = array( 217 'description' => __( 'A dynamic list of recently active, popular, and newest groups of a loggedin/displayed member', 'buddypress' ), 218 'classname' => 'widget_bp_member_groups_widget buddypress widget', 219 ); 220 parent::__construct( false, _x( '(BuddyPress) My Groups', 'widget name', 'buddypress' ), $widget_ops ); 221 222 if ( is_active_widget( false, false, $this->id_base ) && !is_admin() && !is_network_admin() ) { 223 $min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min'; 224 wp_enqueue_script( 'groups_widget_member_groups_list-js', BP_PLUGIN_URL . "bp-groups/js/widget-member-groups{$min}.js", array( 'jquery' ), bp_get_version() ); 225 } 226 } 227 228 function widget( $args, $instance ) { 229 230 global $bp; 231 extract( $args ); 232 233 if ( bp_displayed_user_domain() ) { 234 $user_id = $bp->displayed_user->id; 235 $link = str_replace( bp_displayed_user_domain(), bp_displayed_user_domain(), bp_get_groups_slug() ); 236 $instance['title'] = sprintf( __( '%s Groups', 'buddypress' ), bp_get_displayed_user_fullname() ); 237 238 } elseif ( bp_loggedin_user_domain() ) { 239 $user_id = $bp->loggedin_user->id; 240 $link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() ); 241 $instance['title'] = __( 'My Groups', 'buddypress' ); 242 243 } else { 244 return; 245 } 246 247 if ( empty( $instance['member_group_default'] ) ) 248 $instance['member_group_default'] = 'popular'; 249 250 $title = apply_filters( 'widget_title', $instance['title'] ); 251 252 echo $before_widget; 253 254 $title = !empty( $instance['link_title'] ) ? '<a href="' . $link . '">' . $title . '</a>' : $title; 255 256 echo $before_title . $title . $after_title; ?> 257 258 <?php if ( bp_has_groups( 'user_id=' . $user_id . '&type=' . $instance['member_group_default'] . '&max=' . $instance['max_member_groups'] ) ) : ?> 259 <div class="item-options" id="member-groups-list-options"> 260 <a href="<?php bp_groups_directory_permalink(); ?>" id="newest-groups"<?php if ( $instance['member_group_default'] == 'newest' ) : ?> class="selected"<?php endif; ?>><?php _e("Newest", 'buddypress') ?></a> | 261 <a href="<?php bp_groups_directory_permalink(); ?>" id="recently-active-groups"<?php if ( $instance['member_group_default'] == 'active' ) : ?> class="selected"<?php endif; ?>><?php _e("Active", 'buddypress') ?></a> | 262 <a href="<?php bp_groups_directory_permalink(); ?>" id="popular-groups" <?php if ( $instance['member_group_default'] == 'popular' ) : ?> class="selected"<?php endif; ?>><?php _e("Popular", 'buddypress') ?></a> 263 </div> 264 265 <ul id="member-groups-list" class="item-list"> 266 <?php while ( bp_groups() ) : bp_the_group(); ?> 267 <li> 268 <div class="item-avatar"> 269 <a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_avatar_thumb() ?></a> 270 </div> 271 272 <div class="item"> 273 <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> 274 <div class="item-meta"> 275 <span class="activity"> 276 <?php 277 if ( 'newest' == $instance['member_group_default'] ) 278 printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); 279 if ( 'active' == $instance['member_group_default'] ) 280 printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); 281 else if ( 'popular' == $instance['member_group_default'] ) 282 bp_group_member_count(); 283 ?> 284 </span> 285 </div> 286 </div> 287 </li> 288 289 <?php endwhile; ?> 290 </ul> 291 <?php wp_nonce_field( 'groups_widget_member_groups_list', '_wpnonce-member-groups' ); ?> 292 <input type="hidden" name="member_groups_widget_max" id="member_groups_widget_max" value="<?php echo esc_attr( $instance['max_member_groups'] ); ?>" /> 293 294 <?php else: ?> 295 296 <div class="widget-error"> 297 <?php _e('There are no groups to display.', 'buddypress') ?> 298 </div> 299 300 <?php endif; ?> 301 302 <?php echo $after_widget; ?> 303 <?php 304 } 305 306 function update( $new_instance, $old_instance ) { 307 $instance = $old_instance; 308 309 $instance['max_member_groups'] = strip_tags( $new_instance['max_member_groups'] ); 310 $instance['member_group_default'] = strip_tags( $new_instance['member_group_default'] ); 311 $instance['link_title'] = (bool)$new_instance['link_title']; 312 313 return $instance; 314 } 315 316 function form( $instance ) { 317 $defaults = array( 318 'max_member_groups' => 5, 319 'member_group_default' => 'active', 320 'link_title' => false 321 ); 322 $instance = wp_parse_args( (array) $instance, $defaults ); 323 324 $max_member_groups = strip_tags( $instance['max_member_groups'] ); 325 $member_group_default = strip_tags( $instance['member_group_default'] ); 326 $link_title = (bool)$instance['link_title']; 327 ?> 328 329 <p><label for="<?php echo $this->get_field_name('link_title') ?>"><input type="checkbox" name="<?php echo $this->get_field_name('link_title') ?>" value="1" <?php checked( $link_title ) ?> /> <?php _e( 'Link widget title to Groups directory', 'buddypress' ) ?></label></p> 330 331 <p><label for="bp-groups-widget-member-groups-max"><?php _e('Max groups to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_member_groups' ); ?>" name="<?php echo $this->get_field_name( 'max_member_groups' ); ?>" type="text" value="<?php echo esc_attr( $max_member_groups ); ?>" style="width: 30%" /></label></p> 332 333 <p> 334 <label for="bp-groups-widget-member-groups-default"><?php _e('Default groups to show:', 'buddypress'); ?> 335 <select name="<?php echo $this->get_field_name( 'member_group_default' ); ?>"> 336 <option value="newest" <?php if ( $member_group_default == 'newest' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></option> 337 <option value="active" <?php if ( $member_group_default == 'active' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></option> 338 <option value="popular" <?php if ( $member_group_default == 'popular' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></option> 339 </select> 340 </label> 341 </p> 342 <?php 343 } 344 } 345 346 function groups_ajax_widget_member_groups_list() { 347 348 check_ajax_referer('groups_widget_member_groups_list'); 349 350 switch ( $_POST['filter'] ) { 351 case 'newest-groups': 352 $type = 'newest'; 353 break; 354 case 'recently-active-groups': 355 $type = 'active'; 356 break; 357 case 'popular-groups': 358 $type = 'popular'; 359 break; 360 } 361 362 if ( bp_has_groups( 'type=' . $type . '&per_page=' . $_POST['max_member_groups'] . '&max=' . $_POST['max_member_groups'] ) ) : ?> 363 <?php echo "0[[SPLIT]]"; ?> 364 <?php while ( bp_groups() ) : bp_the_group(); ?> 365 <li> 366 <div class="item-avatar"> 367 <a href="<?php bp_group_permalink() ?>"><?php bp_group_avatar_thumb() ?></a> 368 </div> 369 370 <div class="item"> 371 <div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div> 372 <div class="item-meta"> 373 <span class="activity"> 374 <?php 375 if ( 'newest-groups' == $_POST['filter'] ) { 376 printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() ); 377 } else if ( 'recently-active-groups' == $_POST['filter'] ) { 378 printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() ); 379 } else if ( 'popular-groups' == $_POST['filter'] ) { 380 bp_group_member_count(); 381 } 382 ?> 383 </span> 384 </div> 385 </div> 386 </li> 387 <?php endwhile; ?> 388 389 <?php wp_nonce_field( 'groups_widget_member_groups_list', '_wpnonce-member-groups' ); ?> 390 <input type="hidden" name="member_groups_widget_max" id="member_groups_widget_max" value="<?php echo esc_attr( $_POST['max_member_groups'] ); ?>" /> 391 392 <?php else: ?> 393 394 <?php echo "-1[[SPLIT]]<li>" . __("No groups matched the current filter.", 'buddypress'); ?> 395 396 <?php endif; 397 398 } 399 add_action( 'wp_ajax_widget_member_groups_list', 'groups_ajax_widget_member_groups_list' ); 400 add_action( 'wp_ajax_nopriv_widget_member_groups_list', 'groups_ajax_widget_member_groups_list' ); 401 No newline at end of file