Skip to:
Content

BuddyPress.org

Changeset 2372


Ignore:
Timestamp:
01/19/2010 09:26:59 PM (15 years ago)
Author:
apeatling
Message:

Better friendship request usability.

Location:
trunk
Files:
4 edited

Legend:

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

    r2332 r2372  
    161161}
    162162
    163 function bp_friend_accept_request_link() {
    164     echo bp_get_friend_accept_request_link();
    165 }
    166     // You only have the user ID but you need the friendship ID !!
    167 
    168     function bp_get_friend_accept_request_link() {
     163function bp_friend_friendship_id() {
     164    echo bp_get_friend_friendship_id();
     165}
     166    function bp_get_friend_friendship_id() {
    169167        global $members_template, $bp;
    170168
     
    174172        }
    175173
    176         return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/requests/accept/' . $friendship_id, 'friends_accept_friendship' ) );
    177     }
    178 
    179 function bp_friend_reject_request_link() {
    180     echo bp_get_friend_reject_request_link();
    181 }
    182     function bp_get_friend_reject_request_link() {
     174        return apply_filters( 'bp_get_friend_friendship_id', $friendship_id );
     175    }
     176
     177function bp_friend_accept_request_link() {
     178    echo bp_get_friend_accept_request_link();
     179}
     180    function bp_get_friend_accept_request_link() {
    183181        global $members_template, $bp;
    184182
     
    188186        }
    189187
     188        return apply_filters( 'bp_get_friend_accept_request_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/requests/accept/' . $friendship_id, 'friends_accept_friendship' ) );
     189    }
     190
     191function bp_friend_reject_request_link() {
     192    echo bp_get_friend_reject_request_link();
     193}
     194    function bp_get_friend_reject_request_link() {
     195        global $members_template, $bp;
     196
     197        if ( !$friendship_id = wp_cache_get( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id ) ) {
     198            $friendship_id = friends_get_friendship_id( $members_template->member->id, $bp->loggedin_user->id );
     199            wp_cache_set( 'friendship_id_' . $members_template->member->id . '_' . $bp->loggedin_user->id, $friendship_id, 'bp' );
     200        }
     201
    190202        return apply_filters( 'bp_get_friend_reject_request_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->friends->slug . '/requests/reject/' . $friendship_id, 'friends_reject_friendship' ) );
    191203    }
  • trunk/bp-themes/bp-default/_inc/ajax.php

    r2371 r2372  
    353353add_action( 'wp_ajax_addremove_friend', 'bp_dtheme_ajax_addremove_friend' );
    354354
     355function bp_dtheme_ajax_accept_friendship() {
     356    check_admin_referer( 'friends_accept_friendship' );
     357
     358    if ( !friends_accept_friendship( $_POST['id'] ) )
     359        echo "-1<div id='message' class='error'><p>" . __( 'There was a problem accepting that request. Please try again.', 'buddypress' ) . '</p></div>';
     360
     361    return true;
     362}
     363add_action( 'wp_ajax_accept_friendship', 'bp_dtheme_ajax_accept_friendship' );
     364
     365function bp_dtheme_ajax_reject_friendship() {
     366    check_admin_referer( 'friends_reject_friendship' );
     367
     368    if ( !friends_reject_friendship( $_POST['id'] ) )
     369        echo "-1<div id='message' class='error'><p>" . __( 'There was a problem rejecting that request. Please try again.', 'buddypress' ) . '</p></div>';
     370
     371    return true;
     372}
     373add_action( 'wp_ajax_reject_friendship', 'bp_dtheme_ajax_reject_friendship' );
     374
    355375function bp_dtheme_ajax_joinleave_group() {
    356376    global $bp;
  • trunk/bp-themes/bp-default/_inc/global.js

    r2370 r2372  
    768768    });
    769769
    770     /** Friendship Request Buttons **************************************/
     770    /** Friendship Requests **************************************/
     771
     772    j("ul#friend-list a.accept, ul#friend-list a.reject").click( function() {
     773        var button = j(this);
     774        var li = j(this).parents('ul#friend-list li');
     775        var action_div = j(this).parents('li div.action');
     776
     777        var id = li.attr('id').substr( 11, li.attr('id').length );
     778        var link_href = button.attr('href');
     779
     780        var nonce = link_href.split('_wpnonce=');
     781            nonce = nonce[1];
     782
     783        if ( j(this).hasClass('accept') ) {
     784            var action = 'accept_friendship';
     785            action_div.children('a.reject').css( 'visibility', 'hidden' );
     786        } else {
     787            var action = 'reject_friendship';
     788            action_div.children('a.accept').css( 'visibility', 'hidden' );
     789        }
     790
     791        button.addClass('loading');
     792
     793        j.post( ajaxurl, {
     794            action: action,
     795            'cookie': encodeURIComponent(document.cookie),
     796            'id': id,
     797            '_wpnonce': nonce
     798        },
     799        function(response) {
     800            button.removeClass('loading');
     801
     802            if ( response[0] + response[1] == '-1' ) {
     803                li.prepend( response.substr( 2, response.length ) );
     804                li.children('div#message').hide().fadeIn(200);
     805            } else {
     806                button.fadeOut( 100, function() {
     807                    if ( j(this).hasClass('accept') )
     808                        j(this).html( 'Accepted' ).fadeIn(50);
     809                    else
     810                        j(this).html( 'Rejected' ).fadeIn(50);
     811                });
     812            }
     813        });
     814
     815        return false;
     816    });
    771817
    772818    j("div.friendship-button a").live('click', function() {
  • trunk/bp-themes/bp-default/members/single/friends/requests.php

    r2284 r2372  
    66        <?php while ( bp_members() ) : bp_the_member(); ?>
    77
    8             <li>
     8            <li id="friendship-<?php bp_friend_friendship_id() ?>">
    99                <div class="item-avatar">
    1010                    <a href="<?php bp_member_link() ?>"><?php bp_member_avatar() ?></a>
     
    2020                <div class="action">
    2121                    <a class="button accept" href="<?php bp_friend_accept_request_link() ?>"><?php _e( 'Accept', 'buddypress' ); ?></a> &nbsp;
    22                     <a class="button reject confirm" href="<?php bp_friend_reject_request_link() ?>"><?php _e( 'Reject', 'buddypress' ); ?></a>
     22                    <a class="button reject" href="<?php bp_friend_reject_request_link() ?>"><?php _e( 'Reject', 'buddypress' ); ?></a>
    2323
    2424                    <?php do_action( 'bp_friend_requests_item_action' ) ?>
Note: See TracChangeset for help on using the changeset viewer.