contemplate (@contemplate)

Forum Replies Created

Viewing 4 replies - 1 through 4 (of 4 total)

  • contemplate
    Participant

    @contemplate

    Thank you! This fix worked for us. Hope the official patch is released soon.


    contemplate
    Participant

    @contemplate

    Hmm. Ok it looks like my theme (Kleo) has a different forum template. Simply put the custom reply.js file was going to the Parent Node wrapper which put the Reply form at the bottom of any child replies. I simply had to have it find the first child node of the wrapper so it could drop the reply form right underneath.

    I just looked at your staging site which is a different template. Try this instead:

    reply.appendChild(respond);


    contemplate
    Participant

    @contemplate

    @jon-fergus I got this fixed with the reply.js file you include in your child theme.

    simply change this line:
    reply.parentNode.appendChild(respond);

    to this:
    reply.parentNode.children[1].appendChild(respond);

    And the reply box should appear directly under the post you are replying to.


    contemplate
    Participant

    @contemplate

    Hi All. Needed this exact behavior as well. It really should be the default behavior. But if you don’t want to hack the core here is the code to place in your functions.php or custom plugin:

    
    /**
     * Format the BuddyBar/Toolbar notifications
     * Fixed: https://bbpress.org/forums/topic/new-reply-notification-link-to-the-reply/
     */
    function bbp_format_buddypress_notifications_custom( $action, $item_id, $secondary_item_id, $total_items, $format = 'string' ) {
    
    	// New reply notifications
    	if ( 'bbp_new_reply' === $action ) {
    		$topic_id    = bbp_get_reply_topic_id( $item_id );
    		$topic_title = bbp_get_topic_title( $topic_id );
    		$topic_link  = wp_nonce_url( add_query_arg( array( 'action' => 'bbp_mark_read', 'topic_id' => $item_id ), bbp_get_reply_url( $item_id ) ), 'bbp_mark_topic_' . $item_id );
    		$title_attr  = __( 'Topic Replies', 'bbpress' );
    
    		if ( (int) $total_items > 1 ) {
    			$text   = sprintf( __( 'You have %d new replies', 'bbpress' ), (int) $total_items );
    			$filter = 'bbp_multiple_new_subscription_notification';
    		} else {
    			if ( !empty( $secondary_item_id ) ) {
    				$text = sprintf( __( 'You have %d new reply to %2$s from %3$s', 'bbpress' ), (int) $total_items, $topic_title, bp_core_get_user_displayname( $secondary_item_id ) );
    			} else {
    				$text = sprintf( __( 'You have %d new reply to %s',             'bbpress' ), (int) $total_items, $topic_title );
    			}
    			$filter = 'bbp_single_new_subscription_notification';
    		}
    
    		// WordPress Toolbar
    		if ( 'string' === $format ) {
    			$return = apply_filters( $filter, '<a href="' . esc_url( $topic_link ) . '" title="' . esc_attr( $title_attr ) . '">' . esc_html( $text ) . '</a>', (int) $total_items, $text, $topic_link );
    
    		// Deprecated BuddyBar
    		} else {
    			$return = apply_filters( $filter, array(
    				'text' => $text,
    				'link' => $topic_link
    			), $topic_link, (int) $total_items, $text, $topic_title );
    		}
    
    		do_action( 'bbp_format_buddypress_notifications', $action, $item_id, $secondary_item_id, $total_items );
    
    		return $return;
    	}
    }
    remove_filter( 'bp_notifications_get_notifications_for_user', 'bbp_format_buddypress_notifications', 10 );
    add_filter( 'bp_notifications_get_notifications_for_user', 'bbp_format_buddypress_notifications_custom', 10, 5 );
    
    /**
     * Hooked into the new reply function, this notification action is responsible
     * for notifying topic and hierarchical reply authors of topic replies.
     * Fixed: https://bbpress.org/forums/topic/new-reply-notification-link-to-the-reply/
     */
    function bbp_buddypress_add_notification_custom( $reply_id = 0, $topic_id = 0, $forum_id = 0, $anonymous_data = false, $author_id = 0, $is_edit = false, $reply_to = 0 ) {
    
    	// Bail if somehow this is hooked to an edit action
    	if ( !empty( $is_edit ) ) {
    		return;
    	}
    
    	// Get autohr information
    	$topic_author_id   = bbp_get_topic_author_id( $topic_id );
    	$secondary_item_id = $author_id;
    
    	// Hierarchical replies
    	if ( !empty( $reply_to ) ) {
    		$reply_to_item_id = bbp_get_topic_author_id( $reply_to );
    	}
    
    	// Get some reply information
    	$args = array(
    		'user_id'          => $topic_author_id,
    		'item_id'          => $reply_id,
    		'component_name'   => bbp_get_component_name(),
    		'component_action' => 'bbp_new_reply',
    		'date_notified'    => get_post( $reply_id )->post_date,
    	);
    
     	// Notify the topic author if not the current reply author
     	if ( $author_id !== $topic_author_id ) {
    		$args['secondary_item_id'] = $secondary_item_id ;
    
    		bp_notifications_add_notification( $args );
     	}
     
     	// Notify the immediate reply author if not the current reply author
     	if ( !empty( $reply_to ) && ( $author_id !== $reply_to_item_id ) ) {
    		$args['secondary_item_id'] = $reply_to_item_id ;
    
    		bp_notifications_add_notification( $args );
     	}
    }
    remove_action( 'bbp_new_reply', 'bbp_buddypress_add_notification', 10 );
    add_action( 'bbp_new_reply', 'bbp_buddypress_add_notification_custom', 10, 7 );
    
Viewing 4 replies - 1 through 4 (of 4 total)