Skip to:
Content

BuddyPress.org

Ticket #5994: 5994.patch

File 5994.patch, 9.9 KB (added by imath, 10 years ago)
  • src/bp-core/bp-core-template.php

    diff --git src/bp-core/bp-core-template.php src/bp-core/bp-core-template.php
    index c945432..5b631d2 100644
    if ( !defined( 'ABSPATH' ) ) exit; 
    2626 * @uses bp_get_user_nav() Renders the navigation for a profile of a currently
    2727 *       viewed user.
    2828 */
    29 function bp_get_options_nav() {
     29function bp_get_options_nav( $parent_slug = '' ) {
    3030        $bp = buddypress();
    3131
    3232        // If we are looking at a member profile, then the we can use the current
    3333        // component as an index. Otherwise we need to use the component's root_slug
    3434        $component_index = !empty( $bp->displayed_user ) ? bp_current_component() : bp_get_root_slug( bp_current_component() );
     35        $selected_item   = bp_current_action();
    3536
    3637        if ( ! bp_is_single_item() ) {
    3738                if ( !isset( $bp->bp_options_nav[$component_index] ) || count( $bp->bp_options_nav[$component_index] ) < 1 ) {
    function bp_get_options_nav() { 
    4041                        $the_index = $component_index;
    4142                }
    4243        } else {
    43                 if ( !isset( $bp->bp_options_nav[bp_current_item()] ) || count( $bp->bp_options_nav[bp_current_item()] ) < 1 ) {
     44                $current_item = bp_current_item();
     45
     46                if ( ! empty( $parent_slug ) ) {
     47                        $current_item  = $parent_slug;
     48                        $selected_item = bp_action_variable( 0 );
     49                }
     50
     51                if ( !isset( $bp->bp_options_nav[$current_item] ) || count( $bp->bp_options_nav[$current_item] ) < 1 ) {
    4452                        return false;
    4553                } else {
    46                         $the_index = bp_current_item();
     54                        $the_index = $current_item;
    4755                }
    4856        }
    4957
    function bp_get_options_nav() { 
    5462                }
    5563
    5664                // If the current action or an action variable matches the nav item id, then add a highlight CSS class.
    57                 if ( $subnav_item['slug'] == bp_current_action() ) {
     65                if ( $subnav_item['slug'] == $selected_item ) {
    5866                        $selected = ' class="current selected"';
    5967                } else {
    6068                        $selected = '';
    function bp_get_options_nav() { 
    6472                $list_type = bp_is_group() ? 'groups' : 'personal';
    6573
    6674                // echo out the final list item
    67                 echo apply_filters( 'bp_get_options_nav_' . $subnav_item['css_id'], '<li id="' . $subnav_item['css_id'] . '-' . $list_type . '-li" ' . $selected . '><a id="' . $subnav_item['css_id'] . '" href="' . $subnav_item['link'] . '">' . $subnav_item['name'] . '</a></li>', $subnav_item );
     75                echo apply_filters( 'bp_get_options_nav_' . $subnav_item['css_id'], '<li id="' . $subnav_item['css_id'] . '-' . $list_type . '-li" ' . $selected . '><a id="' . $subnav_item['css_id'] . '" href="' . $subnav_item['link'] . '">' . $subnav_item['name'] . '</a></li>', $subnav_item, $selected_item );
    6876        }
    6977}
    7078
    function bp_is_group() { 
    19171925        if ( ! empty( $retval ) ) {
    19181926                $retval = bp_is_groups_component() && groups_get_current_group();
    19191927        }
    1920        
     1928
    19211929        return (bool) $retval;
    19221930}
    19231931
  • src/bp-groups/bp-groups-classes.php

    diff --git src/bp-groups/bp-groups-classes.php src/bp-groups/bp-groups-classes.php
    index 9428b8f..eae8fb6 100644
    class BP_Group_Extension { 
    36463646                $screen = $this->screens['edit'];
    36473647
    36483648                $position = isset( $screen['position'] ) ? (int) $screen['position'] : 10;
    3649 
    3650                 // Add the tab
    3651                 // @todo BP should be using bp_core_new_subnav_item()
    3652                 add_action( 'groups_admin_tabs', create_function( '$current, $group_slug',
    3653                         '$selected = "";
    3654                         if ( "' . esc_attr( $screen['slug'] ) . '" == $current )
    3655                                 $selected = " class=\"current\"";
    3656                         echo "<li{$selected}><a href=\"' . trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/{$group_slug}/admin/' . esc_attr( $screen['slug'] ) ) . '\">' . esc_attr( $screen['name'] ) . '</a></li>";'
    3657                 ), $position, 2 );
     3649                $position += 40;
     3650
     3651                $current_group = groups_get_current_group();
     3652                $admin_link = trailingslashit( bp_get_group_permalink( $current_group ) . 'admin' );
     3653
     3654                // Add the tab to the manage navigation
     3655                bp_core_new_subnav_item( array(
     3656                        'name'            => $screen['name'],
     3657                        'slug'            => $screen['slug'],
     3658                        'parent_slug'     => $current_group->slug . '_manage',
     3659                        'parent_url'      => trailingslashit( bp_get_group_permalink( $current_group ) . 'admin' ),
     3660                        'user_has_access' => bp_is_item_admin(),
     3661                        'position'        => $position,
     3662                        'screen_function' => 'groups_screen_group_admin',
     3663                ) );
    36583664
    36593665                // Catch the edit screen and forward it to the plugin template
    36603666                if ( bp_is_groups_component() && bp_is_current_action( 'admin' ) && bp_is_action_variable( $screen['slug'], 0 ) ) {
  • src/bp-groups/bp-groups-loader.php

    diff --git src/bp-groups/bp-groups-loader.php src/bp-groups/bp-groups-loader.php
    index e07dd26..d3ccbcf 100644
    class BP_Groups_Component extends BP_Component { 
    509509                                );
    510510                        }
    511511
     512                        // If viewing an admin page, create the group admin subnav items
     513                        if ( bp_is_group_admin_page() ) {
     514                                $admin_link = trailingslashit( $group_link . 'admin' );
     515
     516                                // Common params to all nav items
     517                                $default_params = array(
     518                                        'parent_url'      => $admin_link,
     519                                        'parent_slug'     => $this->current_group->slug . '_manage',
     520                                        'screen_function' => 'groups_screen_group_admin',
     521                                        'user_has_access' => bp_is_item_admin(),
     522                                );
     523
     524                                $sub_nav[] = array_merge( array(
     525                                        'name'            => __( 'Details', 'buddypress' ),
     526                                        'slug'            => 'edit-details',
     527                                        'position'        => 0,
     528                                ), $default_params );
     529
     530                                $sub_nav[] = array_merge( array(
     531                                        'name'            => __( 'Settings', 'buddypress' ),
     532                                        'slug'            => 'group-settings',
     533                                        'position'        => 10,
     534                                ), $default_params );
     535
     536                                if ( ! (int) bp_get_option( 'bp-disable-avatar-uploads' ) && buddypress()->avatar->show_avatars ) {
     537                                        $sub_nav[] = array_merge( array(
     538                                                'name'        => __( 'Photo', 'buddypress' ),
     539                                                'slug'        => 'group-avatar',
     540                                                'position'    => 20,
     541                                        ), $default_params );
     542                                }
     543
     544                                $sub_nav[] = array_merge( array(
     545                                        'name'            => __( 'Members', 'buddypress' ),
     546                                        'slug'            => 'manage-members',
     547                                        'position'        => 30,
     548                                ), $default_params );
     549
     550                                if ( 'private' == $this->current_group->status ) {
     551                                        $sub_nav[] = array_merge( array(
     552                                                'name'            => __( 'Requests', 'buddypress' ),
     553                                                'slug'            => 'membership-requests',
     554                                                'position'        => 40,
     555                                        ), $default_params );
     556                                }
     557
     558                                $sub_nav[] = array_merge( array(
     559                                        'name'            => __( 'Delete', 'buddypress' ),
     560                                        'slug'            => 'delete-group',
     561                                        'position'        => 1000,
     562                                ), $default_params );
     563                        }
     564
    512565                        parent::setup_nav( $main_nav, $sub_nav );
    513566                }
    514567
  • src/bp-groups/bp-groups-template.php

    diff --git src/bp-groups/bp-groups-template.php src/bp-groups/bp-groups-template.php
    index d487aeb..e0d17b1 100644
    function bp_group_admin_tabs( $group = false ) { 
    22992299                $group = ( $groups_template->group ) ? $groups_template->group : groups_get_current_group();
    23002300        }
    23012301
    2302         $current_tab = bp_get_group_current_admin_tab();
     2302        $css_id = 'manage-members';
    23032303
    2304         if ( bp_is_item_admin() ) : ?>
    2305 
    2306                 <li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/edit-details' ) ?>"><?php _e( 'Details', 'buddypress' ); ?></a></li>
    2307 
    2308         <?php endif; ?>
    2309 
    2310         <?php if ( ! bp_is_item_admin() )
    2311                         return false; ?>
    2312 
    2313         <li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/group-settings' ) ?>"><?php _e( 'Settings', 'buddypress' ); ?></a></li>
     2304        if ( 'private' == $group->status ) {
     2305                $css_id = 'membership-requests';
     2306        }
    23142307
    2315         <?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) && buddypress()->avatar->show_avatars ) : ?>
     2308        add_filter( "bp_get_options_nav_{$css_id}", 'bp_group_admin_tabs_backcompat', 10, 3 );
    23162309
    2317                 <li<?php if ( 'group-avatar'   == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/group-avatar' ) ?>"><?php _e( 'Photo', 'buddypress' ); ?></a></li>
     2310        bp_get_options_nav( $group->slug . '_manage' );
    23182311
    2319         <?php endif; ?>
     2312        remove_filter( "bp_get_options_nav_{$css_id}", 'bp_group_admin_tabs_backcompat', 10, 3 );
     2313}
    23202314
    2321         <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/manage-members' ) ?>"><?php _e( 'Members', 'buddypress' ); ?></a></li>
     2315/**
     2316 * BackCompat for plugins/themes directly hooking groups_admin_tabs
     2317 * without using the Groups Extension API
     2318 *
     2319 * @param  string $subnav_output subnav item output
     2320 * @param  string $subnav_item   subnav item params
     2321 * @param  string $selected_item current selected tab
     2322 * @return string HTML output
     2323 */
     2324function bp_group_admin_tabs_backcompat( $subnav_output = '', $subnav_item = '', $selected_item = '' ) {
     2325        if ( ! has_action( 'groups_admin_tabs' ) ) {
     2326                return $subnav_output;
     2327        }
    23222328
    2323         <?php if ( $groups_template->group->status == 'private' ) : ?>
     2329        $group = groups_get_current_group();
    23242330
    2325                 <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/membership-requests' ) ?>"><?php _e( 'Requests', 'buddypress' ); ?></a></li>
     2331        ob_start();
    23262332
    2327         <?php endif; ?>
     2333        do_action( 'groups_admin_tabs', $selected_item, $group->slug );
    23282334
    2329         <?php do_action( 'groups_admin_tabs', $current_tab, $group->slug ) ?>
     2335        $admin_tabs_backcompat = trim( ob_get_contents() );
     2336        ob_end_clean();
    23302337
    2331         <li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/delete-group' ) ?>"><?php _e( 'Delete', 'buddypress' ); ?></a></li>
     2338        if ( ! empty( $admin_tabs_backcompat ) ) {
     2339                $subnav_output .= $admin_tabs_backcompat;
     2340        }
    23322341
    2333 <?php
     2342        return $subnav_output;
    23342343}
    23352344
    23362345/**