Skip to:
Content

BuddyPress.org

Changeset 3263


Ignore:
Timestamp:
09/13/2010 03:04:20 AM (16 years ago)
Author:
johnjamesjacoby
Message:

Add BP_Button class to trunk. See r3260 for details from branch commit.

Location:
trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-activity/bp-activity-templatetags.php

    r3247 r3263  
    850850        global $bp;
    851851
    852         return apply_filters( 'bp_get_send_public_message_link', $bp->loggedin_user->domain . $bp->activity->slug . '/?r=' . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) );
     852        if ( bp_is_my_profile() || !is_user_logged_in() )
     853            return false;
     854
     855        return apply_filters( 'bp_get_send_public_message_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->activity->slug . '/?r=' . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) );
     856    }
     857
     858/**
     859 * bp_send_public_message_button( $args )
     860 *
     861 * Output button for sending a public message
     862 *
     863 * @param array $args
     864 */
     865function bp_send_public_message_button( $args = '' ) {
     866    echo bp_get_send_public_message_button( $args );
     867}
     868    /**
     869     * bp_get_send_public_message_button( $args )
     870     *
     871     * Return button for sending a public message
     872     *
     873     * @param array $args
     874     * @return string
     875     */
     876    function bp_get_send_public_message_button( $args = '' ) {
     877        $defaults = array(
     878            'id'                => 'public_message',
     879            'component'         => 'activity',
     880            'must_be_logged_in' => true,
     881            'block_self'        => true,
     882            'wrapper_id'        => 'post-mention',
     883            'link_href'         => bp_get_send_public_message_link(),
     884            'link_title'        => __( 'Mention this user in a new public message, this will send the user a notification to get their attention.', 'buddypress' ),
     885            'link_text'         => __( 'Mention this User', 'buddypress' )
     886        );
     887
     888        $button = wp_parse_args( $args, $defaults );
     889
     890        // Filter and return the HTML button
     891        return bp_get_button( apply_filters( 'bp_get_send_public_message_button', $button ) );
    853892    }
    854893
  • trunk/bp-blogs/bp-blogs-templatetags.php

    r3247 r3263  
    502502}
    503503
     504/**
     505 * bp_blogs_visit_blog_button()
     506 *
     507 * Output button for visiting a blog in a loop
     508 *
     509 * @param array $args Custom button properties
     510 */
     511function bp_blogs_visit_blog_button( $args = '' ) {
     512    echo bp_get_blogs_visit_blog_button( $args );
     513}
     514    /**
     515     * bp_get_blogs_visit_blog_button()
     516     *
     517     * Return button for visiting a blog in a loop
     518     *
     519     * @param array $args Custom button properties
     520     * @return string
     521     */
     522    function bp_get_blogs_visit_blog_button( $args = '' ) {
     523        $defaults = array(
     524            'id'                => 'visit_blog',
     525            'component'         => 'blogs',
     526            'must_be_logged_in' => false,
     527            'block_self'        => false,
     528            'wrapper_class'     => 'blog-button visit',
     529            'link_href'         => bp_get_blog_permalink(),
     530            'link_class'        => 'visit',
     531            'link_text'         => __( 'Visit Blog', 'buddypress' ),
     532            'link_title'        => __( 'Visit Blog', 'buddypress' ),
     533        );
     534
     535        $button = wp_parse_args( $args, $defaults );
     536
     537        // Filter and return the HTML button
     538        return bp_get_button( apply_filters( 'bp_get_blogs_visit_blog_button', $button ) );
     539    }
     540
    504541?>
  • trunk/bp-core/bp-core-classes.php

    r3232 r3263  
    497497}
    498498
     499/**
     500 * BP_Button
     501 *
     502 * API to create BuddyPress buttons
     503 *
     504 * @package BuddyPress Core
     505 * @since 1.2.6
     506 */
     507class BP_Button {
     508
     509    // Button properties
     510    var $id;
     511    var $component;
     512    var $must_be_logged_in;
     513    var $block_self;
     514
     515    // Wrapper div
     516    var $wrapper_class;
     517    var $wrapper_id;
     518
     519    // Button
     520    var $link_href;
     521    var $link_class;
     522    var $link_id;
     523    var $link_rel;
     524    var $link_title;
     525    var $link_text;
     526
     527    // HTML result
     528    var $contents;
     529
     530    /**
     531     * bp_button()
     532     *
     533     * Builds the button based on passed parameters:
     534     *
     535     * component: Which component this button is for
     536     * must_be_logged_in: Button only appears for logged in users
     537     * block_self: Button will not appear when viewing your own profile.
     538     * wrapper_id: The DOM ID of the button wrapper
     539     * wrapper_class: The DOM class of the button wrapper
     540     * link_href: The destination link of the button
     541     * link_title: Title of the button
     542     * link_id: The DOM ID of the button
     543     * link_class: The DOM class of the button
     544     * link_rel: The DOM rel of the button
     545     * link_text: The contents of the button
     546     *
     547     * @param array $args
     548     * @return bool False if not allowed
     549     */
     550    function bp_button( $args = '' ) {
     551
     552        $defaults = array(
     553            'id'                => '',
     554            'component'         => 'core',
     555            'must_be_logged_in' => true,
     556            'block_self'        => true,
     557
     558            'wrapper_id'        => '',
     559            'wrapper_class'     => '',
     560
     561            'link_href'         => '',
     562            'link_title'        => '',
     563            'link_id'           => '',
     564            'link_class'        => '',
     565            'link_rel'          => '',
     566            'link_text'         => '',
     567        );
     568
     569        $r = wp_parse_args( $args, $defaults );
     570        extract( $r, EXTR_SKIP );
     571
     572        // Required button properties
     573        $this->id                = $id;
     574        $this->component         = $component;
     575        $this->must_be_logged_in = (bool)$must_be_logged_in;
     576        $this->block_self        = (bool)$block_self;
     577
     578        // $id and $component are required
     579        if ( empty( $id ) || empty( $component ) )
     580            return false;
     581
     582        // No button if component is not active
     583        if ( !bp_is_active( $this->component ) )
     584            return false;
     585
     586        // No button for guests if must be logged in
     587        if ( true == $this->must_be_logged_in && !is_user_logged_in )
     588            return false;
     589
     590        // No button if viewing your own profile
     591        if ( true == $this->block_self && bp_is_my_profile() )
     592            return false;
     593
     594        // Wrapper properties
     595        if ( !empty( $wrapper_id ) )
     596            $this->wrapper_id    = ' id="' . $wrapper_id . '"';
     597
     598        if ( !empty( $wrapper_class ) )
     599            $this->wrapper_class = ' class="generic-button ' . $wrapper_class . '"';
     600        else
     601            $this->wrapper_class = ' class="generic-button"';
     602
     603        // Link properties
     604        if ( !empty( $link_id ) )
     605            $this->link_id       = ' id="' . $link_id . '"';
     606
     607        if ( !empty( $link_href ) )
     608            $this->link_href     = ' href="' . $link_href . '"';
     609
     610        if ( !empty( $link_title ) )
     611            $this->link_title    = ' title="' . $link_title . '"';
     612
     613        if ( !empty( $link_rel ) )
     614            $this->link_rel      = ' rel="' . $link_rel . '"';
     615
     616        if ( !empty( $link_class ) )
     617            $this->link_class    = ' class="' . $link_class . '"';
     618
     619        if ( !empty( $link_text ) )
     620            $this->link_text     = $link_text;
     621
     622        // Build the button
     623        $this->contents  = '<div' . $this->wrapper_class . $this->wrapper_id . '>';
     624        $this->contents .= '<a'. $this->link_href . $this->link_title . $this->link_id . $this->link_rel . $this->link_class . '>' . $this->link_text . '</a>';
     625        $this->contents .= '</div>';
     626
     627        // Allow button to be manipulated externally
     628        $this->contents = apply_filters( 'bp_button_' . $component . '_' . $id, $this->contents, $this );
     629    }
     630
     631    /**
     632     * contents()
     633     *
     634     * Return contents of button
     635     *
     636     * @return string
     637     */
     638    function contents() {
     639        return $this->contents;
     640    }
     641
     642    /**
     643     * display()
     644     *
     645     * Output contents of button
     646     */
     647    function display() {
     648        if ( !empty( $this->contents ) )
     649            echo $this->contents;
     650    }
     651}
    499652
    500653?>
  • trunk/bp-core/bp-core-templatetags.php

    r3247 r3263  
    332332
    333333        return apply_filters( 'bp_member_last_active', $registered );
    334     }
    335 
    336 function bp_member_add_friend_button() {
    337     global $members_template;
    338 
    339     if ( function_exists( 'bp_add_friend_button' ) ) {
    340         if ( null === $members_template->member->is_friend )
    341             $friend_status = 'not_friends';
    342         else
    343             $friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend';
    344 
    345         echo bp_add_friend_button( $members_template->member->id, $friend_status );
    346     }
    347 }
    348 
    349 function bp_member_total_friend_count() {
    350     global $members_template;
    351 
    352     echo bp_get_member_total_friend_count();
    353 }
    354     function bp_get_member_total_friend_count() {
    355         global $members_template;
    356 
    357         if ( 1 == (int) $members_template->member->total_friend_count )
    358             return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friend', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
    359         else
    360             return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friends', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
    361334    }
    362335
     
    10491022
    10501023/**
     1024 * bp_button( $button )
     1025 *
     1026 * Creates and outputs a button.
     1027 * Args: div_id | div_class | a_href | a_title | a_id | a_class | a_rel | a_text
     1028 *
     1029 * @param array $button
     1030 */
     1031function bp_button( $button = '' ) {
     1032    echo bp_get_button( $button );
     1033}
     1034    /**
     1035     * bp_get_button( $button )
     1036     *
     1037     * Creates and returns a button.
     1038     * Args: div_id | div_class | a_href | a_title | a_id | a_class | a_rel | a_text
     1039     *
     1040     * @param array $button
     1041     * @return string
     1042     */
     1043    function bp_get_button( $button = '' ) {
     1044        $btn = new BP_Button( $button );
     1045        return apply_filters( 'bp_get_button', $btn->contents, $button );
     1046    }
     1047
     1048/**
    10511049 * bp_create_excerpt()
    10521050 *
  • trunk/bp-core/bp-core-widgets.php

    r2863 r3263  
    2222        global $bp;
    2323
    24         extract( $args );
     24        extract( $args );
    2525
    2626        echo $before_widget;
     
    3232            <div class="item-options" id="members-list-options">
    3333                <span class="ajax-loader" id="ajax-loader-members"></span>
    34                 <a href="<?php echo site_url() . '/' . $bp->members->slug ?>" id="newest-members" class="selected"><?php _e( 'Newest', 'buddypress' ) ?></a> |
    35                 <a href="<?php echo site_url() . '/' . $bp->members->slug ?>" id="recently-active-members"><?php _e( 'Active', 'buddypress' ) ?></a> |
    36                 <a href="<?php echo site_url() . '/' . $bp->members->slug ?>" id="popular-members"><?php _e( 'Popular', 'buddypress' ) ?></a>
     34                <a href="<?php echo site_url() . '/' . BP_MEMBERS_SLUG ?>" id="newest-members" class="selected"><?php _e( 'Newest', 'buddypress' ) ?></a>
     35                |  <a href="<?php echo site_url() . '/' . BP_MEMBERS_SLUG ?>" id="recently-active-members"><?php _e( 'Active', 'buddypress' ) ?></a>
     36
     37                <?php if ( bp_is_active( 'friends' ) ) : ?>
     38
     39                    | <a href="<?php echo site_url() . '/' . BP_MEMBERS_SLUG ?>" id="popular-members"><?php _e( 'Popular', 'buddypress' ) ?></a>
     40
     41                <?php endif; ?>
     42
    3743            </div>
    3844
     
    202208        case 'newest-members':
    203209            $type = 'newest';
    204         break;
     210            break;
    205211        case 'recently-active-members':
    206212            $type = 'active';
    207         break;
     213            break;
    208214        case 'popular-members':
    209             $type = 'popular';
    210         break;
     215            if ( bp_is_active( 'friends' ) )
     216                $type = 'popular';
     217            else
     218                $type = 'active';
     219
     220            break;
    211221    }
    212222
     
    224234                        <?php if ( 'active' == $type || 'newest' == $type ) : ?>
    225235                            <div class="item-meta"><span class="activity"><?php bp_member_last_active() ?></span></div>
    226                         <?php else : ?>
     236                        <?php elseif ( bp_is_active( 'friends' ) ) : ?>
    227237                            <div class="item-meta"><span class="activity"><?php bp_member_total_friend_count() ?></span></div>
    228238                        <?php endif; ?>
  • trunk/bp-friends/bp-friends-templatetags.php

    r2627 r3263  
    115115}
    116116
    117 function bp_add_friend_button( $potential_friend_id = false, $friend_status = false ) {
     117function bp_member_add_friend_button() {
     118    global $members_template;
     119
     120    if ( null === $members_template->member->is_friend )
     121        $friend_status = 'not_friends';
     122    else
     123        $friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend';
     124
     125    echo bp_get_add_friend_button( $members_template->member->id, $friend_status );
     126}
     127add_action( 'bp_directory_members_actions', 'bp_member_add_friend_button' );
     128
     129function bp_member_total_friend_count() {
     130    global $members_template;
     131
     132    echo bp_get_member_total_friend_count();
     133}
     134    function bp_get_member_total_friend_count() {
     135        global $members_template;
     136
     137        if ( 1 == (int) $members_template->member->total_friend_count )
     138            return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friend', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
     139        else
     140            return apply_filters( 'bp_get_member_total_friend_count', sprintf( __( '%d friends', 'buddypress' ), (int) $members_template->member->total_friend_count ) );
     141    }
     142
     143/**
     144 * bp_potential_friend_id( $user_id )
     145 *
     146 * Outputs the ID of the potential friend
     147 *
     148 * @uses bp_get_potential_friend_id()
     149 * @param <type> $user_id
     150 */
     151function bp_potential_friend_id( $user_id = 0 ) {
     152    echo bp_get_potential_friend_id( $user_id );
     153}
     154    /**
     155     * bp_get_potential_friend_id( $user_id )
     156     *
     157     * Returns the ID of the potential friend
     158     *
     159     * @global object $bp
     160     * @global object $friends_template
     161     * @param int $user_id
     162     * @return int ID of potential friend
     163     */
     164    function bp_get_potential_friend_id( $user_id = 0 ) {
     165        global $bp, $friends_template;
     166
     167        if ( empty( $user_id ) && isset( $friends_template->friendship->friend ) )
     168            $user_id = $friends_template->friendship->friend->id;
     169        else if ( empty( $user_id ) && !isset( $friends_template->friendship->friend ) )
     170            $user_id = $bp->displayed_user->id;
     171
     172        return apply_filters( 'bp_get_potential_friend_id', (int)$user_id );
     173    }
     174
     175/**
     176 * bp_is_friend( $user_id )
     177 *
     178 * Returns - 'is_friend', 'not_friends', 'pending'
     179 *
     180 * @global object $bp
     181 * @param int $potential_friend_id
     182 * @return string
     183 */
     184function bp_is_friend( $user_id = 0 ) {
     185    global $bp;
     186
     187    if ( !is_user_logged_in() )
     188        return false;
     189
     190    if ( empty( $user_id ) )
     191        $user_id = bp_get_potential_friend_id( $user_id );
     192
     193    if ( $bp->loggedin_user->id == $user_id )
     194        return false;
     195
     196    return apply_filters( 'bp_is_friend', friends_check_friendship_status( $bp->loggedin_user->id, $user_id ), $user_id );
     197}
     198
     199function bp_add_friend_button( $potential_friend_id = 0, $friend_status = false ) {
    118200    echo bp_get_add_friend_button( $potential_friend_id, $friend_status );
    119201}
    120     function bp_get_add_friend_button( $potential_friend_id = false, $friend_status = false ) {
     202    function bp_get_add_friend_button( $potential_friend_id = 0, $friend_status = false ) {
    121203        global $bp, $friends_template;
    122204
    123         if ( !is_user_logged_in() )
     205        if ( empty( $potential_friend_id ) )
     206            $potential_friend_id = bp_get_potential_friend_id( $potential_friend_id );
     207
     208        $is_friend = bp_is_friend( $potential_friend_id );
     209
     210        if ( empty( $is_friend ) )
    124211            return false;
    125212
    126         if ( !$potential_friend_id && $friends_template->friendship->friend )
    127             $potential_friend_id = $friends_template->friendship->friend->id;
    128         else if ( !$potential_friend_id && !$friends_template->friendship->friend )
    129             $potential_friend_id = $bp->displayed_user->id;
    130 
    131         if ( $bp->loggedin_user->id == $potential_friend_id )
    132             return false;
    133 
    134         if ( empty( $friend_status ) )
    135             $friend_status = friends_check_friendship_status( $bp->loggedin_user->id, $potential_friend_id );
    136 
    137         $button = '<div class="generic-button friendship-button ' . $friend_status . '" id="friendship-button-' . $potential_friend_id . '">';
    138         if ( 'pending' == $friend_status ) {
    139             $button .= '<a class="requested" href="' . $bp->loggedin_user->domain . $bp->friends->slug . '/">' . __( 'Friendship Requested', 'buddypress' ) . '</a>';
    140         } else if ( 'is_friend' == $friend_status ) {
    141             $button .= '<a href="' . wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/remove-friend/' . $potential_friend_id . '/', 'friends_remove_friend' ) . '" title="' . __('Cancel Friendship', 'buddypress') . '" id="friend-' . $potential_friend_id . '" rel="remove" class="remove">' . __('Cancel Friendship', 'buddypress') . '</a>';
    142         } else {
    143             $button .= '<a href="' . wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/add-friend/' . $potential_friend_id . '/', 'friends_add_friend' ) . '" title="' . __('Add Friend', 'buddypress') . '" id="friend-' . $potential_friend_id . '" rel="add" class="add">' . __('Add Friend', 'buddypress') . '</a>';
     213        switch ( $is_friend ) {
     214            case 'pending' :
     215                $button = array(
     216                    'id'                => 'pending',
     217                    'component'         => 'friends',
     218                    'must_be_logged_in' => true,
     219                    'block_self'        => true,
     220                    'wrapper_class'     => 'friendship-button pending',
     221                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
     222                    'link_class'        => 'requested',
     223                    'link_href'         => trailingslashit( $bp->loggedin_user->domain . $bp->friends->slug ),
     224                    'link_text'         => __( 'Friendship Requested', 'buddypress' ),
     225                    'link_title'        => __( 'Friendship Requested', 'buddypress' )
     226                );
     227                break;
     228
     229            case 'is_friend' :
     230                $button = array(
     231                    'id'                => 'is_friend',
     232                    'component'         => 'friends',
     233                    'must_be_logged_in' => true,
     234                    'block_self'        => true,
     235                    'wrapper_class'     => 'friendship-button is_friend',
     236                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
     237                    'link_class'        => '',
     238                    'link_href'         => wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/remove-friend/' . $potential_friend_id . '/', 'friends_remove_friend' ),
     239                    'link_text'         => __( 'Cancel Friendship', 'buddypress' ),
     240                    'link_title'        => __( 'Cancel Friendship', 'buddypress' ),
     241                    'link_id'           => 'friend-' . $potential_friend_id,
     242                    'link_rel'          => 'remove',
     243                    'link_class'        => 'remove'
     244                );
     245                break;
     246
     247            default:
     248                $button = array(
     249                    'id'                => 'not_friends',
     250                    'component'         => 'friends',
     251                    'must_be_logged_in' => true,
     252                    'block_self'        => true,
     253                    'wrapper_class'     => 'friendship-button not_friends',
     254                    'wrapper_id'        => 'friendship-button-' . $potential_friend_id,
     255                    'link_class'        => '',
     256                    'link_href'         => wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/add-friend/' . $potential_friend_id . '/', 'friends_add_friend' ),
     257                    'link_text'         => __( 'Add Friend', 'buddypress' ),
     258                    'link_title'        => __( 'Add Friend', 'buddypress' ),
     259                    'link_id'           => 'friend-' . $potential_friend_id,
     260                    'link_rel'          => 'add',
     261                    'link_class'        => 'add'
     262                );
     263                break;
    144264        }
    145         $button .= '</div>';
    146 
    147         return apply_filters( 'bp_get_add_friend_button', $button );
     265
     266        // Filter and return the HTML button
     267        return bp_get_button( apply_filters( 'bp_get_add_friend_button', $button ) );
    148268    }
    149269
     
    209329    }
    210330
    211 function bp_total_friend_count( $user_id = false ) {
     331function bp_total_friend_count( $user_id = 0 ) {
    212332    echo bp_get_total_friend_count( $user_id );
    213333}
    214     function bp_get_total_friend_count( $user_id = false ) {
     334    function bp_get_total_friend_count( $user_id = 0 ) {
    215335        return apply_filters( 'bp_get_total_friend_count', friends_get_total_friend_count( $user_id ) );
    216336    }
    217337    add_filter( 'bp_get_total_friend_count', 'bp_core_number_format' );
    218338
    219 function bp_friend_total_requests_count( $user_id = false ) {
     339function bp_friend_total_requests_count( $user_id = 0 ) {
    220340    echo bp_friend_get_total_requests_count( $user_id );
    221341}
    222     function bp_friend_get_total_requests_count( $user_id = false ) {
     342    function bp_friend_get_total_requests_count( $user_id = 0 ) {
    223343        global $bp;
    224344
    225         if ( !$user_id )
     345        if ( empty( $user_id ) )
    226346            $user_id = $bp->loggedin_user->id;
    227347
  • trunk/bp-groups/bp-groups-templatetags.php

    r3247 r3263  
    10511051    return true;
    10521052}
     1053function bp_group_new_topic_button() {
     1054    if ( bp_is_group_forum() && is_user_logged_in() && !bp_is_group_forum_topic() ) {
     1055        bp_button( array (
     1056            'id'                => 'new_topic',
     1057            'component'         => 'groups',
     1058            'must_be_logged_in' => true,
     1059            'block_self'        => true,
     1060            'wrapper_class'     => 'group-button',
     1061            'link_href'         => '#post-new',
     1062            'link_class'        => '',
     1063            'link_text'         => __( 'New Topic', 'buddypress' ),
     1064            'link_title'        => __( 'New Topic', 'buddypress' ),
     1065        ) );
     1066    }
     1067}
    10531068
    10541069function bp_group_join_button( $group = false ) {
    1055     echo bp_get_group_join_button( $group );
     1070    echo bp_get_group_join_button();
    10561071}
    10571072    function bp_get_group_join_button( $group = false ) {
     
    10651080            return false;
    10661081
     1082        // Group creation was not completed or status is unknown
    10671083        if ( !$group->status )
    10681084            return false;
    10691085
    1070         if ( 'hidden' == $group->status && !$group->is_member )
    1071             return false;
    1072 
    1073         $button = '<div class="generic-button group-button ' . $group->status . '" id="groupbutton-' . $group->id . '">';
    1074 
    1075         switch ( $group->status ) {
    1076             case 'public':
    1077                 if ( $group->is_member )
    1078                     $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1079                 else
    1080                     $button .= '<a class="join-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>';
    1081             break;
    1082 
    1083             case 'private':
    1084                 if ( $group->is_member ) {
    1085                     $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1086                 } else {
    1087                     if ( !bp_group_has_requested_membership( $group ) )
    1088                         $button .= '<a class="request-membership" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ) . '">' . __('Request Membership', 'buddypress') . '</a>';
    1089                     else
    1090                         $button .= '<a class="membership-requested" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>';
    1091                 }
    1092             break;
    1093 
    1094             case 'hidden':
    1095                 if ( $group->is_member )
    1096                     $button .= '<a class="leave-group" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>';
    1097             break;
    1098         }
    1099 
    1100         $button .= '</div>';
    1101 
    1102         return apply_filters( 'bp_get_group_join_button', $button );
     1086        // Already a member
     1087        if ( $group->is_member ) {
     1088
     1089            // Stop sole admins from abandoning their group
     1090            if ( $bp->is_item_admin && count( groups_get_group_admins( $group->id ) ) < 2 )
     1091                return false;
     1092
     1093            $button = array(
     1094                'id'                => 'leave_group',
     1095                'component'         => 'groups',
     1096                'must_be_logged_in' => true,
     1097                'block_self'        => false,
     1098                'wrapper_class'     => 'group-button ' . $group->status,
     1099                'wrapper_id'        => 'groupbutton-' . $group->id,
     1100                'link_class'        => 'leave-group',
     1101                'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ),
     1102                'link_text'         => __( 'Leave Group', 'buddypress' ),
     1103                'link_title'        => __( 'Leave Group', 'buddypress' )
     1104            );
     1105
     1106        // Not a member
     1107        } else {
     1108
     1109            // Show different buttons based on group status
     1110            switch ( $group->status ) {
     1111                case 'hidden' :
     1112                    return false;
     1113                    break;
     1114
     1115                case 'public':
     1116                    $button = array(
     1117                        'id'                => 'join_group',
     1118                        'component'         => 'groups',
     1119                        'must_be_logged_in' => true,
     1120                        'block_self'        => false,
     1121                        'wrapper_class'     => 'group-button ' . $group->status,
     1122                        'wrapper_id'        => 'groupbutton-' . $group->id,
     1123                        'link_class'        => 'join-group',
     1124                        'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ),
     1125                        'link_text'         => __( 'Join Group', 'buddypress' ),
     1126                        'link_title'        => __( 'Join Group', 'buddypress' )
     1127                    );
     1128                    break;
     1129
     1130                case 'private' :
     1131
     1132                    // Member has not requested membership yet
     1133                    if ( !bp_group_has_requested_membership( $group ) ) {
     1134                        $button = array(
     1135                            'id'                => 'request_membership',
     1136                            'component'         => 'groups',
     1137                            'must_be_logged_in' => true,
     1138                            'block_self'        => false,
     1139                            'wrapper_class'     => 'group-button ' . $group->status,
     1140                            'wrapper_id'        => 'groupbutton-' . $group->id,
     1141                            'link_class'        => 'request-membership',
     1142                            'link_href'         => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
     1143                            'link_text'         => __( 'Request Membership', 'buddypress' ),
     1144                            'link_title'        => __( 'Request Membership', 'buddypress' ),
     1145                        );
     1146
     1147                    // Member has requested membership already
     1148                    } else {
     1149                        $button = array(
     1150                            'id'                => 'membership_requested',
     1151                            'component'         => 'groups',
     1152                            'must_be_logged_in' => true,
     1153                            'block_self'        => false,
     1154                            'wrapper_class'     => 'group-button pending ' . $group->status,
     1155                            'wrapper_id'        => 'groupbutton-' . $group->id,
     1156                            'link_class'        => 'membership-requested',
     1157                            'link_href'         => bp_get_group_permalink( $group ),
     1158                            'link_text'         => __( 'Request Sent', 'buddypress' ),
     1159                            'link_title'        => __( 'Request Sent', 'buddypress' ),
     1160                        );
     1161                    }
     1162
     1163                    break;
     1164            }
     1165        }
     1166
     1167        // Filter and return the HTML button
     1168        return bp_get_button( apply_filters( 'bp_get_group_join_button', $button ) );
    11031169    }
    11041170
     
    19392005
    19402006function bp_group_request_reject_link() {
    1941     global $requests_template, $groups_template;
    1942 
    1943     echo apply_filters( 'bp_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . '/admin/membership-requests/reject/' . $requests_template->request->id, 'groups_reject_membership_request' ) );
    1944 }
     2007    echo bp_get_group_request_reject_link();
     2008}
     2009    function bp_get_group_request_reject_link() {
     2010        global $requests_template, $groups_template;
     2011
     2012        return apply_filters( 'bp_get_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . '/admin/membership-requests/reject/' . $requests_template->request->id, 'groups_reject_membership_request' ) );
     2013    }
    19452014
    19462015function bp_group_request_accept_link() {
    1947     global $requests_template, $groups_template;
    1948 
    1949     echo apply_filters( 'bp_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . '/admin/membership-requests/accept/' . $requests_template->request->id, 'groups_accept_membership_request' ) );
    1950 }
     2016    echo bp_get_group_request_accept_link();
     2017}
     2018    function bp_get_group_request_accept_link() {
     2019        global $requests_template, $groups_template;
     2020
     2021        return apply_filters( 'bp_get_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . '/admin/membership-requests/accept/' . $requests_template->request->id, 'groups_accept_membership_request' ) );
     2022    }
     2023
     2024function bp_group_request_user_link() {
     2025    echo bp_get_group_request_user_link();
     2026}
     2027    function bp_get_group_request_user_link() {
     2028        global $requests_template;
     2029
     2030        return apply_filters( 'bp_get_group_request_user_link', bp_core_get_userlink( $requests_template->request->user_id ) );
     2031    }
    19512032
    19522033function bp_group_request_time_since_requested() {
     
    19612042    echo apply_filters( 'bp_group_request_comment', strip_tags( stripslashes( $requests_template->request->comments ) ) );
    19622043}
    1963 
    1964 function bp_group_request_user_link() {
    1965     global $requests_template;
    1966 
    1967     echo apply_filters( 'bp_group_request_user_link', bp_core_get_userlink( $requests_template->request->user_id ) );
    1968 }
    1969 
    19702044
    19712045/************************************************************************************
  • trunk/bp-messages/bp-messages-templatetags.php

    r3247 r3263  
    486486        global $bp;
    487487
    488         return apply_filters( 'bp_get_send_public_message_link', $bp->loggedin_user->domain . $bp->messages->slug . '/compose/?r=' . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) );
    489     }
     488        if ( bp_is_my_profile() || !is_user_logged_in() )
     489            return false;
     490
     491        return apply_filters( 'bp_get_send_private_message_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->messages->slug . '/compose/?r=' . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) ) );
     492    }
     493
     494/**
     495 * bp_send_private_message_button()
     496 *
     497 * Explicitly named function to avoid confusion with public messages.
     498 *
     499 * @uses bp_get_send_message_button()
     500 * @since 1.2.6
     501 */
     502function bp_send_private_message_button() {
     503    echo bp_get_send_message_button();
     504}
    490505
    491506function bp_send_message_button() {
     
    493508}
    494509    function bp_get_send_message_button() {
    495         global $bp;
    496 
    497         if ( bp_is_my_profile() || !is_user_logged_in() )
    498             return false;
    499 
    500         return apply_filters( 'bp_get_send_message_button', '<div class="generic-button"><a class="send-message" title="' . __( 'Send Message', 'buddypress' ) . '" href="' . $bp->loggedin_user->domain . $bp->messages->slug . '/compose/?r=' . bp_core_get_username( $bp->displayed_user->user_id, $bp->displayed_user->userdata->user_nicename, $bp->displayed_user->userdata->user_login ) . '">' . __( 'Send Message', 'buddypress' ) . '</a></div>' );
     510        return apply_filters( 'bp_get_send_message_button',
     511            bp_get_button( array(
     512                'id'                => 'private_message',
     513                'component'         => 'messages',
     514                'must_be_logged_in' => true,
     515                'block_self'        => true,
     516                'wrapper_id'        => 'send-private-message',
     517                'link_href'         => bp_get_send_private_message_link(),
     518                'link_class'        => 'send-message',
     519                'link_title'        => __( 'Send a private message to this user.', 'buddypress' ),
     520                'link_text'         => __( 'Send Private Message', 'buddypress' )
     521            ) )
     522        );
    501523    }
    502524
  • trunk/bp-themes/bp-default/blogs/blogs-loop.php

    r2712 r3263  
    3333
    3434            <div class="action">
    35                 <div class="generic-button blog-button visit">
    36                     <a href="<?php bp_blog_permalink() ?>" class="visit" title="<?php _e( 'Visit Blog', 'buddypress' ) ?>"><?php _e( 'Visit Blog', 'buddypress' ) ?></a>
    37                 </div>
     35
     36                <?php do_action( 'bp_directory_blogs_actions' ) ?>
    3837
    3938                <div class="meta">
     
    4140                </div>
    4241
    43                 <?php do_action( 'bp_directory_blogs_actions' ) ?>
    4442            </div>
    4543
  • trunk/bp-themes/bp-default/functions.php

    r3232 r3263  
    231231add_action( 'wp_footer', 'bp_dtheme_js_terms' );
    232232
     233// Member Buttons
     234add_action( 'bp_member_header_actions',    'bp_add_friend_button' );
     235add_action( 'bp_member_header_actions',    'bp_send_public_message_button' );
     236add_action( 'bp_member_header_actions',    'bp_send_private_message_button' );
     237
     238// Group Buttons
     239add_action( 'bp_group_header_actions',     'bp_group_join_button' );
     240add_action( 'bp_group_header_actions',     'bp_group_new_topic_button' );
     241add_action( 'bp_directory_groups_actions', 'bp_group_join_button' );
     242
     243// Blog Buttons
     244add_action( 'bp_directory_blogs_actions',  'bp_blogs_visit_blog_button' );
     245
    233246?>
  • trunk/bp-themes/bp-default/groups/groups-loop.php

    r2712 r3263  
    3232
    3333                <?php do_action( 'bp_directory_groups_item' ) ?>
     34
    3435            </div>
    3536
    3637            <div class="action">
    37                 <?php bp_group_join_button() ?>
     38
     39                <?php do_action( 'bp_directory_groups_actions' ) ?>
    3840
    3941                <div class="meta">
     42
    4043                    <?php bp_group_type() ?> / <?php bp_group_member_count() ?>
     44
    4145                </div>
    4246
    43                 <?php do_action( 'bp_directory_groups_actions' ) ?>
    4447            </div>
    4548
  • trunk/bp-themes/bp-default/groups/single/admin.php

    r2550 r3263  
    117117
    118118            <?php if ( bp_get_group_has_avatar() ) : ?>
     119
    119120                <p><?php _e( "If you'd like to remove the existing avatar but not upload a new one, please use the delete avatar button.", 'buddypress' ) ?></p>
    120121
    121                 <div class="generic-button" id="delete-group-avatar-button">
    122                     <a class="edit" href="<?php bp_group_avatar_delete_link() ?>" title="<?php _e( 'Delete Avatar', 'buddypress' ) ?>"><?php _e( 'Delete Avatar', 'buddypress' ) ?></a>
    123                 </div>
     122                <?php bp_button( array( 'id' => 'delete_group_avatar', 'component' => 'groups', 'wrapper_id' => 'delete-group-avatar-button', 'link_class' => 'edit', 'link_href' => bp_get_group_avatar_delete_link(), 'link_title' => __( 'Delete Avatar', 'buddypress' ), 'link_text' => __( 'Delete Avatar', 'buddypress' ) ) ); ?>
     123
    124124            <?php endif; ?>
    125125
     
    249249                    <div class="action">
    250250
    251                         <div class="generic-button accept">
    252                             <a href="<?php bp_group_request_accept_link() ?>"><?php _e( 'Accept', 'buddypress' ); ?></a>
    253                         </div>
    254 
    255                      &nbsp;
    256 
    257                         <div class="generic-button reject">
    258                             <a href="<?php bp_group_request_reject_link() ?>"><?php _e( 'Reject', 'buddypress' ); ?></a>
    259                         </div>
     251                        <?php bp_button( array( 'id' => 'group_membership_accept', 'component' => 'groups', 'wrapper_class' => 'accept', 'link_href' => bp_get_group_request_accept_link(), 'link_title' => __( 'Accept', 'buddypress' ), 'link_text' => __( 'Accept', 'buddypress' ) ) ); ?>
     252
     253                        <?php bp_button( array( 'id' => 'group_membership_reject', 'component' => 'groups', 'wrapper_class' => 'reject', 'link_href' => bp_get_group_request_reject_link(), 'link_title' => __( 'Reject', 'buddypress' ), 'link_text' => __( 'Reject', 'buddypress' ) ) ); ?>
    260254
    261255                        <?php do_action( 'bp_group_membership_requests_admin_item_action' ); ?>
  • trunk/bp-themes/bp-default/members/members-loop.php

    r2712 r3263  
    3030                <div class="item-title">
    3131                    <a href="<?php bp_member_permalink() ?>"><?php bp_member_name() ?></a>
     32
    3233                    <?php if ( bp_get_member_latest_update() ) : ?>
     34
    3335                        <span class="update"> - <?php bp_member_latest_update( 'length=10' ) ?></span>
     36
    3437                    <?php endif; ?>
     38
    3539                </div>
     40
    3641                <div class="item-meta"><span class="activity"><?php bp_member_last_active() ?></span></div>
    3742
     
    4247                  * If you want to show specific profile fields here you can,
    4348                  * but it'll add an extra query for each member in the loop
    44                   * (only one regadless of the number of fields you show):
     49                  * (only one regardless of the number of fields you show):
    4550                  *
    4651                  * bp_member_profile_data( 'field=the field name' );
     
    5055
    5156            <div class="action">
    52                 <?php bp_member_add_friend_button() ?>
    5357
    54                 <?php do_action( 'bp_directory_members_actions' ) ?>
     58                <?php do_action( 'bp_directory_members_actions' ); ?>
     59
    5560            </div>
    5661
  • trunk/bp-themes/bp-default/members/single/member-header.php

    r2626 r3263  
    2222
    2323        <div id="item-buttons">
    24             <?php if ( function_exists( 'bp_add_friend_button' ) ) : ?>
    25                 <?php bp_add_friend_button() ?>
    26             <?php endif; ?>
    2724
    28             <?php if ( is_user_logged_in() && !bp_is_my_profile() && function_exists( 'bp_send_public_message_link' ) ) : ?>
    29                 <div class="generic-button" id="post-mention">
    30                     <a href="<?php bp_send_public_message_link() ?>" title="<?php _e( 'Mention this user in a new public message, this will send the user a notification to get their attention.', 'buddypress' ) ?>"><?php _e( 'Mention this User', 'buddypress' ) ?></a>
    31                 </div>
    32             <?php endif; ?>
     25            <?php do_action( 'bp_member_header_actions' ); ?>
    3326
    34             <?php if ( is_user_logged_in() && !bp_is_my_profile() && function_exists( 'bp_send_private_message_link' ) ) : ?>
    35                 <div class="generic-button" id="send-private-message">
    36                     <a href="<?php bp_send_private_message_link() ?>" title="<?php _e( 'Send a private message to this user.', 'buddypress' ) ?>"><?php _e( 'Send Private Message', 'buddypress' ) ?></a>
    37                 </div>
    38             <?php endif; ?>
    3927        </div><!-- #item-buttons -->
    4028
Note: See TracChangeset for help on using the changeset viewer.