Index: bp-groups.php
===================================================================
--- bp-groups.php	(revision 3542)
+++ bp-groups.php	(working copy)
@@ -7,13 +7,16 @@
 function groups_setup_globals() {
 	global $bp, $wpdb;
 
-	if ( !defined( 'BP_GROUPS_SLUG' ) )
-		define ( 'BP_GROUPS_SLUG', $bp->pages->groups->slug );
-
+	if ( !defined( 'BP_GROUPS_SLUG' ) ) {
+	        $slug_chunks = explode( '/', $bp->pages->groups->slug );
+	        define( 'BP_GROUPS_SLUG', array_pop( $slug_chunks ) );
+        }
+        
 	/* For internal identification */
 	$bp->groups->id = 'groups';
 	$bp->groups->name = $bp->pages->groups->name;
 	$bp->groups->slug = BP_GROUPS_SLUG;
+	$bp->groups->directory_slug = $bp->pages->groups->slug;
 
 	$bp->groups->table_name           = $bp->table_prefix . 'bp_groups';
 	$bp->groups->table_name_members   = $bp->table_prefix . 'bp_groups_members';
@@ -47,7 +50,7 @@
 function groups_setup_nav() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && $group_id = BP_Groups_Group::group_exists($bp->current_action) ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && $group_id = BP_Groups_Group::group_exists($bp->current_action) ) {
 
 		/* This is a single group page. */
 		$bp->is_single_item = true;
@@ -79,7 +82,7 @@
 	bp_core_new_subnav_item( array( 'name' => __( 'My Groups', 'buddypress' ), 'slug' => 'my-groups', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->name, 'screen_function' => 'groups_screen_my_groups', 'position' => 10, 'item_css_id' => 'groups-my-groups' ) );
 	bp_core_new_subnav_item( array( 'name' => __( 'Invites', 'buddypress' ), 'slug' => 'invites', 'parent_url' => $groups_link, 'parent_slug' => $bp->groups->name, 'screen_function' => 'groups_screen_group_invites', 'position' => 30, 'user_has_access' => bp_is_my_profile() ) );
 
-	if ( $bp->current_component == $bp->groups->slug ) {
+	if ( $bp->current_component == $bp->groups->directory_slug ) {
 
 		if ( bp_is_my_profile() && !$bp->is_single_item ) {
 
@@ -156,7 +159,7 @@
 function groups_directory_groups_setup() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && empty( $bp->current_action ) && empty( $bp->current_item ) ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && empty( $bp->current_action ) && empty( $bp->current_item ) ) {
 		$bp->is_directory = true;
 
 		do_action( 'groups_directory_groups_setup' );
@@ -585,7 +588,7 @@
 function groups_screen_group_activity_permalink() {
 	global $bp;
 
-	if ( $bp->current_component != $bp->groups->slug || $bp->current_action != $bp->activity->slug || empty( $bp->action_variables[0] ) )
+	if ( $bp->current_component != $bp->groups->directory_slug || $bp->current_action != $bp->activity->slug || empty( $bp->action_variables[0] ) )
 		return false;
 
 	$bp->is_single_item = true;
@@ -597,7 +600,7 @@
 function groups_screen_group_admin() {
 	global $bp;
 
-	if ( $bp->current_component != BP_GROUPS_SLUG || 'admin' != $bp->current_action )
+	if ( $bp->current_component != $bp->groups->directory_slug || 'admin' != $bp->current_action )
 		return false;
 
 	if ( !empty( $bp->action_variables[0] ) )
@@ -609,7 +612,7 @@
 function groups_screen_group_admin_edit_details() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'edit-details' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'edit-details' == $bp->action_variables[0] ) {
 
 		if ( $bp->is_item_admin || $bp->is_item_mod  ) {
 
@@ -641,7 +644,7 @@
 function groups_screen_group_admin_settings() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'group-settings' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'group-settings' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -678,7 +681,7 @@
 function groups_screen_group_admin_avatar() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'group-avatar' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'group-avatar' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -736,7 +739,7 @@
 function groups_screen_group_admin_manage_members() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'manage-members' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'manage-members' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin )
 			return false;
@@ -842,7 +845,7 @@
 function groups_screen_group_admin_requests() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'membership-requests' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'membership-requests' == $bp->action_variables[0] ) {
 
 		/* Ask for a login if the user is coming here via an email notification */
 		if ( !is_user_logged_in() )
@@ -900,7 +903,7 @@
 function groups_screen_group_admin_delete_group() {
 	global $bp;
 
-	if ( $bp->current_component == $bp->groups->slug && 'delete-group' == $bp->action_variables[0] ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && 'delete-group' == $bp->action_variables[0] ) {
 
 		if ( !$bp->is_item_admin && !is_super_admin() )
 			return false;
@@ -989,7 +992,7 @@
 	global $bp;
 
 	/* If we're not at domain.org/groups/create/ then return false */
-	if ( $bp->current_component != $bp->groups->slug || 'create' != $bp->current_action )
+	if ( $bp->current_component != $bp->groups->directory_slug || 'create' != $bp->current_action )
 		return false;
 
 	if ( !is_user_logged_in() )
@@ -1162,7 +1165,7 @@
 function groups_action_join_group() {
 	global $bp;
 
-	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != 'join' )
+	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->directory_slug || $bp->current_action != 'join' )
 		return false;
 
 	// Nonce check
@@ -1197,7 +1200,7 @@
 function groups_action_leave_group() {
 	global $bp;
 
-	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != 'leave-group' )
+	if ( !$bp->is_single_item || $bp->current_component != $bp->groups->directory_slug || $bp->current_action != 'leave-group' )
 		return false;
 
 	// Nonce check
@@ -1222,7 +1225,7 @@
 function groups_action_sort_creation_steps() {
 	global $bp;
 
-	if ( $bp->current_component != BP_GROUPS_SLUG && $bp->current_action != 'create' )
+	if ( $bp->current_component != $bp->groups->directory_slug && $bp->current_action != 'create' )
 		return false;
 
 	if ( !is_array( $bp->groups->group_creation_steps ) )
@@ -1246,7 +1249,7 @@
 function groups_action_redirect_to_random_group() {
 	global $bp, $wpdb;
 
-	if ( $bp->current_component == $bp->groups->slug && isset( $_GET['random-group'] ) ) {
+	if ( $bp->current_component == $bp->groups->directory_slug && isset( $_GET['random-group'] ) ) {
 		$group = groups_get_groups( array( 'type' => 'random', 'per_page' => 1 ) );
 
 		bp_core_redirect( $bp->root_domain . '/' . $bp->groups->slug . '/' . $group['groups'][0]->slug . '/' );
@@ -1257,7 +1260,7 @@
 function groups_action_group_feed() {
 	global $bp, $wp_query;
 
-	if ( !bp_is_active( 'activity' ) || $bp->current_component != $bp->groups->slug || !isset( $bp->groups->current_group ) || $bp->current_action != 'feed' )
+	if ( !bp_is_active( 'activity' ) || $bp->current_component != $bp->groups->directory_slug || !isset( $bp->groups->current_group ) || $bp->current_action != 'feed' )
 		return false;
 
 	$wp_query->is_404 = false;
