Skip to:
Content

BuddyPress.org

Ticket #6301: 6301.01.patch

File 6301.01.patch, 4.7 KB (added by dcavins, 9 years ago)

Add 'user_can_see_nav_item' argument to bp_core_new_subnav_item()

  • src/bp-core/bp-core-buddybar.php

    diff --git src/bp-core/bp-core-buddybar.php src/bp-core/bp-core-buddybar.php
    index 9e315cb..9d57a46 100644
    add_action( 'admin_head', 'bp_core_sort_nav_items' ); 
    236236 *           access to the subnav item, otherwise false. Can be set dynamically
    237237 *           when registering the subnav; eg, use bp_is_my_profile() to restrict
    238238 *           access to profile owners only. Default: true.
     239 *     @type bool $user_can_see_nav_item Optional. True if the logged-in user
     240 *                       can see the subnav item, otherwise false. Default: true.
    239241 *     @type bool $site_admin_only Optional. Whether the nav item should be
    240242 *           visible only to site admins (those with the 'bp_moderate' cap).
    241243 *           Default: false.
    add_action( 'admin_head', 'bp_core_sort_nav_items' ); 
    254256function bp_core_new_subnav_item( $args = '' ) {
    255257        $bp = buddypress();
    256258
     259        // Backward compatibility: If 'user_has_access' was specified,
     260        // but 'user_can_see_nav_item' is not set, we will assume the developer
     261        // assumed 'user_has_access' controlled both visibility and access.
     262        if ( isset( $args['user_has_access'] ) && ! isset( $args['user_can_see_nav_item'] ) ) {
     263                $args['user_can_see_nav_item'] = $args['user_has_access'];
     264        }
     265
    257266        $r = wp_parse_args( $args, array(
    258                 'name'              => false, // Display name for the nav item
    259                 'slug'              => false, // URL slug for the nav item
    260                 'parent_slug'       => false, // URL slug of the parent nav item
    261                 'parent_url'        => false, // URL of the parent item
    262                 'item_css_id'       => false, // The CSS ID to apply to the HTML of the nav item
    263                 'user_has_access'   => true,  // Can the logged in user see this nav item?
    264                 'no_access_url'     => '',
    265                 'site_admin_only'   => false, // Can only site admins see this nav item?
    266                 'position'          => 90,    // Index of where this nav item should be positioned
    267                 'screen_function'   => false, // The name of the function to run when clicked
    268                 'link'              => '',    // The link for the subnav item; optional, not usually required.
    269                 'show_in_admin_bar' => false, // Show the Manage link in the current group's "Edit" Admin Bar menu
     267                'name'                          => false, // Display name for the nav item
     268                'slug'                          => false, // URL slug for the nav item
     269                'parent_slug'                   => false, // URL slug of the parent nav item
     270                'parent_url'                    => false, // URL of the parent item
     271                'item_css_id'                   => false, // The CSS ID to apply to the HTML of the nav item
     272                'user_has_access'               => true,  // Can the logged in user visit this nav item?
     273                'no_access_url'                 => '',
     274                'user_can_see_nav_item'         => true,  // Can the logged in user see this nav item?
     275                'site_admin_only'               => false, // Can only site admins see this nav item?
     276                'position'                      => 90,    // Index of where this nav item should be positioned
     277                'screen_function'               => false, // The name of the function to run when clicked
     278                'link'                          => '',    // The link for the subnav item; optional, not usually required.
     279                'show_in_admin_bar'             => false, // Show the Manage link in the current group's "Edit" Admin Bar menu
    270280        ) );
    271281
    272282        extract( $r, EXTR_SKIP );
    function bp_core_new_subnav_item( $args = '' ) { 
    293303                $item_css_id = $slug;
    294304
    295305        $subnav_item = array(
    296                 'name'              => $name,
    297                 'link'              => trailingslashit( $link ),
    298                 'slug'              => $slug,
    299                 'css_id'            => $item_css_id,
    300                 'position'          => $position,
    301                 'user_has_access'   => $user_has_access,
    302                 'no_access_url'     => $no_access_url,
    303                 'screen_function'   => &$screen_function,
    304                 'show_in_admin_bar' => (bool) $r['show_in_admin_bar'],
     306                'name'                          => $name,
     307                'link'                          => trailingslashit( $link ),
     308                'slug'                          => $slug,
     309                'css_id'                        => $item_css_id,
     310                'position'                      => $position,
     311                'user_has_access'               => $user_has_access,
     312                'user_can_see_nav_item'         => $user_can_see_nav_item,
     313                'no_access_url'                 => $no_access_url,
     314                'screen_function'               => &$screen_function,
     315                'show_in_admin_bar'             => (bool) $r['show_in_admin_bar'],
    305316        );
    306317
    307318        $bp->bp_options_nav[$parent_slug][$slug] = $subnav_item;
  • src/bp-core/bp-core-template.php

    diff --git src/bp-core/bp-core-template.php src/bp-core/bp-core-template.php
    index 3ab9112..90fab67 100644
    function bp_get_options_nav( $parent_slug = '' ) { 
    5757
    5858        // Loop through each navigation item
    5959        foreach ( (array) $bp->bp_options_nav[$the_index] as $subnav_item ) {
    60                 if ( empty( $subnav_item['user_has_access'] ) ) {
     60                if ( false == $subnav_item['user_can_see_nav_item'] ) {
    6161                        continue;
    6262                }
    6363