Skip to:
Content

BuddyPress.org

Changeset 8428


Ignore:
Timestamp:
05/16/2014 01:05:35 PM (8 years ago)
Author:
boonebgorges
Message:

Introduce bp_activity_show_filters(), and use it for generating dynamic activity filter dropdowns

Activity filter dropdowns were previously hardcoded into templates, with
template-specific hooks for plugins to add their own filter values. This
resulted in an inconsistent and awkward process of maintaining filter lists
between components. The new method introduces new parameters to bp_activity_set_action():
$context (an array of the contexts in which the filter should appear) and
$label (the text that should be used when generating the <option> markup). The
new function bp_activity_show_filter() is then used in the templates to
generate a dynamic list of <option> markup, based on the values registered by
the activity types.

Fixes #5637

Props imath

Location:
trunk/src
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-activity/bp-activity-functions.php

    r8237 r8428  
    276276 * @param string $description The action description.
    277277 * @param callable $format_callback Callback for formatting the action string.
     278 * @param string $label String to describe this action in the activity stream
     279 *        filter dropdown.
     280 * @param array $context Activity stream contexts where the filter should appear.
     281 *        'activity', 'member', 'member_groups', 'group'
    278282 * @return bool False if any param is empty, otherwise true.
    279283 */
    280 function bp_activity_set_action( $component_id, $type, $description, $format_callback = false ) {
     284function bp_activity_set_action( $component_id, $type, $description, $format_callback = false, $label = false, $context = array() ) {
    281285    $bp = buddypress();
    282286
     
    304308        'value'           => $description,
    305309        'format_callback' => $format_callback,
    306     ), $component_id, $type, $description, $format_callback );
     310        'label'           => $label,
     311        'context'         => $context,
     312    ), $component_id, $type, $description, $format_callback, $label, $context );
    307313
    308314    return true;
     
    836842        'activity_update',
    837843        __( 'Posted a status update', 'buddypress' ),
    838         'bp_activity_format_activity_action_activity_update'
     844        'bp_activity_format_activity_action_activity_update',
     845        __( 'Updates', 'buddypress' ),
     846        array( 'activity', 'group', 'member', 'member_groups' )
    839847    );
    840848
     
    843851        'activity_comment',
    844852        __( 'Replied to a status update', 'buddypress' ),
    845         'bp_activity_format_activity_action_activity_comment'
     853        'bp_activity_format_activity_action_activity_comment',
     854        __( 'Activity Comments', 'buddypress' )
    846855    );
    847856
  • trunk/src/bp-activity/bp-activity-template.php

    r8404 r8428  
    33723372}
    33733373add_action( 'bp_head', 'bp_activity_sitewide_feed' );
     3374
     3375/**
     3376 * Display available filters depending on the scope.
     3377 *
     3378 * @since BuddyPress (2.1.0)
     3379 *
     3380 * @param string $context The current context. 'activity', 'member',
     3381 *    'member_groups', 'group'.
     3382 * @uses bp_get_activity_show_filters()
     3383 */
     3384function bp_activity_show_filters( $context = '' ) {
     3385    echo bp_get_activity_show_filters( $context );
     3386}
     3387    /**
     3388     * Get available filters depending on the scope.
     3389     *
     3390     * @since BuddyPress (2.1.0)
     3391     *
     3392     * @param string $context The current context. 'activity', 'member',
     3393     *    'member_groups', 'group'
     3394     * @return string HTML for <option> values.
     3395     */
     3396    function bp_get_activity_show_filters( $context = '' ) {
     3397        // Set default context based on current page
     3398        if ( empty( $context ) ) {
     3399            if ( bp_is_user() ) {
     3400                switch ( bp_current_action() ) {
     3401                    case bp_get_groups_slug() :
     3402                        $context = 'member_groups';
     3403                        break;
     3404
     3405                    default :
     3406                        $context = 'member';
     3407                        break;
     3408                }
     3409            } else if ( bp_is_active( 'groups' ) && bp_is_group() ) {
     3410                $context = 'group';
     3411            } else {
     3412                $context = 'activity';
     3413            }
     3414        }
     3415
     3416        $filters = array();
     3417
     3418        // Walk through the registered actions, and prepare an the
     3419        // select box options.
     3420        foreach ( buddypress()->activity->actions as $actions ) {
     3421            foreach ( $actions as $action ) {
     3422                if ( ! in_array( $context, (array) $action['context'] ) ) {
     3423                    continue;
     3424                }
     3425
     3426                // Friends activity collapses two filters into one
     3427                if ( in_array( $action['key'], array( 'friendship_accepted', 'friendship_created' ) ) ) {
     3428                    $action['key'] = 'friendship_accepted,friendship_created';
     3429                }
     3430
     3431                $filters[ $action['key'] ] = $action['label'];
     3432            }
     3433        }
     3434
     3435        /**
     3436         * Modify the filter options available in the activity filter dropdown.
     3437         *
     3438         * @since BuddyPress (2.1.0)
     3439         *
     3440         * @param array $filters Array of filter options for the given
     3441         *        context, in the following format:
     3442         *            $option_value => $option_name
     3443         * @param string $context Context for the filter. 'activity'
     3444         *        'member', 'member_groups', 'group'.
     3445         */
     3446        $filters = apply_filters( 'bp_get_activity_show_filters', $filters, $context );
     3447
     3448        // Build the options output
     3449        $output = '';
     3450
     3451        if ( ! empty( $filters ) ) {
     3452            foreach ( $filters as $value => $filter ) {
     3453                $output .= '<option value="' . esc_attr( $value ) . '">' . esc_html( $filter ) . '</option>' . "\n";
     3454            }
     3455        }
     3456
     3457        return apply_filters( 'bp_get_activity_show_filters', $output, $filters, $context );
     3458    }
  • trunk/src/bp-blogs/bp-blogs-activity.php

    r8345 r8428  
    3333            'new_blog',
    3434            __( 'New site created', 'buddypress' ),
    35             'bp_blogs_format_activity_action_new_blog'
     35            'bp_blogs_format_activity_action_new_blog',
     36            __( 'New Sites', 'buddypress' )
    3637        );
    3738    }
     
    4142        'new_blog_post',
    4243        __( 'New post published', 'buddypress' ),
    43         'bp_blogs_format_activity_action_new_blog_post'
     44        'bp_blogs_format_activity_action_new_blog_post',
     45        __( 'Posts', 'buddypress' ),
     46        array( 'activity', 'member' )
    4447    );
    4548
     
    4851        'new_blog_comment',
    4952        __( 'New post comment posted', 'buddypress' ),
    50         'bp_blogs_format_activity_action_new_blog_comment'
     53        'bp_blogs_format_activity_action_new_blog_comment',
     54        __( 'Comments', 'buddypress' ),
     55        array( 'activity', 'member' )
    5156    );
    5257
  • trunk/src/bp-friends/bp-friends-activity.php

    r8259 r8428  
    9797        'friendship_accepted',
    9898        __( 'Friendships accepted', 'buddypress' ),
    99         'bp_friends_format_activity_action_friendship_accepted'
     99        'bp_friends_format_activity_action_friendship_accepted',
     100        __( 'Friendships', 'buddypress' ),
     101        array( 'activity', 'member' )
    100102    );
    101103
     
    104106        'friendship_created',
    105107        __( 'New friendships', 'buddypress' ),
    106         'bp_friends_format_activity_action_friendship_created'
     108        'bp_friends_format_activity_action_friendship_created',
     109        __( 'Friendships', 'buddypress' ),
     110        array( 'activity', 'member' )
    107111    );
    108112
  • trunk/src/bp-groups/bp-groups-activity.php

    r8259 r8428  
    2828        'created_group',
    2929        __( 'Created a group', 'buddypress' ),
    30         'bp_groups_format_activity_action_created_group'
     30        'bp_groups_format_activity_action_created_group',
     31        __( 'New Groups', 'buddypress' ),
     32        array( 'activity', 'member', 'member_groups' )
    3133    );
    3234
     
    3537        'joined_group',
    3638        __( 'Joined a group', 'buddypress' ),
    37         'bp_groups_format_activity_action_joined_group'
     39        'bp_groups_format_activity_action_joined_group',
     40        __( 'Group Memberships', 'buddypress' ),
     41        array( 'activity', 'group', 'member', 'member_groups' )
    3842    );
    3943
     
    4246    // check for the legacy forums loader class to be extra cautious
    4347    if ( bp_is_active( 'forums' ) && class_exists( 'BP_Forums_Component' ) ) {
    44         bp_activity_set_action( $bp->groups->id, 'new_forum_topic', __( 'New group forum topic', 'buddypress' ) );
    45         bp_activity_set_action( $bp->groups->id, 'new_forum_post',  __( 'New group forum post',  'buddypress' ) );
     48        bp_activity_set_action(
     49            $bp->groups->id,
     50            'new_forum_topic',
     51            __( 'New group forum topic', 'buddypress' ),
     52            false,
     53            __( 'Forum Topics', 'buddypress' ),
     54            array( 'activity', 'group', 'member', 'member_groups' )
     55        );
     56
     57        bp_activity_set_action(
     58            $bp->groups->id,
     59            'new_forum_post',
     60            __( 'New group forum post',  'buddypress' ),
     61            false,
     62            __( 'Forum Replies', 'buddypress' ),
     63            array( 'activity', 'group', 'member', 'member_groups' )
     64        );
    4665    }
    4766
  • trunk/src/bp-templates/bp-legacy/buddypress/activity/index.php

    r7965 r8428  
    7777                <select id="activity-filter-by">
    7878                    <option value="-1"><?php _e( 'Everything', 'buddypress' ); ?></option>
    79                     <option value="activity_update"><?php _e( 'Updates', 'buddypress' ); ?></option>
    8079
    81                     <?php if ( bp_is_active( 'blogs' ) ) : ?>
    82 
    83                         <option value="new_blog_post"><?php _e( 'Posts', 'buddypress' ); ?></option>
    84                         <option value="new_blog_comment"><?php _e( 'Comments', 'buddypress' ); ?></option>
    85 
    86                     <?php endif; ?>
    87 
    88                     <?php if ( bp_is_active( 'forums' ) ) : ?>
    89 
    90                         <option value="new_forum_topic"><?php _e( 'Forum Topics', 'buddypress' ); ?></option>
    91                         <option value="new_forum_post"><?php _e( 'Forum Replies', 'buddypress' ); ?></option>
    92 
    93                     <?php endif; ?>
    94 
    95                     <?php if ( bp_is_active( 'groups' ) ) : ?>
    96 
    97                         <option value="created_group"><?php _e( 'New Groups', 'buddypress' ); ?></option>
    98                         <option value="joined_group"><?php _e( 'Group Memberships', 'buddypress' ); ?></option>
    99 
    100                     <?php endif; ?>
    101 
    102                     <?php if ( bp_is_active( 'friends' ) ) : ?>
    103 
    104                         <option value="friendship_accepted,friendship_created"><?php _e( 'Friendships', 'buddypress' ); ?></option>
    105 
    106                     <?php endif; ?>
    107 
    108                     <option value="new_member"><?php _e( 'New Members', 'buddypress' ); ?></option>
     80                    <?php bp_activity_show_filters(); ?>
    10981
    11082                    <?php do_action( 'bp_activity_filter_options' ); ?>
  • trunk/src/bp-templates/bp-legacy/buddypress/groups/single/activity.php

    r7965 r8428  
    66
    77        <li id="activity-filter-select" class="last">
    8             <label for="activity-filter-by"><?php _e( 'Show:', 'buddypress' ); ?></label> 
     8            <label for="activity-filter-by"><?php _e( 'Show:', 'buddypress' ); ?></label>
    99            <select id="activity-filter-by">
    1010                <option value="-1"><?php _e( 'Everything', 'buddypress' ); ?></option>
    11                 <option value="activity_update"><?php _e( 'Updates', 'buddypress' ); ?></option>
    1211
    13                 <?php if ( bp_is_active( 'forums' ) ) : ?>
    14                     <option value="new_forum_topic"><?php _e( 'Forum Topics', 'buddypress' ); ?></option>
    15                     <option value="new_forum_post"><?php _e( 'Forum Replies', 'buddypress' ); ?></option>
    16                 <?php endif; ?>
    17 
    18                 <option value="joined_group"><?php _e( 'Group Memberships', 'buddypress' ); ?></option>
     12                <?php bp_activity_show_filters( 'group' ); ?>
    1913
    2014                <?php do_action( 'bp_group_activity_filter_options' ); ?>
  • trunk/src/bp-templates/bp-legacy/buddypress/members/single/activity.php

    r6284 r8428  
    1919            <select id="activity-filter-by">
    2020                <option value="-1"><?php _e( 'Everything', 'buddypress' ); ?></option>
    21                 <option value="activity_update"><?php _e( 'Updates', 'buddypress' ); ?></option>
    2221
    23                 <?php
    24                 if ( !bp_is_current_action( 'groups' ) ) :
    25                     if ( bp_is_active( 'blogs' ) ) : ?>
     22                <?php bp_activity_show_filters(); ?>
    2623
    27                         <option value="new_blog_post"><?php _e( 'Posts', 'buddypress' ); ?></option>
    28                         <option value="new_blog_comment"><?php _e( 'Comments', 'buddypress' ); ?></option>
    29 
    30                     <?php
    31                     endif;
    32 
    33                     if ( bp_is_active( 'friends' ) ) : ?>
    34 
    35                         <option value="friendship_accepted,friendship_created"><?php _e( 'Friendships', 'buddypress' ); ?></option>
    36 
    37                     <?php endif;
    38 
    39                 endif;
    40 
    41                 if ( bp_is_active( 'forums' ) ) : ?>
    42 
    43                     <option value="new_forum_topic"><?php _e( 'Forum Topics', 'buddypress' ); ?></option>
    44                     <option value="new_forum_post"><?php _e( 'Forum Replies', 'buddypress' ); ?></option>
    45 
    46                 <?php endif;
    47 
    48                 if ( bp_is_active( 'groups' ) ) : ?>
    49 
    50                     <option value="created_group"><?php _e( 'New Groups', 'buddypress' ); ?></option>
    51                     <option value="joined_group"><?php _e( 'Group Memberships', 'buddypress' ); ?></option>
    52 
    53                 <?php endif;
    54 
    55                 do_action( 'bp_member_activity_filter_options' ); ?>
     24                <?php do_action( 'bp_member_activity_filter_options' ); ?>
    5625
    5726            </select>
  • trunk/src/bp-xprofile/bp-xprofile-activity.php

    r8306 r8428  
    2222        // see r4273
    2323        'profile',
    24 
    2524        'new_avatar',
    2625        __( 'Member changed profile picture', 'buddypress' ),
    27         'bp_xprofile_format_activity_action_new_avatar'
     26        'bp_xprofile_format_activity_action_new_avatar',
     27        __( 'Updated Avatars', 'buddypress' )
    2828    );
    2929
     
    3232        'new_member',
    3333        __( 'New member registered', 'buddypress' ),
    34         'bp_xprofile_format_activity_action_new_member'
     34        'bp_xprofile_format_activity_action_new_member',
     35        __( 'New Members', 'buddypress' ),
     36        array( 'activity' )
    3537    );
    3638
     
    3941        'updated_profile',
    4042        __( 'Updated Profile', 'buddypress' ),
    41         'bp_xprofile_format_activity_action_updated_profile'
     43        'bp_xprofile_format_activity_action_updated_profile',
     44        __( 'Profile Updates', 'buddypress' ),
     45        array( 'activity' )
    4246    );
    4347
     
    310314 *
    311315 * @since BuddyPress (2.0.0)
     316 * @todo Mark as deprecated
    312317 */
    313318function xprofile_activity_filter_options() {
     
    318323    <?php
    319324}
    320 add_action( 'bp_activity_filter_options', 'xprofile_activity_filter_options' );
Note: See TracChangeset for help on using the changeset viewer.