Skip to:
Content

bbPress.org

Changeset 4046


Ignore:
Timestamp:
07/02/2012 07:06:30 AM (14 years ago)
Author:
johnjamesjacoby
Message:

Admin Menus:

  • Fix issue where bbPress top-level admin-menu positions could conflict with other plugins.
  • Set menu_position on post-types to 555555.
  • Refactor bbp_admin_menu_order() to reposition all available custom menus above the second separator.
  • Fixes #1876.
Location:
branches/plugin
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/plugin/bbp-admin/bbp-functions.php

    r3966 r4046  
    2121
    2222        // Prevent duplicate separators when no new menu items exist
    23         if ( !current_user_can( 'edit_replies' ) )
     23        if ( !current_user_can( 'edit_forums' ) && !current_user_can( 'edit_topics' ) && !current_user_can( 'edit_replies' ) )
    2424                return;
    2525
    … …  
    4141 * @return bool Always true
    4242 */
    43 function bbp_admin_custom_menu_order( $menu_order ) {
    44         if ( !current_user_can( 'edit_replies' ) )
     43function bbp_admin_custom_menu_order( $menu_order = false ) {
     44        if ( !current_user_can( 'edit_forums' ) && !current_user_can( 'edit_topics' ) && !current_user_can( 'edit_replies' ) )
    4545                return $menu_order;
    4646
    … …  
    5959function bbp_admin_menu_order( $menu_order ) {
    6060
     61        // Bail if user cannot see any top level bbPress menus
     62        if ( empty( $menu_order ) || ( !current_user_can( 'edit_forums' ) && !current_user_can( 'edit_topics' ) && !current_user_can( 'edit_replies' ) ) )
     63                return $menu_order;
     64
    6165        // Initialize our custom order array
    6266        $bbp_menu_order = array();
    6367
    64         // Get the index of our custom separator
    65         $bbp_separator = array_search( 'separator-bbpress', $menu_order );
    66 
    67         // Forums
    68         if ( current_user_can( 'edit_forums' ) ) {
    69                 $top_menu_type = bbp_get_forum_post_type();
    70 
    71         // Topics
    72         } elseif ( current_user_can( 'edit_topics' ) ) {
    73                 $top_menu_type = bbp_get_topic_post_type();
    74 
    75         // Replies
    76         } elseif ( current_user_can( 'edit_replies' ) ) {
    77                 $top_menu_type = bbp_get_reply_post_type();
    78 
    79         // Bail if there are no bbPress menus present
    80         } else {
    81                 return;
    82         }
     68        // Menu values
     69        $second_sep   = 'separator2';
     70        $custom_menus = array(
     71                'separator-bbpress',                               // Separator
     72                'edit.php?post_type=' . bbp_get_forum_post_type(), // Forums
     73                'edit.php?post_type=' . bbp_get_topic_post_type(), // Topics
     74                'edit.php?post_type=' . bbp_get_reply_post_type()  // Replies
     75        );
    8376
    8477        // Loop through menu order and do some rearranging
    85         foreach ( $menu_order as $index => $item ) {
    86 
    87                 // Current item is ours, so set our separator here
    88                 if ( ( ( 'edit.php?post_type=' . $top_menu_type ) == $item ) ) {
    89                         $bbp_menu_order[] = 'separator-bbpress';
    90                         unset( $menu_order[$bbp_separator] );
    91                 }
    92 
    93                 // Skip our separator
    94                 if ( !in_array( $item, array( 'separator-bbpress' ) ) ) {
     78        foreach ( $menu_order as $item ) {
     79
     80                // Position bbPress menus above appearance
     81                if ( $second_sep == $item ) {
     82
     83                        // Add our custom menus
     84                        foreach( $custom_menus as $custom_menu ) {
     85                                if ( array_search( $custom_menu, $menu_order ) ) {
     86                                        $bbp_menu_order[] = $custom_menu;
     87                                }
     88                        }
     89
     90                        // Add the appearance separator
     91                        $bbp_menu_order[] = $second_sep;
     92
     93                // Skip our menu items
     94                } elseif ( ! in_array( $item, $custom_menus ) ) {
    9595                        $bbp_menu_order[] = $item;
    9696                }
  • branches/plugin/bbpress.php

    r4043 r4046  
    513513                                'capabilities'        => bbp_get_forum_caps(),
    514514                                'capability_type'     => array( 'forum', 'forums' ),
    515                                 'menu_position'       => 56,
     515                                'menu_position'       => 555555,
    516516                                'has_archive'         => bbp_get_root_slug(),
    517517                                'exclude_from_search' => true,
    … …  
    570570                                'capabilities'        => bbp_get_topic_caps(),
    571571                                'capability_type'     => array( 'topic', 'topics' ),
    572                                 'menu_position'       => 57,
     572                                'menu_position'       => 555555,
    573573                                'has_archive'         => bbp_get_topic_archive_slug(),
    574574                                'exclude_from_search' => true,
    … …  
    627627                                'capabilities'        => bbp_get_reply_caps(),
    628628                                'capability_type'     => array( 'reply', 'replies' ),
    629                                 'menu_position'       => 58,
     629                                'menu_position'       => 555555,
    630630                                'exclude_from_search' => true,
    631631                                'has_archive'         => false,
Note: See TracChangeset for help on using the changeset viewer.