Making WordPress.org

Changeset 14283


Ignore:
Timestamp:
12/16/2024 07:56:10 PM (3 months ago)
Author:
johnjamesjacoby
Message:

BuddyPress.org: simplify admin toolbar

See: https://buddypress.trac.wordpress.org/ticket/9262

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/buddypress.org/public_html/wp-content/plugins/buddypress-org/toolbar.php

    r10864 r14283  
    88 */
    99function bporg_toolbar_tweaks() {
    10     remove_action( 'admin_bar_menu', 'wp_admin_bar_search_menu',      4  );
    11     remove_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu',          10 );
    12     remove_action( 'admin_bar_menu', 'wp_admin_bar_site_menu',        30 );
    13     remove_action( 'admin_bar_menu', 'wp_admin_bar_customize_menu',   40 );
    14     remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu',    60 );
    15     remove_action( 'admin_bar_menu', 'wp_admin_bar_new_content_menu', 70 );
    16     remove_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu',        80 );
     10
     11    // WordPress Menus
     12    remove_action( 'admin_bar_menu', 'wp_admin_bar_sidebar_toggle',     0     );
     13    remove_action( 'admin_bar_menu', 'wp_admin_bar_wp_menu',            10    );
     14    remove_action( 'admin_bar_menu', 'wp_admin_bar_site_menu',          30    );
     15    remove_action( 'admin_bar_menu', 'wp_admin_bar_edit_site_menu',     40    );
     16    remove_action( 'admin_bar_menu', 'wp_admin_bar_customize_menu',     40    );
     17    remove_action( 'admin_bar_menu', 'wp_admin_bar_updates_menu',       50    );
     18    remove_action( 'admin_bar_menu', 'wp_admin_bar_comments_menu',      60    );
     19    remove_action( 'admin_bar_menu', 'wp_admin_bar_new_content_menu',   70    );
     20    remove_action( 'admin_bar_menu', 'wp_admin_bar_edit_menu',          80    );
     21    remove_action( 'admin_bar_menu', 'wp_admin_bar_my_account_item',    9991  );
     22    remove_action( 'admin_bar_menu', 'wp_admin_bar_recovery_mode_menu', 9992  );
     23    remove_action( 'admin_bar_menu', 'wp_admin_bar_search_menu',        9999  );
    1724
    1825    // BuddyPress Menus
    1926    remove_action( 'bp_setup_admin_bar', 'bp_members_admin_bar_my_account_menu', 4 );
     27
     28    // WordPress.org Profiles site specific removals
     29    if ( 'profiles.wordpress.org' === $_SERVER['HTTP_HOST'] ) {
     30        remove_action( 'admin_bar_menu', 'bp_groups_group_admin_menu',   99  );
     31        remove_action( 'admin_bar_menu', 'bp_admin_bar_my_account_root', 100 );
     32    }
    2033}
    2134add_action( 'add_admin_bar_menus', 'bporg_toolbar_tweaks', 11 );
     
    2841 */
    2942function bporg_remove_about_pages( $wp_admin_bar ) {
     43
     44    // About page links
    3045    $wp_admin_bar->remove_menu( 'bp-about'  );
    3146    $wp_admin_bar->remove_menu( 'bbp-about' );
    3247}
    3348add_action( 'admin_bar_menu', 'bporg_remove_about_pages', 99 );
     49
     50/**
     51 * Remove the BuddyPress XProfile
     52 * @author johnjamesjacoby
     53 * @since 1.1.0
     54 */
     55function bporg_remove_my_account_items( $wp_admin_bar ) {
     56    $wp_admin_bar->remove_menu( 'my-account-blogs' );
     57    $wp_admin_bar->remove_menu( 'my-account-xprofile-edit' );
     58    $wp_admin_bar->remove_menu( 'my-account-xprofile-change-avatar' );
     59}
     60add_action( 'admin_bar_menu', 'bporg_remove_my_account_items', 99 );
     61
     62/**
     63 * Prevent the BuddyPress Component admin-bar nav items from being added.
     64 *
     65 * This function adds filters to return false inside of the
     66 * BP_Component::setup_admin_bar() methods.
     67 *
     68 * WordPress.org & BuddyPress.org implement their own user profile flow. The
     69 * relevant components all have their
     70 *
     71 * @author johnjamesjacoby
     72 * @since 1.1.0
     73 */
     74function bporg_remove_component_menu_items() {
     75
     76    // BuddyPress
     77    $components = bp_core_get_active_components();
     78
     79    // bbPress
     80    if ( ! array_search( 'forums', $components, true ) ) {
     81        array_push( $components, 'forums' );
     82    }
     83
     84    // Filter admin-nav for all components
     85    foreach ( $components as $component ) {
     86        add_filter( 'bp_' . $component . '_admin_nav', '__return_false' );
     87    }
     88}
     89add_action( 'bp_init', 'bporg_remove_component_menu_items', 99 );
    3490
    3591/**
     
    58114        'id'     => 'wordpress',
    59115        'title'  => __( 'WordPress.org' ),
    60         'href'  => 'https://wordpress.org',
     116        'href'   => 'https://wordpress.org',
    61117    ) );
    62118
     
    71127    // Add codex link
    72128    $wp_admin_bar->add_menu( array(
    73         'parent'    => 'wordpress',
    74         'id'        => 'wp-documentation',
    75         'title'     => __('Documentation'),
    76         'href'      => 'https://codex.wordpress.org/',
     129        'parent' => 'wordpress',
     130        'id'     => 'wp-documentation',
     131        'title'  => __( 'Documentation' ),
     132        'href'   => 'https://codex.wordpress.org/',
    77133    ) );
    78134
    79135    // Add forums link
    80136    $wp_admin_bar->add_menu( array(
    81         'parent'    => 'wordpress',
    82         'id'        => 'wp-support-forums',
    83         'title'     => __('Support Forums'),
    84         'href'      => 'https://wordpress.org/support/',
     137        'parent' => 'wordpress',
     138        'id'     => 'wp-support-forums',
     139        'title'  => __( 'Support Forums' ),
     140        'href'   => 'https://wordpress.org/support/',
    85141    ) );
    86142
    87143    // Add feedback link
    88144    $wp_admin_bar->add_menu( array(
    89         'parent'    => 'wordpress',
    90         'id'        => 'wp-feedback',
    91         'title'     => __('Feedback'),
    92         'href'      => 'https://wordpress.org/support/forum/requests-and-feedback',
     145        'parent' => 'wordpress',
     146        'id'     => 'wp-feedback',
     147        'title'  => __( 'Feedback' ),
     148        'href'   => 'https://wordpress.org/support/forum/requests-and-feedback',
    93149    ) );
    94150
     
    123179        'id'     => 'bbpress',
    124180        'title'  => __( 'bbPress.org' ),
    125         'href'  => 'https://bbpress.org',
     181        'href'   => 'https://bbpress.org',
    126182    ) );
    127183
     
    136192    // Add codex link
    137193    $wp_admin_bar->add_menu( array(
    138         'parent'    => 'bbpress',
    139         'id'        => 'bbp-documentation',
    140         'title'     => __( 'Documentation' ),
    141         'href'      => 'https://codex.bbpress.org/',
     194        'parent' => 'bbpress',
     195        'id'     => 'bbp-documentation',
     196        'title'  => __( 'Documentation' ),
     197        'href'   => 'https://codex.bbpress.org/',
    142198    ) );
    143199
    144200    // Add forums link
    145201    $wp_admin_bar->add_menu( array(
    146         'parent'    => 'bbpress',
    147         'id'        => 'bbp-support-forums',
    148         'title'     => __( 'Support Forums' ),
    149         'href'      => __( 'https://bbpress.org/forums/' ),
     202        'parent' => 'bbpress',
     203        'id'     => 'bbp-support-forums',
     204        'title'  => __( 'Support Forums' ),
     205        'href'   => __( 'https://bbpress.org/forums/' ),
    150206    ) );
    151207
    152208    // Add feedback link
    153209    $wp_admin_bar->add_menu( array(
    154         'parent'    => 'bbpress',
    155         'id'        => 'bbp-feedback',
    156         'title'     => __( 'Feedback' ),
    157         'href'      => 'https://bbpress.org/forums/forum/requests-and-feedback',
     210        'parent' => 'bbpress',
     211        'id'     => 'bbp-feedback',
     212        'title'  => __( 'Feedback' ),
     213        'href'   => 'https://bbpress.org/forums/forum/requests-and-feedback',
    158214    ) );
    159215
     
    188244        'id'     => 'buddypress',
    189245        'title'  => __( 'BuddyPress.org' ),
    190         'href'  => 'https://buddypress.org',
     246        'href'   => 'https://buddypress.org',
    191247    ) );
    192248
     
    201257    // Add codex link
    202258    $wp_admin_bar->add_menu( array(
    203         'parent'    => 'buddypress',
    204         'id'        => 'bp-documentation',
    205         'title'     => __( 'Documentation' ),
    206         'href'      => 'https://codex.buddypress.org/',
     259        'parent' => 'buddypress',
     260        'id'     => 'bp-documentation',
     261        'title'  => __( 'Documentation' ),
     262        'href'   => 'https://codex.buddypress.org/',
    207263    ) );
    208264
    209265    // Add forums link
    210266    $wp_admin_bar->add_menu( array(
    211         'parent'    => 'buddypress',
    212         'id'        => 'bp-support-forums',
    213         'title'     => __( 'Support Forums' ),
    214         'href'      => 'https://buddypress.org/support/',
     267        'parent' => 'buddypress',
     268        'id'     => 'bp-support-forums',
     269        'title'  => __( 'Support Forums' ),
     270        'href'   => 'https://buddypress.org/support/',
    215271    ) );
    216272
    217273    // Add feedback link
    218274    $wp_admin_bar->add_menu( array(
    219         'parent'    => 'buddypress',
    220         'id'        => 'bp-feedback',
    221         'title'     => __( 'Feedback' ),
    222         'href'      => 'https://buddypress.org/support/forum/feedback/',
     275        'parent' => 'buddypress',
     276        'id'     => 'bp-feedback',
     277        'title'  => __( 'Feedback' ),
     278        'href'   => 'https://buddypress.org/support/forum/feedback/',
    223279    ) );
    224280
     
    251307 * Add a new "Site Name" menu with less things for average users to do
    252308 *
    253  *
    254309 * @author johnjamesjacoby
    255310 * @since 1.0.2
     
    257312function bporg_new_admin_bar_site_menu( $wp_admin_bar ) {
    258313
    259     // Profiles
    260     if ( 'profiles.wordpress.org' == $_SERVER['HTTP_HOST'] ) {
    261         $wp_admin_bar->add_menu( array(
    262             'id'    => 'bp-site-name',
    263             'title' => __( 'WordPress.org' ),
    264             'href'  => 'https://wordpress.org'
    265         ) );
    266 
    267         return;
    268 
    269     // bbPress Network
    270     } elseif ( strstr( $_SERVER['HTTP_HOST'], 'bbpress.org' ) ) {
    271         $wp_admin_bar->add_menu( array(
    272             'id'    => 'bp-site-name',
    273             'title' => __( 'bbPress.org' ),
    274             'href'  => 'https://bbpress.org'
    275         ) );
    276 
    277         return;
    278 
    279     // BuddyPress Network
    280     } else {
    281         $wp_admin_bar->add_menu( array(
    282             'id'    => 'bp-site-name',
    283             'title' => __( 'BuddyPress.org' ),
    284             'href'  => 'https://buddypress.org'
    285         ) );
    286     }
    287 
    288314    // Create submenu items.
    289 
    290315    if ( is_user_logged_in() ) {
    291316
    292         // Add a link to create a new topic.
    293         $wp_admin_bar->add_menu( array(
    294             'id'     => 'bp-new-topic',
    295             'title'  => __( 'Create New Topic' ),
    296             'href'   => 'https://buddypress.org/support/new-topic/'
    297         ) );
    298 
    299         // Add an option to visit the admin dashboard
    300         if ( is_super_admin() ) {
    301 
    302             $wp_admin_bar->add_group( array(
    303                 'parent' => 'bp-site-name',
    304                 'id'     => 'bp-site-name-super-admin',
    305                 'meta'   => array(
    306                     'class' => 'ab-sub-secondary',
    307                 ),
    308             ) );
    309 
     317        if ( is_main_site() ) {
     318
     319            // Add a link to create a new topic.
    310320            $wp_admin_bar->add_menu( array(
    311                 'parent' => 'bp-site-name-super-admin',
    312                 'id'     => 'bp-admin-link',
    313                 'title'  => __( 'Admin Dashbooard' ),
    314                 'href'   => get_admin_url()
     321                'id'     => 'bp-new-topic',
     322                'parent' => 'top-secondary',
     323                'title'  => __( 'Create New Topic' ),
     324                'href'   => 'https://buddypress.org/support/new-topic/'
    315325            ) );
    316326        }
     
    320330        $wp_admin_bar->add_menu( array(
    321331            'id'     => 'bp-login',
     332            'parent' => 'top-secondary',
    322333            'title'  => __( 'Log in' ),
    323334            'href'   => wp_login_url(),
     
    325336    }
    326337}
    327 add_action( 'admin_bar_menu', 'bporg_new_admin_bar_site_menu', 20 );
     338add_action( 'admin_bar_menu', 'bporg_new_admin_bar_site_menu', 2 );
    328339
    329340/**
     
    386397            'href'   => wp_registration_url(),
    387398        ) );
     399
    388400        $wp_admin_bar->add_menu( array(
    389401            'parent' => 'user-actions',
     
    403415 */
    404416function bporg_admin_bar_my_account_item( $wp_admin_bar ) {
    405 
    406     if ( is_user_logged_in() )
    407         return;
    408 
    409     $avatar = get_avatar( 0, 16, 'mystery' );
    410     $howdy  = __( 'Anonymous' );
    411     $class  = empty( $avatar ) ? '' : 'with-avatar';
    412 
    413     $wp_admin_bar->add_menu( array(
    414         'id'        => 'my-account',
    415         'parent'    => 'top-secondary',
    416         'title'     => $howdy . $avatar,
    417         'href'      => wp_login_url(),
    418         'meta'      => array(
    419             'class'     => $class,
    420             'title'     => __('My Account'),
    421         ),
    422     ) );
    423 }
    424 add_action( 'admin_bar_menu', 'bporg_admin_bar_my_account_item', 0 );
    425 
    426 /**
    427  * Force toolbar styling into looking like sub-navigation
    428  *
    429  * Note: slightly experimental - kind of a hack
    430  *
    431  * @author johnjamesjacoby
    432  * @since 1.0.3
    433  */
    434 function bporg_toolbar_css_overrides() {
    435 ?>
    436     <style type="text/css">
    437         /* Admin Bar */
    438         <?php if ( is_main_site() && is_front_page() ) : ?>
    439             #wpadminbar { display: none !important; }
    440         <?php else : ?>
    441             #wpadminbar { color: #555; background: #eee; top: 81px; border-bottom: 1px solid #ddd; height: 42px; }
    442             #wpadminbar #wp-toolbar a.ab-item, #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a { padding: 5px; }
    443             #wpadminbar #wp-toolbar ul.ab-submenu a.ab-item { padding: 0 2em 0 1em; }
    444             #wpadminbar #wp-toolbar .ab-top-secondary .menupop .menupop > a.ab-item  { padding: 0 1em 0 2em; }
    445             #wpadminbar a.ab-item, #wpadminbar > #wp-toolbar span.ab-label, #wpadminbar > #wp-toolbar span.noticon { color: #555; }
    446             #wpadminbar .ab-icon, #wpadminbar .ab-icon:before, #wpadminbar .ab-item:before, #wpadminbar .ab-item:after { color: #d84800; }
    447             #wpadminbar .ab-top-menu > li:hover > .ab-item,
    448             #wpadminbar .ab-top-menu > li.hover > .ab-item,
    449             #wpadminbar .ab-top-menu > li > .ab-item:focus,
    450             #wpadminbar.nojq .quicklinks .ab-top-menu > li > .ab-item:focus,
    451             #wpadminbar-nojs .ab-top-menu > li.menupop:hover > .ab-item,
    452             #wpadminbar:not(.mobile) .ab-top-menu > li:hover > .ab-item,
    453             #wpadminbar .ab-top-menu > li.menupop.hover > .ab-item { color: #555; background: #e2e2e2; }
    454             #wpadminbar > #wp-toolbar li:hover span.ab-label, #wpadminbar > #wp-toolbar li.hover span.ab-label, #wpadminbar > #wp-toolbar a:focus span.ab-label { color: #555; }
    455             #wpadminbar li:hover .ab-icon:before, #wpadminbar li:hover .ab-item:before, #wpadminbar li:hover .ab-item:after, #wpadminbar li:hover #adminbarsearch:before { color: #999; }
    456 
    457             /* Admin Bar: submenu */
    458             #wpadminbar .menupop .ab-sub-wrapper { background: #e2e2e2; }
    459             #wpadminbar .quicklinks .menupop .ab-submenu { background: #e2e2e2; }
    460             #wpadminbar .quicklinks .menupop ul.ab-sub-secondary, #wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu { background: #d2d2d2; }
    461             #wpadminbar .ab-submenu .ab-item, #wpadminbar .quicklinks .menupop ul li a, #wpadminbar .quicklinks .menupop.hover ul li a, #wpadminbar-nojs .quicklinks .menupop:hover ul li a { color: #555; }
    462             #wpadminbar .quicklinks li .blavatar, #wpadminbar .menupop .menupop > .ab-item:before { color: #f1f1f3; }
    463             #wpadminbar .quicklinks .menupop ul li a:hover,
    464             #wpadminbar .quicklinks .menupop ul li a:focus,
    465             #wpadminbar .quicklinks .menupop ul li a:hover strong,
    466             #wpadminbar .quicklinks .menupop ul li a:focus strong,
    467             #wpadminbar .quicklinks .menupop.hover ul li a:hover,
    468             #wpadminbar .quicklinks .menupop.hover ul li a:focus,
    469             #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
    470             #wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,
    471             #wpadminbar li:hover .ab-icon:before,
    472             #wpadminbar li:hover .ab-item:before,
    473             #wpadminbar li a:focus .ab-icon:before,
    474             #wpadminbar li .ab-item:focus:before,
    475             #wpadminbar li.hover .ab-icon:before,
    476             #wpadminbar li.hover .ab-item:before,
    477             #wpadminbar li:hover .ab-item:after,
    478             #wpadminbar li.hover .ab-item:after,
    479             #wpadminbar li:hover #adminbarsearch:before { color: #d84800; }
    480             #wpadminbar .quicklinks li a:hover .blavatar, #wpadminbar .menupop .menupop > .ab-item:hover:before { color: #d84800; }
    481 
    482             /* Admin Bar: my account */
    483             #wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar > a img { border-color: #e2e2e2; background-color: #e2e2e2; }
    484             #wpadminbar #wp-admin-bar-user-info .display-name { color: #555; }
    485             #wpadminbar #wp-admin-bar-user-info a:hover .display-name { color: #d84800; }
    486             #wpadminbar #wp-admin-bar-user-info .username { color: #000; }
    487 
    488             /* Some responsive'ish tweaks */
    489             @media screen and ( max-width: 460px ) {
    490                 #wpadminbar {
    491                     height: 56px;
    492                 }
    493                 #wpadminbar #wp-toolbar a.ab-item,
    494                 #wpadminbar .quicklinks li#wp-admin-bar-bp-notifications > a { padding: 0; }
    495             }
    496 
    497         <?php endif; ?>
    498     </style>
    499 <?php
    500 }
    501 
    502 // These toolbar modifications are for the buddypress.org network only.
    503 // (Do not override the toolbar for profiles.wordpress.org)
    504 if ( $_SERVER['HTTP_HOST'] !== 'profiles.wordpress.org' ) {
    505     add_theme_support( 'admin-bar', array( 'callback' => 'bporg_toolbar_css_overrides' ) );
    506 }
     417    $user_id      = get_current_user_id();
     418    $current_user = wp_get_current_user();
     419
     420    // Logged out
     421    if ( empty( $user_id ) ) {
     422        $howdy  = __( 'Anonymous' );
     423        $avatar = get_avatar( 0, 16, 'mystery' );
     424        $class  = empty( $avatar ) ? '' : 'with-avatar';
     425
     426        $wp_admin_bar->add_menu( array(
     427            'id'     => 'my-account',
     428            'parent' => 'top-secondary',
     429            'title'  => $howdy . $avatar,
     430            'href'   => wp_login_url(),
     431            'meta'   => array(
     432                'class' => $class,
     433                'title' => __( 'My Account' ),
     434            ),
     435        ) );
     436
     437    // Logged in
     438    } else {
     439        if ( current_user_can( 'read' ) ) {
     440            $profile_url = get_edit_profile_url( $user_id );
     441        } elseif ( is_multisite() ) {
     442            $profile_url = get_dashboard_url( $user_id, 'profile.php' );
     443        } else {
     444            $profile_url = false;
     445        }
     446
     447        $howdy  = '<span class="display-name">' . $current_user->display_name . '</span>';
     448        $avatar = get_avatar( $user_id, 26 );
     449        $class  = empty( $avatar ) ? '' : 'with-avatar';
     450
     451        $wp_admin_bar->add_node(
     452            array(
     453                'id'     => 'my-account',
     454                'parent' => 'top-secondary',
     455                'title'  => $howdy . $avatar,
     456                'href'   => $profile_url,
     457                'meta'   => array(
     458                    'class'      => $class,
     459                    'menu_title' => $current_user->display_name,
     460                    'tabindex'   => ( false !== $profile_url ) ? '' : 0,
     461                ),
     462            )
     463        );
     464    }
     465}
     466add_action( 'admin_bar_menu', 'bporg_admin_bar_my_account_item', 9991 );
Note: See TracChangeset for help on using the changeset viewer.