Skip to:
Content

Changeset 6502


Ignore:
Timestamp:
11/09/12 15:42:23 (18 months ago)
Author:
djpaul
Message:

Add new activity template function to renders a list of all the registered activity types for use in a <select> element, or as <input type="checkbox">.

  • For the <select> output, this is backwards compatible with the "bp_activity_filter_options" action which was hardcoded into the BP-Default theme templates.
  • Fixes #4637
File:
1 edited

Legend:

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

    r6501 r6502  
    25532553 
    25542554 
     2555/** 
     2556 * Renders a list of all the registered activity types for use in a <select> element, or as <input type="checkbox">. 
     2557 * 
     2558 * @param string $output Optional. Either 'select' or 'checkbox'. Defaults to select. 
     2559 * @param string|array $args Optional extra arguments: 
     2560 *  checkbox_name - Used when type=checkbox. Sets the item's name property. 
     2561 *  selected      - Array of strings of activity types to mark as selected/checked. 
     2562 * @since BuddyPress (1.7) 
     2563 */ 
     2564function bp_activity_types_list( $output = 'select', $args = '' ) { 
     2565    $defaults = array( 
     2566        'checkbox_name' => 'bp_activity_types', 
     2567        'selected'      => array(), 
     2568    ); 
     2569    $args = wp_parse_args( $args, $defaults ); 
     2570 
     2571    $activities = bp_activity_get_types(); 
     2572    natsort( $activities ); 
     2573 
     2574    // Loop through the activity types and output markup 
     2575    foreach ( $activities as $type => $description ) { 
     2576 
     2577        // See if we need to preselect the current type 
     2578        $checked  = checked(  true, in_array( $type, (array) $args['selected'] ), false ); 
     2579        $selected = selected( true, in_array( $type, (array) $args['selected'] ), false ); 
     2580 
     2581        if ( 'select' == $output ) 
     2582            printf( '<option value="%1$s" %2$s>%3$s</option>', esc_attr( $type ), $selected, esc_html( $description ) ); 
     2583 
     2584        elseif ( 'checkbox' == $output ) 
     2585            printf( '<label style="">%1$s<input type="checkbox" name="%2$s[]" value="%3$s" %4$s/></label>', esc_html( $description ), esc_attr( $args['checkbox_name'] ), esc_attr( $type ), $checked ); 
     2586 
     2587        // Allow custom markup 
     2588        do_action( 'bp_activity_types_list_' . $output, $args, $type, $description ); 
     2589    } 
     2590 
     2591    // Backpat with BP-Default for dropdown boxes only 
     2592    if ( 'select' == $output ) 
     2593        do_action( 'bp_activity_filter_options' ); 
     2594} 
     2595 
     2596 
    25552597/* RSS Feed Template Tags ****************************************************/ 
    25562598 
Note: See TracChangeset for help on using the changeset viewer.