Skip to:
Content

BuddyPress.org

Changeset 10555


Ignore:
Timestamp:
02/08/2016 05:56:22 AM (6 years ago)
Author:
r-a-y
Message:

BP Component: Allow plugins to set a custom position when registering an admin bar subnav menu.

This commit allows plugins to set a 'position' key when registering a WP
Admin Bar subnav menu item in the setup_admin_bar() method.

Previously, plugins had to do all sorts of array shuffling in order to
register their subnav at a preferred position. For backward compatibility,
we do some 'position' key backfilling, so if a plugin isn't using the new
'position' key, their subnav should still display at the same location.

Fixes #6859.

Location:
trunk/src
Files:
9 edited

Legend:

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

    r10516 r10555  
    277277            // Personal.
    278278            $wp_admin_nav[] = array(
    279                 'parent' => 'my-account-' . $this->id,
    280                 'id'     => 'my-account-' . $this->id . '-personal',
    281                 'title'  => _x( 'Personal', 'My Account Activity sub nav', 'buddypress' ),
    282                 'href'   => $activity_link
     279                'parent'   => 'my-account-' . $this->id,
     280                'id'       => 'my-account-' . $this->id . '-personal',
     281                'title'    => _x( 'Personal', 'My Account Activity sub nav', 'buddypress' ),
     282                'href'     => $activity_link,
     283                'position' => 10
    283284            );
    284285
     
    286287            if ( bp_activity_do_mentions() ) {
    287288                $wp_admin_nav[] = array(
    288                     'parent' => 'my-account-' . $this->id,
    289                     'id'     => 'my-account-' . $this->id . '-mentions',
    290                     'title'  => $title,
    291                     'href'   => trailingslashit( $activity_link . 'mentions' )
     289                    'parent'   => 'my-account-' . $this->id,
     290                    'id'       => 'my-account-' . $this->id . '-mentions',
     291                    'title'    => $title,
     292                    'href'     => trailingslashit( $activity_link . 'mentions' ),
     293                    'position' => 20
    292294                );
    293295            }
     
    296298            if ( bp_activity_can_favorite() ) {
    297299                $wp_admin_nav[] = array(
    298                     'parent' => 'my-account-' . $this->id,
    299                     'id'     => 'my-account-' . $this->id . '-favorites',
    300                     'title'  => _x( 'Favorites', 'My Account Activity sub nav', 'buddypress' ),
    301                     'href'   => trailingslashit( $activity_link . 'favorites' )
     300                    'parent'   => 'my-account-' . $this->id,
     301                    'id'       => 'my-account-' . $this->id . '-favorites',
     302                    'title'    => _x( 'Favorites', 'My Account Activity sub nav', 'buddypress' ),
     303                    'href'     => trailingslashit( $activity_link . 'favorites' ),
     304                    'position' => 30
    302305                );
    303306            }
     
    306309            if ( bp_is_active( 'friends' ) ) {
    307310                $wp_admin_nav[] = array(
    308                     'parent' => 'my-account-' . $this->id,
    309                     'id'     => 'my-account-' . $this->id . '-friends',
    310                     'title'  => _x( 'Friends', 'My Account Activity sub nav', 'buddypress' ),
    311                     'href'   => trailingslashit( $activity_link . bp_get_friends_slug() )
     311                    'parent'   => 'my-account-' . $this->id,
     312                    'id'       => 'my-account-' . $this->id . '-friends',
     313                    'title'    => _x( 'Friends', 'My Account Activity sub nav', 'buddypress' ),
     314                    'href'     => trailingslashit( $activity_link . bp_get_friends_slug() ),
     315                    'position' => 40
    312316                );
    313317            }
     
    316320            if ( bp_is_active( 'groups' ) ) {
    317321                $wp_admin_nav[] = array(
    318                     'parent' => 'my-account-' . $this->id,
    319                     'id'     => 'my-account-' . $this->id . '-groups',
    320                     'title'  => _x( 'Groups', 'My Account Activity sub nav', 'buddypress' ),
    321                     'href'   => trailingslashit( $activity_link . bp_get_groups_slug() )
     322                    'parent'   => 'my-account-' . $this->id,
     323                    'id'       => 'my-account-' . $this->id . '-groups',
     324                    'title'    => _x( 'Groups', 'My Account Activity sub nav', 'buddypress' ),
     325                    'href'     => trailingslashit( $activity_link . bp_get_groups_slug() ),
     326                    'position' => 50
    322327                );
    323328            }
  • trunk/src/bp-blogs/classes/class-bp-blogs-component.php

    r10544 r10555  
    238238            // My Sites.
    239239            $wp_admin_nav[] = array(
    240                 'parent' => 'my-account-' . $this->id,
    241                 'id'     => 'my-account-' . $this->id . '-my-sites',
    242                 'title'  => __( 'My Sites', 'buddypress' ),
    243                 'href'   => $blogs_link
     240                'parent'   => 'my-account-' . $this->id,
     241                'id'       => 'my-account-' . $this->id . '-my-sites',
     242                'title'    => __( 'My Sites', 'buddypress' ),
     243                'href'     => $blogs_link,
     244                'position' => 10
    244245            );
    245246
     
    247248            if ( bp_blog_signup_enabled() ) {
    248249                $wp_admin_nav[] = array(
    249                     'parent' => 'my-account-' . $this->id,
    250                     'id'     => 'my-account-' . $this->id . '-create',
    251                     'title'  => __( 'Create a Site', 'buddypress' ),
    252                     'href'   => trailingslashit( bp_get_blogs_directory_permalink() . 'create' )
     250                    'parent'   => 'my-account-' . $this->id,
     251                    'id'       => 'my-account-' . $this->id . '-create',
     252                    'title'    => __( 'Create a Site', 'buddypress' ),
     253                    'href'     => trailingslashit( bp_get_blogs_directory_permalink() . 'create' ),
     254                    'position' => 99
    253255                );
    254256            }
  • trunk/src/bp-core/classes/class-bp-component.php

    r10526 r10555  
    549549        // Do we have Toolbar menus to add?
    550550        if ( !empty( $wp_admin_nav ) ) {
     551            // Fill in position if one wasn't passed for backpat.
     552            $pos = 0;
     553            $not_set_pos = 1;
     554            foreach( $wp_admin_nav as $key => $nav ) {
     555                if ( ! isset( $nav['position'] ) ) {
     556                    $wp_admin_nav[$key]['position'] = $pos + $not_set_pos;
     557
     558                    if ( 9 !== $not_set_pos ) {
     559                        ++$not_set_pos;
     560                    }
     561                } else {
     562                    $pos = $nav['position'];
     563
     564                    // Reset not set pos to 1
     565                    if ( $pos % 10 === 0 ) {
     566                        $not_set_pos = 1;
     567                    }
     568                }
     569            }
     570
     571            // Sort admin nav by position.
     572            $wp_admin_nav = bp_sort_by_key( $wp_admin_nav, 'position', 'num' );
    551573
    552574            // Set this objects menus.
  • trunk/src/bp-friends/classes/class-bp-friends-component.php

    r10519 r10555  
    204204            // My Friends.
    205205            $wp_admin_nav[] = array(
    206                 'parent' => 'my-account-' . $this->id,
    207                 'id'     => 'my-account-' . $this->id . '-friendships',
    208                 'title'  => _x( 'Friendships', 'My Account Friends menu sub nav', 'buddypress' ),
    209                 'href'   => $friends_link
     206                'parent'   => 'my-account-' . $this->id,
     207                'id'       => 'my-account-' . $this->id . '-friendships',
     208                'title'    => _x( 'Friendships', 'My Account Friends menu sub nav', 'buddypress' ),
     209                'href'     => $friends_link,
     210                'position' => 10
    210211            );
    211212
    212213            // Requests.
    213214            $wp_admin_nav[] = array(
    214                 'parent' => 'my-account-' . $this->id,
    215                 'id'     => 'my-account-' . $this->id . '-requests',
    216                 'title'  => $pending,
    217                 'href'   => trailingslashit( $friends_link . 'requests' )
     215                'parent'   => 'my-account-' . $this->id,
     216                'id'       => 'my-account-' . $this->id . '-requests',
     217                'title'    => $pending,
     218                'href'     => trailingslashit( $friends_link . 'requests' ),
     219                'position' => 20
    218220            );
    219221        }
  • trunk/src/bp-groups/classes/class-bp-groups-component.php

    r10520 r10555  
    722722            // My Groups.
    723723            $wp_admin_nav[] = array(
    724                 'parent' => 'my-account-' . $this->id,
    725                 'id'     => 'my-account-' . $this->id . '-memberships',
    726                 'title'  => _x( 'Memberships', 'My Account Groups sub nav', 'buddypress' ),
    727                 'href'   => $groups_link
     724                'parent'   => 'my-account-' . $this->id,
     725                'id'       => 'my-account-' . $this->id . '-memberships',
     726                'title'    => _x( 'Memberships', 'My Account Groups sub nav', 'buddypress' ),
     727                'href'     => $groups_link,
     728                'position' => 10
    728729            );
    729730
    730731            // Invitations.
    731732            $wp_admin_nav[] = array(
    732                 'parent' => 'my-account-' . $this->id,
    733                 'id'     => 'my-account-' . $this->id . '-invites',
    734                 'title'  => $pending,
    735                 'href'   => trailingslashit( $groups_link . 'invites' )
     733                'parent'   => 'my-account-' . $this->id,
     734                'id'       => 'my-account-' . $this->id . '-invites',
     735                'title'    => $pending,
     736                'href'     => trailingslashit( $groups_link . 'invites' ),
     737                'position' => 30
    736738            );
    737739
     
    739741            if ( bp_user_can_create_groups() ) {
    740742                $wp_admin_nav[] = array(
    741                     'parent' => 'my-account-' . $this->id,
    742                     'id'     => 'my-account-' . $this->id . '-create',
    743                     'title'  => _x( 'Create a Group', 'My Account Groups sub nav', 'buddypress' ),
    744                     'href'   => trailingslashit( bp_get_groups_directory_permalink() . 'create' )
     743                    'parent'   => 'my-account-' . $this->id,
     744                    'id'       => 'my-account-' . $this->id . '-create',
     745                    'title'    => _x( 'Create a Group', 'My Account Groups sub nav', 'buddypress' ),
     746                    'href'     => trailingslashit( bp_get_groups_directory_permalink() . 'create' ),
     747                    'position' => 90
    745748                );
    746749            }
  • trunk/src/bp-messages/classes/class-bp-messages-component.php

    r10522 r10555  
    254254            // Inbox.
    255255            $wp_admin_nav[] = array(
    256                 'parent' => 'my-account-' . $this->id,
    257                 'id'     => 'my-account-' . $this->id . '-inbox',
    258                 'title'  => $inbox,
    259                 'href'   => $messages_link
     256                'parent'   => 'my-account-' . $this->id,
     257                'id'       => 'my-account-' . $this->id . '-inbox',
     258                'title'    => $inbox,
     259                'href'     => $messages_link,
     260                'position' => 10
    260261            );
    261262
     
    263264            if ( bp_is_active( $this->id, 'star' ) ) {
    264265                $wp_admin_nav[] = array(
    265                     'parent' => 'my-account-' . $this->id,
    266                     'id'     => 'my-account-' . $this->id . '-starred',
    267                     'title'  => __( 'Starred', 'buddypress' ),
    268                     'href'   => trailingslashit( $messages_link . bp_get_messages_starred_slug() )
     266                    'parent'   => 'my-account-' . $this->id,
     267                    'id'       => 'my-account-' . $this->id . '-starred',
     268                    'title'    => __( 'Starred', 'buddypress' ),
     269                    'href'     => trailingslashit( $messages_link . bp_get_messages_starred_slug() ),
     270                    'position' => 11
    269271                );
    270272            }
     
    272274            // Sent Messages.
    273275            $wp_admin_nav[] = array(
    274                 'parent' => 'my-account-' . $this->id,
    275                 'id'     => 'my-account-' . $this->id . '-sentbox',
    276                 'title'  => __( 'Sent', 'buddypress' ),
    277                 'href'   => trailingslashit( $messages_link . 'sentbox' )
     276                'parent'   => 'my-account-' . $this->id,
     277                'id'       => 'my-account-' . $this->id . '-sentbox',
     278                'title'    => __( 'Sent', 'buddypress' ),
     279                'href'     => trailingslashit( $messages_link . 'sentbox' ),
     280                'position' => 20
    278281            );
    279282
    280283            // Compose Message.
    281284            $wp_admin_nav[] = array(
    282                 'parent' => 'my-account-' . $this->id,
    283                 'id'     => 'my-account-' . $this->id . '-compose',
    284                 'title'  => __( 'Compose', 'buddypress' ),
    285                 'href'   => trailingslashit( $messages_link . 'compose' )
     285                'parent'   => 'my-account-' . $this->id,
     286                'id'       => 'my-account-' . $this->id . '-compose',
     287                'title'    => __( 'Compose', 'buddypress' ),
     288                'href'     => trailingslashit( $messages_link . 'compose' ),
     289                'position' => 30
    286290            );
    287291
     
    289293            if ( bp_current_user_can( 'bp_moderate' ) ) {
    290294                $wp_admin_nav[] = array(
    291                     'parent' => 'my-account-' . $this->id,
    292                     'id'     => 'my-account-' . $this->id . '-notices',
    293                     'title'  => __( 'All Member Notices', 'buddypress' ),
    294                     'href'   => trailingslashit( $messages_link . 'notices' )
     295                    'parent'   => 'my-account-' . $this->id,
     296                    'id'       => 'my-account-' . $this->id . '-notices',
     297                    'title'    => __( 'All Member Notices', 'buddypress' ),
     298                    'href'     => trailingslashit( $messages_link . 'notices' ),
     299                    'position' => 90
    295300                );
    296301            }
  • trunk/src/bp-notifications/classes/class-bp-notifications-component.php

    r10523 r10555  
    203203            // Unread.
    204204            $wp_admin_nav[] = array(
    205                 'parent' => 'my-account-' . $this->id,
    206                 'id'     => 'my-account-' . $this->id . '-unread',
    207                 'title'  => $unread,
    208                 'href'   => $notifications_link
     205                'parent'   => 'my-account-' . $this->id,
     206                'id'       => 'my-account-' . $this->id . '-unread',
     207                'title'    => $unread,
     208                'href'     => $notifications_link,
     209                'position' => 10
    209210            );
    210211
    211212            // Read.
    212213            $wp_admin_nav[] = array(
    213                 'parent' => 'my-account-' . $this->id,
    214                 'id'     => 'my-account-' . $this->id . '-read',
    215                 'title'  => _x( 'Read', 'My Account Notification sub nav', 'buddypress' ),
    216                 'href'   => trailingslashit( $notifications_link . 'read' ),
     214                'parent'   => 'my-account-' . $this->id,
     215                'id'       => 'my-account-' . $this->id . '-read',
     216                'title'    => _x( 'Read', 'My Account Notification sub nav', 'buddypress' ),
     217                'href'     => trailingslashit( $notifications_link . 'read' ),
     218                'position' => 20
    217219            );
    218220        }
  • trunk/src/bp-settings/classes/class-bp-settings-component.php

    r10524 r10555  
    184184            // General Account.
    185185            $wp_admin_nav[] = array(
    186                 'parent' => 'my-account-' . $this->id,
    187                 'id'     => 'my-account-' . $this->id . '-general',
    188                 'title'  => __( 'General', 'buddypress' ),
    189                 'href'   => $settings_link
     186                'parent'   => 'my-account-' . $this->id,
     187                'id'       => 'my-account-' . $this->id . '-general',
     188                'title'    => __( 'General', 'buddypress' ),
     189                'href'     => $settings_link,
     190                'position' => 10
    190191            );
    191192
     
    193194            if ( has_action( 'bp_notification_settings' ) ) {
    194195                $wp_admin_nav[] = array(
    195                     'parent' => 'my-account-' . $this->id,
    196                     'id'     => 'my-account-' . $this->id . '-notifications',
    197                     'title'  => __( 'Email', 'buddypress' ),
    198                     'href'   => trailingslashit( $settings_link . 'notifications' )
     196                    'parent'   => 'my-account-' . $this->id,
     197                    'id'       => 'my-account-' . $this->id . '-notifications',
     198                    'title'    => __( 'Email', 'buddypress' ),
     199                    'href'     => trailingslashit( $settings_link . 'notifications' ),
     200                    'position' => 20
    199201                );
    200202            }
    201203
    202             // Delete Account.
     204            // Delete Account
    203205            if ( !bp_current_user_can( 'bp_moderate' ) && ! bp_core_get_root_option( 'bp-disable-account-deletion' ) ) {
    204206                $wp_admin_nav[] = array(
    205                     'parent' => 'my-account-' . $this->id,
    206                     'id'     => 'my-account-' . $this->id . '-delete-account',
    207                     'title'  => __( 'Delete Account', 'buddypress' ),
    208                     'href'   => trailingslashit( $settings_link . 'delete-account' )
     207                    'parent'   => 'my-account-' . $this->id,
     208                    'id'       => 'my-account-' . $this->id . '-delete-account',
     209                    'title'    => __( 'Delete Account', 'buddypress' ),
     210                    'href'     => trailingslashit( $settings_link . 'delete-account' ),
     211                    'position' => 90
    209212                );
    210213            }
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-component.php

    r10525 r10555  
    319319            // View Profile.
    320320            $wp_admin_nav[] = array(
    321                 'parent' => 'my-account-' . $this->id,
    322                 'id'     => 'my-account-' . $this->id . '-public',
    323                 'title'  => _x( 'View', 'My Account Profile sub nav', 'buddypress' ),
    324                 'href'   => $profile_link
     321                'parent'   => 'my-account-' . $this->id,
     322                'id'       => 'my-account-' . $this->id . '-public',
     323                'title'    => _x( 'View', 'My Account Profile sub nav', 'buddypress' ),
     324                'href'     => $profile_link,
     325                'position' => 10
    325326            );
    326327
    327328            // Edit Profile.
    328329            $wp_admin_nav[] = array(
    329                 'parent' => 'my-account-' . $this->id,
    330                 'id'     => 'my-account-' . $this->id . '-edit',
    331                 'title'  => _x( 'Edit', 'My Account Profile sub nav', 'buddypress' ),
    332                 'href'   => trailingslashit( $profile_link . 'edit' )
     330                'parent'   => 'my-account-' . $this->id,
     331                'id'       => 'my-account-' . $this->id . '-edit',
     332                'title'    => _x( 'Edit', 'My Account Profile sub nav', 'buddypress' ),
     333                'href'     => trailingslashit( $profile_link . 'edit' ),
     334                'position' => 20
    333335            );
    334336
     
    336338            if ( buddypress()->avatar->show_avatars ) {
    337339                $wp_admin_nav[] = array(
    338                     'parent' => 'my-account-' . $this->id,
    339                     'id'     => 'my-account-' . $this->id . '-change-avatar',
    340                     'title'  => _x( 'Change Profile Photo', 'My Account Profile sub nav', 'buddypress' ),
    341                     'href'   => trailingslashit( $profile_link . 'change-avatar' )
     340                    'parent'   => 'my-account-' . $this->id,
     341                    'id'       => 'my-account-' . $this->id . '-change-avatar',
     342                    'title'    => _x( 'Change Profile Photo', 'My Account Profile sub nav', 'buddypress' ),
     343                    'href'     => trailingslashit( $profile_link . 'change-avatar' ),
     344                    'position' => 30
    342345                );
    343346            }
     
    345348            if ( bp_displayed_user_use_cover_image_header() ) {
    346349                $wp_admin_nav[] = array(
    347                     'parent' => 'my-account-' . $this->id,
    348                     'id'     => 'my-account-' . $this->id . '-change-cover-image',
    349                     'title'  => _x( 'Change Cover Image', 'My Account Profile sub nav', 'buddypress' ),
    350                     'href'   => trailingslashit( $profile_link . 'change-cover-image' )
     350                    'parent'   => 'my-account-' . $this->id,
     351                    'id'       => 'my-account-' . $this->id . '-change-cover-image',
     352                    'title'    => _x( 'Change Cover Image', 'My Account Profile sub nav', 'buddypress' ),
     353                    'href'     => trailingslashit( $profile_link . 'change-cover-image' ),
     354                    'position' => 40
    351355                );
    352356            }
Note: See TracChangeset for help on using the changeset viewer.