Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
03/23/2023 07:35:38 PM (18 months ago)
Author:
imath
Message:

Make BP_Core_Nav generate "BP Rewrites ready" navigation links

  • Remove all components $parent_url attributes when setting sub nav items.
  • Only use the bp_core_create_nav_link() $link attribute argument & the bp_core_create_subnav_link() $parent_url attribute argument if specified to preserve backward compatibility.
  • Migrates the Community search feature so that it uses BP Rewrites.
  • Perform some bp_loggedin_user_domain() in favor of bp_loggedin_user_url().
  • Update some PHPUnit tests.

Props r-a-y, johnjamesjacoby, boonebgorges

Closes https://github.com/buddypress/buddypress/pull/77
See #4954

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-groups/classes/class-bp-groups-component.php

    r13437 r13441  
    315315
    316316            // Initialize the nav for the groups component.
    317             $this->nav = new BP_Core_Nav( $this->current_group->id );
     317            $this->nav = new BP_Core_Nav( $this->current_group->id, $this->id );
    318318
    319319        // Set current_group to 0 to prevent debug errors.
     
    566566    public function setup_nav( $main_nav = array(), $sub_nav = array() ) {
    567567
    568         // Determine user to use.
    569         if ( bp_displayed_user_domain() ) {
    570             $user_domain = bp_displayed_user_domain();
    571         } elseif ( bp_loggedin_user_domain() ) {
    572             $user_domain = bp_loggedin_user_domain();
    573         } else {
    574             $user_domain = false;
    575         }
    576 
    577         // Only grab count if we're on a user page.
    578         if ( bp_is_user() ) {
    579             $class = ( 0 === groups_total_groups_for_user( bp_displayed_user_id() ) ) ? 'no-count' : 'count';
    580 
    581             $nav_name = sprintf(
    582                 /* translators: %s: Group count for the current user */
    583                 _x( 'Groups %s', 'Group screen nav with counter', 'buddypress' ),
    584                 sprintf(
    585                     '<span class="%s">%s</span>',
    586                     esc_attr( $class ),
    587                     bp_get_total_group_count_for_user()
    588                 )
     568        if ( is_user_logged_in() || bp_displayed_user_id() ) {
     569            // Only grab count if we're on a user page.
     570            if ( bp_is_user() ) {
     571                $class = ( 0 === groups_total_groups_for_user( bp_displayed_user_id() ) ) ? 'no-count' : 'count';
     572
     573                $nav_name = sprintf(
     574                    /* translators: %s: Group count for the current user */
     575                    _x( 'Groups %s', 'Group screen nav with counter', 'buddypress' ),
     576                    sprintf(
     577                        '<span class="%s">%s</span>',
     578                        esc_attr( $class ),
     579                        bp_get_total_group_count_for_user()
     580                    )
     581                );
     582            } else {
     583                $nav_name = _x( 'Groups', 'Group screen nav without counter', 'buddypress' );
     584            }
     585
     586            $slug   = bp_get_groups_slug();
     587            $access = bp_core_can_edit_settings();
     588
     589            // Add 'Groups' to the main navigation.
     590            $main_nav = array(
     591                'name'                => $nav_name,
     592                'slug'                => $slug,
     593                'position'            => 70,
     594                'screen_function'     => 'groups_screen_my_groups',
     595                'default_subnav_slug' => 'my-groups',
     596                'item_css_id'         => $this->id
    589597            );
    590         } else {
    591             $nav_name = _x( 'Groups', 'Group screen nav without counter', 'buddypress' );
    592         }
    593 
    594         $slug = bp_get_groups_slug();
    595 
    596         // Add 'Groups' to the main navigation.
    597         $main_nav = array(
    598             'name'                => $nav_name,
    599             'slug'                => $slug,
    600             'position'            => 70,
    601             'screen_function'     => 'groups_screen_my_groups',
    602             'default_subnav_slug' => 'my-groups',
    603             'item_css_id'         => $this->id
    604         );
    605 
    606         if ( ! empty( $user_domain ) ) {
    607             $access      = bp_core_can_edit_settings();
    608             $groups_link = trailingslashit( $user_domain . $slug );
    609598
    610599            // Add the My Groups nav item.
     
    612601                'name'            => __( 'Memberships', 'buddypress' ),
    613602                'slug'            => 'my-groups',
    614                 'parent_url'      => $groups_link,
    615603                'parent_slug'     => $slug,
    616604                'screen_function' => 'groups_screen_my_groups',
     
    624612                    'name'            => __( 'Invitations', 'buddypress' ),
    625613                    'slug'            => 'invites',
    626                     'parent_url'      => $groups_link,
    627614                    'parent_slug'     => $slug,
    628615                    'screen_function' => 'groups_screen_group_invites',
     
    659646                'name'            =>  _x( 'Home', 'Group screen navigation title', 'buddypress' ),
    660647                'slug'            => 'home',
    661                 'parent_url'      => $group_link,
    662648                'parent_slug'     => $this->current_group->slug,
    663649                'screen_function' => 'groups_screen_group_home',
     
    674660                    'name'            => _x( 'Request Membership','Group screen nav', 'buddypress' ),
    675661                    'slug'            => 'request-membership',
    676                     'parent_url'      => $group_link,
    677662                    'parent_slug'     => $this->current_group->slug,
    678663                    'screen_function' => 'groups_screen_group_request_membership',
     
    689674                        'name'            => _x( 'Activity', 'My Group screen nav', 'buddypress' ),
    690675                        'slug'            => 'activity',
    691                         'parent_url'      => $group_link,
    692676                        'parent_slug'     => $this->current_group->slug,
    693677                        'screen_function' => 'groups_screen_group_activity',
     
    709693                    ),
    710694                    'slug'            => 'members',
    711                     'parent_url'      => $group_link,
    712695                    'parent_slug'     => $this->current_group->slug,
    713696                    'screen_function' => 'groups_screen_group_members',
     
    723706                    'name'            => _x( 'Send Invites', 'My Group screen nav', 'buddypress' ),
    724707                    'slug'            => 'send-invites',
    725                     'parent_url'      => $group_link,
    726708                    'parent_slug'     => $this->current_group->slug,
    727709                    'screen_function' => 'groups_screen_group_invite',
     
    738720                    'name'            => _x( 'Manage', 'My Group screen nav', 'buddypress' ),
    739721                    'slug'            => 'admin',
    740                     'parent_url'      => $group_link,
    741722                    'parent_slug'     => $this->current_group->slug,
    742723                    'screen_function' => 'groups_screen_group_admin',
     
    747728                );
    748729
    749                 $admin_link = trailingslashit( $group_link . 'admin' );
     730                $admin_link = bp_get_group_url(
     731                    $this->current_group,
     732                    array(
     733                        'single_item_action' => bp_rewrites_get_slug( 'groups', 'bp_group_read_admin', 'admin' ),
     734                    )
     735                );
    750736
    751737                // Common params to all nav items.
    752738                $default_params = array(
    753                     'parent_url'        => $admin_link,
    754739                    'parent_slug'       => $this->current_group->slug . '_manage',
    755740                    'screen_function'   => 'groups_screen_group_admin',
     
    845830
    846831            // Setup the logged in user variables.
    847             $groups_link = trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() );
     832            $groups_slug        = bp_get_groups_slug();
     833            $custom_groups_slug = bp_rewrites_get_slug( 'members', 'member_' . $groups_slug, $groups_slug );
    848834
    849835            $title   = _x( 'Groups', 'My Account Groups', 'buddypress' );
     
    873859                'id'     => 'my-account-' . $this->id,
    874860                'title'  => $title,
    875                 'href'   => $groups_link
     861                'href'   => bp_loggedin_user_url(
     862                    array(
     863                        'single_item_component' => $custom_groups_slug,
     864                    )
     865                ),
    876866            );
    877867
     
    881871                'id'       => 'my-account-' . $this->id . '-memberships',
    882872                'title'    => _x( 'Memberships', 'My Account Groups sub nav', 'buddypress' ),
    883                 'href'     => trailingslashit( $groups_link . 'my-groups' ),
    884                 'position' => 10
     873                'href'     => bp_loggedin_user_url(
     874                    array(
     875                        'single_item_component' => $custom_groups_slug,
     876                        'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_my_groups', 'my-groups' ),
     877                    )
     878                ),
     879                'position' => 10,
    885880            );
    886881
     
    891886                    'id'       => 'my-account-' . $this->id . '-invites',
    892887                    'title'    => $pending,
    893                     'href'     => trailingslashit( $groups_link . 'invites' ),
    894                     'position' => 30
     888                    'href'     => bp_loggedin_user_url(
     889                        array(
     890                            'single_item_component' => $custom_groups_slug,
     891                            'single_item_action'    => bp_rewrites_get_slug( 'members', 'member_' . $groups_slug . '_invites', 'invites' ),
     892                        )
     893                    ),
     894                    'position' => 30,
    895895                );
    896896            }
Note: See TracChangeset for help on using the changeset viewer.