Changeset 5895 for trunk/bp-core/bp-core-buddybar.php
- Timestamp:
- 03/09/2012 03:25:20 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/bp-core/bp-core-buddybar.php
r5868 r5895 65 65 66 66 // Look for current component 67 if ( bp_is_current_component( $slug ) && !bp_current_action() ) { 68 if ( !is_object( $screen_function[0] ) ) 69 add_action( 'bp_screens', $screen_function ); 70 else 71 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); 72 73 if ( !empty( $default_subnav_slug ) ) { 74 $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); 75 $bp->redirect_stack['action'] = $bp->current_action; 67 if ( bp_is_current_component( $slug ) ) { 68 if ( !empty( $default_subnav_slug ) && bp_is_current_action( $default_subnav_slug ) ) { 69 // The requested URL has explicitly included the default subnav (eg 70 // example.com/members/membername/activity/just-me/). The canonical 71 // version will not contain this subnav slug. 72 unset( $bp->canonical_stack['action'] ); 73 } else if ( !bp_current_action() ) { 74 if ( !is_object( $screen_function[0] ) ) 75 add_action( 'bp_screens', $screen_function ); 76 else 77 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); 78 79 if ( !empty( $default_subnav_slug ) ) { 80 $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); 81 } 76 82 } 77 83 78 84 // Look for current item 79 } elseif ( bp_is_current_item( $slug ) && !bp_current_action() ) { 80 if ( !is_object( $screen_function[0] ) ) 81 add_action( 'bp_screens', $screen_function ); 82 else 83 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); 84 85 if ( !empty( $default_subnav_slug ) ) { 86 $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); 87 $bp->redirect_stack['action'] = $bp->current_action; 85 } elseif ( bp_is_current_item( $slug ) ) { 86 if ( !empty( $default_subnav_slug ) && bp_is_current_action( $default_subnav_slug ) ) { 87 // The requested URL has explicitly included the default subnav (eg 88 // example.com/members/membername/activity/just-me/). The canonical 89 // version will not contain this subnav slug. 90 unset( $bp->canonical_stack['action'] ); 91 } else if ( !bp_current_action() ) { 92 if ( !is_object( $screen_function[0] ) ) 93 add_action( 'bp_screens', $screen_function ); 94 else 95 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ), 3 ); 96 97 if ( !empty( $default_subnav_slug ) ) { 98 $bp->current_action = apply_filters( 'bp_default_component_subnav', $default_subnav_slug, $r ); 99 } 88 100 } 89 101 } … … 109 121 $r = wp_parse_args( $args, $defaults ); 110 122 extract( $r, EXTR_SKIP ); 111 123 112 124 if ( $function = $bp->bp_nav[$parent_slug]['screen_function'] ) { 113 125 if ( !is_object( $function[0] ) ) … … 119 131 $bp->bp_nav[$parent_slug]['screen_function'] = &$screen_function; 120 132 121 // If the current_action has been set to the default_subnav_slug, it will be reflected 122 // in the redirect_stack. Unset the action manually so that the new nav default can be set 123 if ( !empty( $bp->redirect_stack['action'] ) && $bp->redirect_stack['action'] == $bp->bp_nav[$parent_slug]['default_subnav_slug'] ) { 124 $bp->current_action = ''; 125 } 126 127 if ( bp_is_current_component( $parent_slug ) && !bp_current_action() ) { 128 if ( !is_object( $screen_function[0] ) ) { 129 add_action( 'bp_screens', $screen_function ); 133 if ( bp_is_current_component( $parent_slug ) ) { 134 135 // The only way to tell whether to set the subnav is to peek at the unfiltered_uri 136 // Find the component 137 $component_uri_key = array_search( $parent_slug, $bp->unfiltered_uri ); 138 139 if ( false !== $component_uri_key ) { 140 if ( !empty( $bp->unfiltered_uri[$component_uri_key + 1] ) ) { 141 $unfiltered_action = $bp->unfiltered_uri[$component_uri_key + 1]; 142 } 143 } 144 145 if ( empty( $unfiltered_action ) ) { 146 // No subnav item has been requested in the URL, so set a new nav default 147 if ( !bp_is_current_action( $subnav_slug ) ) { 148 if ( !is_object( $screen_function[0] ) ) { 149 add_action( 'bp_screens', $screen_function ); 150 } else { 151 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ) ); 152 } 153 154 $bp->current_action = $subnav_slug; 155 unset( $bp->canonical_stack['action'] ); 156 } 157 } else if ( $unfiltered_action == $subnav_slug ) { 158 // The URL is explicitly requesting the new subnav item, but should be 159 // directed to the canonical URL 160 unset( $bp->canonical_stack['action'] ); 130 161 } else { 131 add_action( 'bp_screens', array( &$screen_function[0], $screen_function[1] ) );132 }133 134 if ( $subnav_slug ) {135 $bp->current_action = $subnav_slug;136 $bp->redirect_stack['action'] = $bp->current_action;137 }138 }162 // In all other cases (including the case where the original subnav item 163 // is explicitly called in the URL), the canonical URL will contain the 164 // subnav slug 165 $bp->canonical_stack['action'] = bp_current_action(); 166 } 167 } 168 169 return; 139 170 } 140 171
Note: See TracChangeset
for help on using the changeset viewer.