mirror of
https://gh.wpcy.net/https://github.com/buddypress/buddypress.git
synced 2026-05-31 05:04:29 +08:00
r6865 changed all widget CSS classes to 'buddypress'. However, we have to be considerate to themes that are already using the older widget CSS classes from BP 1.6 and lower. This commit brings back these CSS classes. See #4869. git-svn-id: https://buddypress.svn.wordpress.org/branches/1.7@6903 cdf35c40-ae34-48e0-9cc9-0c9da1808c22
203 lines
8.1 KiB
PHP
203 lines
8.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* BuddyPress Groups Widgets
|
|
*
|
|
* @package BuddyPress
|
|
* @subpackage GroupsWidgets
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
if ( !defined( 'ABSPATH' ) ) exit;
|
|
|
|
/* Register widgets for groups component */
|
|
function groups_register_widgets() {
|
|
add_action('widgets_init', create_function('', 'return register_widget("BP_Groups_Widget");') );
|
|
}
|
|
add_action( 'bp_register_widgets', 'groups_register_widgets' );
|
|
|
|
/*** GROUPS WIDGET *****************/
|
|
|
|
class BP_Groups_Widget extends WP_Widget {
|
|
function bp_groups_widget() {
|
|
$this->_construct();
|
|
}
|
|
|
|
function __construct() {
|
|
$widget_ops = array(
|
|
'description' => __( 'A dynamic list of recently active, popular, and newest groups', 'buddypress' ),
|
|
'classname' => 'widget_bp_groups_widget buddypress',
|
|
);
|
|
parent::__construct( false, _x( '(BuddyPress) Groups', 'widget name', 'buddypress' ), $widget_ops );
|
|
|
|
if ( is_active_widget( false, false, $this->id_base ) && !is_admin() && !is_network_admin() ) {
|
|
$min = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
|
|
wp_enqueue_script( 'groups_widget_groups_list-js', BP_PLUGIN_URL . "bp-groups/js/widget-groups{$min}.js", array( 'jquery' ), bp_get_version() );
|
|
}
|
|
}
|
|
|
|
function widget( $args, $instance ) {
|
|
$user_id = apply_filters( 'bp_group_widget_user_id', '0' );
|
|
|
|
extract( $args );
|
|
|
|
if ( empty( $instance['group_default'] ) )
|
|
$instance['group_default'] = 'popular';
|
|
|
|
if ( empty( $instance['title'] ) )
|
|
$instance['title'] = __( 'Groups', 'buddypress' );
|
|
|
|
echo $before_widget;
|
|
|
|
$title = !empty( $instance['link_title'] ) ? '<a href="' . trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) . '">' . $instance['title'] . '</a>' : $instance['title'];
|
|
|
|
echo $before_title . $title . $after_title; ?>
|
|
|
|
<?php if ( bp_has_groups( 'user_id=' . $user_id . '&type=' . $instance['group_default'] . '&max=' . $instance['max_groups'] ) ) : ?>
|
|
<div class="item-options" id="groups-list-options">
|
|
<a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="newest-groups"<?php if ( $instance['group_default'] == 'newest' ) : ?> class="selected"<?php endif; ?>><?php _e("Newest", 'buddypress') ?></a> |
|
|
<a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="recently-active-groups"<?php if ( $instance['group_default'] == 'active' ) : ?> class="selected"<?php endif; ?>><?php _e("Active", 'buddypress') ?></a> |
|
|
<a href="<?php echo site_url( bp_get_groups_root_slug() ); ?>" id="popular-groups" <?php if ( $instance['group_default'] == 'popular' ) : ?> class="selected"<?php endif; ?>><?php _e("Popular", 'buddypress') ?></a>
|
|
</div>
|
|
|
|
<ul id="groups-list" class="item-list">
|
|
<?php while ( bp_groups() ) : bp_the_group(); ?>
|
|
<li>
|
|
<div class="item-avatar">
|
|
<a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_avatar_thumb() ?></a>
|
|
</div>
|
|
|
|
<div class="item">
|
|
<div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div>
|
|
<div class="item-meta">
|
|
<span class="activity">
|
|
<?php
|
|
if ( 'newest' == $instance['group_default'] )
|
|
printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() );
|
|
if ( 'active' == $instance['group_default'] )
|
|
printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() );
|
|
else if ( 'popular' == $instance['group_default'] )
|
|
bp_group_member_count();
|
|
?>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
|
|
<?php endwhile; ?>
|
|
</ul>
|
|
<?php wp_nonce_field( 'groups_widget_groups_list', '_wpnonce-groups' ); ?>
|
|
<input type="hidden" name="groups_widget_max" id="groups_widget_max" value="<?php echo esc_attr( $instance['max_groups'] ); ?>" />
|
|
|
|
<?php else: ?>
|
|
|
|
<div class="widget-error">
|
|
<?php _e('There are no groups to display.', 'buddypress') ?>
|
|
</div>
|
|
|
|
<?php endif; ?>
|
|
|
|
<?php echo $after_widget; ?>
|
|
<?php
|
|
}
|
|
|
|
function update( $new_instance, $old_instance ) {
|
|
$instance = $old_instance;
|
|
|
|
$instance['title'] = strip_tags( $new_instance['title'] );
|
|
$instance['max_groups'] = strip_tags( $new_instance['max_groups'] );
|
|
$instance['group_default'] = strip_tags( $new_instance['group_default'] );
|
|
$instance['link_title'] = (bool)$new_instance['link_title'];
|
|
|
|
return $instance;
|
|
}
|
|
|
|
function form( $instance ) {
|
|
$defaults = array(
|
|
'title' => __( 'Groups', 'buddypress' ),
|
|
'max_groups' => 5,
|
|
'group_default' => 'active',
|
|
'link_title' => false
|
|
);
|
|
$instance = wp_parse_args( (array) $instance, $defaults );
|
|
|
|
$title = strip_tags( $instance['title'] );
|
|
$max_groups = strip_tags( $instance['max_groups'] );
|
|
$group_default = strip_tags( $instance['group_default'] );
|
|
$link_title = (bool)$instance['link_title'];
|
|
?>
|
|
|
|
<p><label for="bp-groups-widget-title"><?php _e('Title:', 'buddypress'); ?> <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 ); ?>" style="width: 100%" /></label></p>
|
|
|
|
<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>
|
|
|
|
<p><label for="bp-groups-widget-groups-max"><?php _e('Max groups to show:', 'buddypress'); ?> <input class="widefat" id="<?php echo $this->get_field_id( 'max_groups' ); ?>" name="<?php echo $this->get_field_name( 'max_groups' ); ?>" type="text" value="<?php echo esc_attr( $max_groups ); ?>" style="width: 30%" /></label></p>
|
|
|
|
<p>
|
|
<label for="bp-groups-widget-groups-default"><?php _e('Default groups to show:', 'buddypress'); ?>
|
|
<select name="<?php echo $this->get_field_name( 'group_default' ); ?>">
|
|
<option value="newest" <?php if ( $group_default == 'newest' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Newest', 'buddypress' ) ?></option>
|
|
<option value="active" <?php if ( $group_default == 'active' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Active', 'buddypress' ) ?></option>
|
|
<option value="popular" <?php if ( $group_default == 'popular' ) : ?>selected="selected"<?php endif; ?>><?php _e( 'Popular', 'buddypress' ) ?></option>
|
|
</select>
|
|
</label>
|
|
</p>
|
|
<?php
|
|
}
|
|
}
|
|
|
|
function groups_ajax_widget_groups_list() {
|
|
|
|
check_ajax_referer('groups_widget_groups_list');
|
|
|
|
switch ( $_POST['filter'] ) {
|
|
case 'newest-groups':
|
|
$type = 'newest';
|
|
break;
|
|
case 'recently-active-groups':
|
|
$type = 'active';
|
|
break;
|
|
case 'popular-groups':
|
|
$type = 'popular';
|
|
break;
|
|
}
|
|
|
|
if ( bp_has_groups( 'type=' . $type . '&per_page=' . $_POST['max_groups'] . '&max=' . $_POST['max_groups'] ) ) : ?>
|
|
<?php echo "0[[SPLIT]]"; ?>
|
|
<?php while ( bp_groups() ) : bp_the_group(); ?>
|
|
<li>
|
|
<div class="item-avatar">
|
|
<a href="<?php bp_group_permalink() ?>"><?php bp_group_avatar_thumb() ?></a>
|
|
</div>
|
|
|
|
<div class="item">
|
|
<div class="item-title"><a href="<?php bp_group_permalink() ?>" title="<?php bp_group_name() ?>"><?php bp_group_name() ?></a></div>
|
|
<div class="item-meta">
|
|
<span class="activity">
|
|
<?php
|
|
if ( 'newest-groups' == $_POST['filter'] ) {
|
|
printf( __( 'created %s', 'buddypress' ), bp_get_group_date_created() );
|
|
} else if ( 'recently-active-groups' == $_POST['filter'] ) {
|
|
printf( __( 'active %s', 'buddypress' ), bp_get_group_last_active() );
|
|
} else if ( 'popular-groups' == $_POST['filter'] ) {
|
|
bp_group_member_count();
|
|
}
|
|
?>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
<?php endwhile; ?>
|
|
|
|
<?php wp_nonce_field( 'groups_widget_groups_list', '_wpnonce-groups' ); ?>
|
|
<input type="hidden" name="groups_widget_max" id="groups_widget_max" value="<?php echo esc_attr( $_POST['max_groups'] ); ?>" />
|
|
|
|
<?php else: ?>
|
|
|
|
<?php echo "-1[[SPLIT]]<li>" . __("No groups matched the current filter.", 'buddypress'); ?>
|
|
|
|
<?php endif;
|
|
|
|
}
|
|
add_action( 'wp_ajax_widget_groups_list', 'groups_ajax_widget_groups_list' );
|
|
add_action( 'wp_ajax_nopriv_widget_groups_list', 'groups_ajax_widget_groups_list' );
|