Skip to:
Content

BuddyPress.org

Ticket #2742: 2742.diff

File 2742.diff, 7.4 KB (added by boonebgorges, 9 years ago)
  • bp-themes/bp-default/groups/single/admin.php

     
    8686                        </ul>
    8787                </label>
    8888        </div>
     89       
     90        <h4><?php _e( 'Group Home', 'buddypress' ); ?></h4>
    8991
     92        <p><?php _e( 'Select the content you would like to appear on the group\'s Home tab.', 'buddypress' ) ?></p>
     93       
     94        <?php bp_group_home_content_options() ?>
     95       
    9096        <?php do_action( 'bp_after_group_settings_admin' ); ?>
    9197
    9298        <p><input type="submit" value="<?php _e( 'Save Changes', 'buddypress' ) ?> &rarr;" id="save" name="save" /></p>
  • bp-themes/bp-default/groups/single/home.php

     
    2929
    3030                                <?php do_action( 'bp_before_group_body' );
    3131
     32                                if ( !bp_group_is_visible() ) :
     33                                        // The group is not visible, show the status message
     34                       
     35                                        do_action( 'bp_before_group_status_message' ); ?>
     36                       
     37                                        <div id="message" class="info">
     38                                                <p><?php bp_group_status_message(); ?></p>
     39                                        </div>
     40                       
     41                                        <?php do_action( 'bp_after_group_status_message' );
     42                                endif;
     43
    3244                                if ( bp_is_group_admin_page() && bp_group_is_visible() ) :
    3345                                        locate_template( array( 'groups/single/admin.php' ), true );
    3446
     
    4355
    4456                                elseif ( bp_is_group_membership_request() ) :
    4557                                        locate_template( array( 'groups/single/request-membership.php' ), true );
    46 
    47                                 elseif ( bp_group_is_visible() && bp_is_active( 'activity' ) ) :
    48                                         locate_template( array( 'groups/single/activity.php' ), true );
    49 
    50                                 elseif ( bp_group_is_visible() && bp_is_active( 'forums' ) ) :
    51                                         locate_template( array( 'groups/single/forum.php' ), true );
    52 
    53                                 elseif ( bp_group_is_visible() ) :
    54                                         locate_template( array( 'groups/single/members.php' ), true );
    55 
    56                                 elseif ( !bp_group_is_visible() ) :
    57                                         // The group is not visible, show the status message
    58 
    59                                         do_action( 'bp_before_group_status_message' ); ?>
    60 
    61                                         <div id="message" class="info">
    62                                                 <p><?php bp_group_status_message(); ?></p>
    63                                         </div>
    64 
    65                                         <?php do_action( 'bp_after_group_status_message' );
    66 
     58                               
    6759                                else :
    68                                         // If nothing sticks, just load a group front template if one exists.
    69                                         locate_template( array( 'groups/single/front.php' ), true );
    70 
     60                                        // If we get to this point, we are viewing the group home
     61                                        bp_group_locate_default_template();
    7162                                endif;
    7263
    7364                                do_action( 'bp_after_group_body' ); ?>
  • bp-groups/bp-groups-screens.php

     
    481481                        $enable_forum   = ( isset($_POST['group-show-forum'] ) ) ? 1 : 0;
    482482                        $allowed_status = apply_filters( 'groups_allowed_status', array( 'public', 'private', 'hidden' ) );
    483483                        $status         = ( in_array( $_POST['group-status'], (array)$allowed_status ) ) ? $_POST['group-status'] : 'public';
     484                        $home_content   = !empty( $_POST['group-home-content'] ) ? $_POST['group-home-content'] : 'members';
    484485
    485486                        // Check the nonce
    486487                        if ( !check_admin_referer( 'groups_edit_group_settings' ) )
    487488                                return false;
    488489
    489                         if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status ) ) {
     490                        if ( !groups_edit_group_settings( $_POST['group-id'], $enable_forum, $status, $home_content ) ) {
    490491                                bp_core_add_message( __( 'There was an error updating group settings, please try again.', 'buddypress' ), 'error' );
    491492                        } else {
    492493                                bp_core_add_message( __( 'Group settings were successfully updated.', 'buddypress' ) );
  • bp-groups/bp-groups-functions.php

     
    118118        return true;
    119119}
    120120
    121 function groups_edit_group_settings( $group_id, $enable_forum, $status ) {
     121function groups_edit_group_settings( $group_id, $enable_forum, $status, $home_content = 'members' ) {
    122122        global $bp;
    123123
    124124        $group = new BP_Groups_Group( $group_id );
     
    144144                }
    145145        }
    146146
     147        // Save the home content
     148        groups_update_groupmeta( $group->id, 'group-home-content', $home_content );
     149       
    147150        groups_update_groupmeta( $group->id, 'last_activity', bp_core_current_time() );
    148151        do_action( 'groups_settings_updated', $group->id );
    149152
  • bp-groups/bp-groups-template.php

     
    513513                return apply_filters( 'bp_get_group_date_created', bp_core_time_since( strtotime( $group->date_created ) ) );
    514514        }
    515515
     516function bp_group_locate_default_template() {
     517       
     518        $default_template = groups_get_groupmeta( bp_get_group_id(), 'group-home-content' );
     519       
     520        if ( empty( $default_template ) ) {             
     521                $default_template = 'front';
     522               
     523                if ( bp_group_is_visible() ) {
     524                        if ( bp_is_active( 'activity' ) ) {
     525                                $default_template = 'activity';
     526                        } else if ( bp_is_active( 'forums' ) ) {
     527                                $default_template = 'forum';
     528                        } else {
     529                                $default_template = 'members';
     530                        }
     531                }
     532        }
     533       
     534        $default_template = 'groups/single/' . $default_template . '.php';
     535       
     536        $default_template = apply_filters( 'bp_group_locate_default_template', $default_template );
     537       
     538        locate_template( array( $default_template ), true );
     539}
     540
    516541function bp_group_is_admin() {
    517542        global $bp;
    518543
     
    10691094<?php
    10701095}
    10711096
     1097function bp_group_home_content_options() {
     1098        global $bp;
     1099       
     1100        // Get a list of tabs available for the current group
     1101       
     1102        // 'members' is available whenever groups are turned on. Others are component-dependent
     1103        $group_tabs = array(
     1104                'members' => __( 'Members', 'buddypress' )
     1105        );
     1106       
     1107        if ( bp_is_active( 'activity' ) ) {
     1108                $group_tabs['activity'] = __( 'Activity', 'buddypress' );
     1109        }
     1110       
     1111        if ( bp_is_active( 'forums' ) ) {
     1112                $group_tabs['forum'] = __( 'Forum', 'buddypress' );
     1113        }
     1114       
     1115        // Now, loop through the options nav to look for others tabs added by plugins
     1116        // Check against a list of tabs that cannot be set to the Home tab (keyed by slug)
     1117        $home_tab_exceptions = apply_filters( 'bp_group_home_tab_exceptions', array(
     1118                'admin',
     1119                'home'
     1120        ) );
     1121       
     1122        foreach( $bp->bp_options_nav[$bp->groups->current_group->slug] as $nav_item ) {
     1123                if ( !array_key_exists( $nav_item['slug'], $group_tabs ) && !in_array( $nav_item['slug'], $home_tab_exceptions ) ) {
     1124                        $group_tabs[$nav_item['slug']] = $nav_item['name'];
     1125                }
     1126        }
     1127       
     1128        $group_tabs = apply_filters( 'bp_group_home_options_tabs', $group_tabs );
     1129
     1130        // Build the options markup
     1131        $options = array();
     1132        $current_home_content = groups_get_groupmeta( bp_get_group_id(), 'group-home-content' );
     1133        if ( empty( $current_home_content ) ) {
     1134                $current_home_content = 'members';
     1135        }
     1136        foreach( $group_tabs as $slug => $name ) {
     1137                $selected = $current_home_content == $slug ? ' selected="selected"' : '';
     1138                $options[] = "\t\t" . '<option value="' . esc_attr( $slug ) . '"' . $selected . '>' . esc_html( $name ) . '</option>';
     1139        }
     1140       
     1141        $select_markup = '<select name="group-home-content">' . "\n" . implode( "\n", $options ) . "\n\t" . '</select>';
     1142       
     1143        echo apply_filters( 'bp_group_home_options_markup', $select_markup, $options );
     1144}
     1145
    10721146function bp_group_total_for_member() {
    10731147        echo bp_get_group_total_for_member();
    10741148}