Skip to:
Content

Changeset 8210


Ignore:
Timestamp:
03/30/14 18:35:15 (4 years ago)
Author:
johnjamesjacoby
Message:

Profile Visibility Settings:

  • Rename template functions to match existing functions (profile VS xprofile)
  • Allow passing of field_id so they can be used outside of the profile field loop.
  • Allow before/after in radio buttons output.
  • See #5352.
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-templates/bp-legacy/buddypress/members/single/settings/profile.php

    r7965 r8210  
    2121                        <tr <?php bp_field_css_class(); ?>> 
    2222                            <td class="field-name"><?php bp_the_profile_field_name(); ?></td> 
    23                             <td class="field-visibility"><?php bp_xprofile_settings_visibility_select(); ?></td> 
     23                            <td class="field-visibility"><?php bp_profile_settings_visibility_select(); ?></td> 
    2424                        </tr> 
    2525 
  • trunk/bp-themes/bp-default/members/single/settings/profile.php

    r7965 r8210  
    7171                                        <tr <?php bp_field_css_class(); ?>> 
    7272                                            <td class="field-name"><?php bp_the_profile_field_name(); ?></td> 
    73                                             <td class="field-visibility"><?php bp_xprofile_settings_visibility_select(); ?></td> 
     73                                            <td class="field-visibility"><?php bp_profile_settings_visibility_select(); ?></td> 
    7474                                        </tr> 
    7575 
  • trunk/bp-xprofile/bp-xprofile-template.php

    r8178 r8210  
    692692 * Echo the field visibility radio buttons 
    693693 */ 
    694 function bp_profile_visibility_radio_buttons() { 
    695     echo bp_profile_get_visibility_radio_buttons(); 
     694function bp_profile_visibility_radio_buttons( $args = '' ) { 
     695    echo bp_profile_get_visibility_radio_buttons( $args ); 
    696696} 
    697697    /** 
    698698     * Return the field visibility radio buttons 
    699699     */ 
    700     function bp_profile_get_visibility_radio_buttons() { 
    701         $html = '<ul class="radio">'; 
    702  
    703         foreach( bp_xprofile_get_visibility_levels() as $level ) { 
    704             $checked = $level['id'] == bp_get_the_profile_field_visibility_level() ? ' checked="checked" ' : ''; 
    705  
    706             // Only sanitize once 
    707             $field_id = bp_get_the_profile_field_id(); 
    708             $level_id = esc_attr( $level['id'] ); 
    709  
    710             $html .= '<li><label for="see-field_' . $field_id . '_' . $level_id . '"><input type="radio" id="see-field_' . $field_id . '_' . $level_id . '" name="field_' . $field_id . '_visibility" value="' . $level_id . '"' . $checked . ' /> ' . esc_html( $level['label'] ) . '</label></li>'; 
    711         } 
    712  
    713         $html .= '</ul>'; 
    714  
    715         return apply_filters( 'bp_profile_get_visibility_radio_buttons', $html ); 
     700    function bp_profile_get_visibility_radio_buttons( $args = '' ) { 
     701 
     702        // Parse optional arguments 
     703        $r = bp_parse_args( $args, array( 
     704            'field_id'     => bp_get_the_profile_field_id(), 
     705            'before'       => '<ul class="radio">', 
     706            'after'        => '</ul>', 
     707            'before_radio' => '<li>', 
     708            'after_radio'  => '</li>', 
     709            'class'        => 'bp-xprofile-visibility' 
     710        ), 'xprofile_visibility_radio_buttons' ); 
     711 
     712        // Empty return value, filled in below if a valid field ID is found 
     713        $retval = ''; 
     714 
     715        // Only do-the-do if there's a valid field ID 
     716        if ( ! empty( $r['field_id'] ) ) : 
     717 
     718            // Start the output buffer 
     719            ob_start(); 
     720 
     721            // Output anything before 
     722            echo $r['before']; ?> 
     723 
     724            <?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?> 
     725 
     726                <?php foreach( bp_xprofile_get_visibility_levels() as $level ) : ?> 
     727 
     728                    <?php echo $r['before_radio']; ?> 
     729 
     730                    <label for="<?php esc_attr( 'see-field_' . $r['field_id'] . '_' . $level['id'] ); ?>"> 
     731                        <input type="radio" id="<?php echo esc_attr( 'see-field_' . $r['field_id'] . '_' . $level['id'] ); ?>" name="<?php echo esc_attr( 'field_' . $r['field_id'] . '_visibility' ); ?>" value="<?php echo esc_attr( $level['id'] ); ?>" <?php checked( $level['id'], bp_get_the_profile_field_visibility_level() ); ?> /> 
     732                        <span class="field-visibility-text"><?php echo esc_html( $level['label'] ); ?></span> 
     733                    </label> 
     734 
     735                    <?php echo $r['after_radio']; ?> 
     736 
     737                <?php endforeach; ?> 
     738 
     739            <?php endif; 
     740 
     741            // Output anything after 
     742            echo $r['after']; 
     743 
     744            // Get the output buffer and empty it 
     745            $retval = ob_get_clean(); 
     746        endif; 
     747 
     748        return apply_filters( 'bp_profile_get_visibility_radio_buttons', $retval, $r, $args ); 
    716749    } 
    717750 
     
    721754 * @since BuddyPress (2.0.0) 
    722755 */ 
    723 function bp_xprofile_settings_visibility_select( $args = '' ) { 
    724     echo bp_xprofile_get_settings_visibility_select( $args ); 
     756function bp_profile_settings_visibility_select( $args = '' ) { 
     757    echo bp_profile_get_settings_visibility_select( $args ); 
    725758} 
    726759    /** 
     
    729762     * @since BuddyPress (2.0.0) 
    730763     */ 
    731     function bp_xprofile_get_settings_visibility_select( $args = '' ) { 
     764    function bp_profile_get_settings_visibility_select( $args = '' ) { 
    732765 
    733766        // Parse optional arguments 
    734767        $r = bp_parse_args( $args, array( 
    735             'before' => '', 
    736             'after'  => '', 
    737             'class'  => 'bp-xprofile-visibility' 
     768            'field_id' => bp_get_the_profile_field_id(), 
     769            'before'   => '', 
     770            'after'    => '', 
     771            'class'    => 'bp-xprofile-visibility' 
    738772        ), 'xprofile_settings_visibility_select' ); 
    739773 
    740         // Start the output buffer 
    741         ob_start(); 
    742  
    743         // Anything before 
    744         echo $r['before']; ?> 
    745  
    746         <?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?> 
    747  
    748             <select class="<?php echo esc_attr( $r['class'] ); ?>" name="field_<?php bp_the_profile_field_id(); ?>_visibility"> 
    749  
    750                 <?php foreach ( bp_xprofile_get_visibility_levels() as $level ) : ?> 
    751  
    752                     <option value="<?php echo esc_attr( $level['id'] ); ?>" <?php selected( $level['id'], bp_get_the_profile_field_visibility_level() ); ?>><?php echo esc_html( $level['label'] ); ?></option> 
    753  
    754                 <?php endforeach; ?> 
    755  
    756             </select> 
    757  
    758         <?php else : ?> 
    759  
    760             <span class="field-visibility-settings-notoggle" title="<?php esc_attr_e( "This field's visibility cannot be changed.", 'buddypress' ); ?>"><?php bp_the_profile_field_visibility_level_label(); ?></span> 
    761  
    762         <?php endif; 
    763  
    764         // Anything after 
    765         echo $r['after']; 
     774        // Empty return value, filled in below if a valid field ID is found 
     775        $retval = ''; 
     776 
     777        // Only do-the-do if there's a valid field ID 
     778        if ( ! empty( $r['field_id'] ) ) : 
     779 
     780            // Start the output buffer 
     781            ob_start(); 
     782 
     783            // Output anything before 
     784            echo $r['before']; ?> 
     785 
     786            <?php if ( bp_current_user_can( 'bp_xprofile_change_field_visibility' ) ) : ?> 
     787 
     788                <select class="<?php echo esc_attr( $r['class'] ); ?>" name="<?php echo esc_attr( 'field_' . $r['field_id'] ) ; ?>_visibility"> 
     789 
     790                    <?php foreach ( bp_xprofile_get_visibility_levels() as $level ) : ?> 
     791 
     792                        <option value="<?php echo esc_attr( $level['id'] ); ?>" <?php selected( $level['id'], bp_get_the_profile_field_visibility_level() ); ?>><?php echo esc_html( $level['label'] ); ?></option> 
     793 
     794                    <?php endforeach; ?> 
     795 
     796                </select> 
     797 
     798            <?php else : ?> 
     799 
     800                <span class="field-visibility-settings-notoggle" title="<?php esc_attr_e( "This field's visibility cannot be changed.", 'buddypress' ); ?>"><?php bp_the_profile_field_visibility_level_label(); ?></span> 
     801 
     802            <?php endif; 
     803 
     804            // Output anything after 
     805            echo $r['after']; 
     806 
     807            // Get the output buffer and empty it 
     808            $retval = ob_get_clean(); 
     809        endif; 
    766810 
    767811        // Output the dropdown list 
    768         return apply_filters( 'bp_xprofile_settings_visibility_select', ob_get_clean() ); 
    769     } 
     812        return apply_filters( 'bp_profile_settings_visibility_select', $retval, $r, $args ); 
     813    } 
Note: See TracChangeset for help on using the changeset viewer.