Skip to:
Content

bbPress.org

Ticket #2599: 2599.diff

File 2599.diff, 3.2 KB (added by pareshradadiya, 6 years ago)

Forum visibility dropdown added to the 'Group Forum Settings'

  • src/includes/extend/buddypress/groups.php

     
    9898
    9999                // Adds a hidden input value to the "Group Settings" page
    100100                add_action( 'bp_before_group_settings_admin', array( $this, 'group_settings_hidden_field'    ) );
     101
     102                // Add a inline script to change forum visibility
     103                add_action( 'bp_groups_admin_edit', array( $this, 'groups_admin_edit') );
    101104        }
    102105
    103106        /**
     
    269272                // Get the first forum ID
    270273                if ( !empty( $forum_ids ) ) {
    271274                        $forum_id = (int) is_array( $forum_ids ) ? $forum_ids[0] : $forum_ids;
     275
     276                        $forum_visibility = bbp_get_forum_visibility( $forum_id );
    272277                }
    273278
    274279                // Should box be checked already?
     
    300305                                        ?>
    301306                                        <p class="description"><?php esc_html_e( 'Network administrators can reconfigure which forum belongs to this group.', 'bbpress' ); ?></p>
    302307                                </div>
     308
     309                                <div class="field-group">
     310                                        <div class="checkbox">
     311                                                <label><?php esc_html_e( 'Forum Visibility:', 'bbpress' ); ?></label>
     312                                                <?php bbp_form_forum_visibility_dropdown( array( 'selected' => $forum_visibility ) ); ?>
     313                                        </div>
     314                                </div>
    303315                        <?php endif; ?>
    304316
    305317                        <?php if ( !is_admin() ) : ?>
     
    370382                                if ( empty( $forum ) ) {
    371383                                        $this->remove_forum( array( 'forum_id' => $forum_id ) );
    372384                                        unset( $forum_ids[$forum_id] );
     385                                } else {
     386                                        /** Forum Visibility **************************************************/
     387
     388                                        if ( !empty( $_POST['bbp_forum_visibility'] ) && in_array( $_POST['bbp_forum_visibility'], array( bbp_get_public_status_id(), bbp_get_private_status_id(), bbp_get_hidden_status_id() ) ) ) {
     389
     390                                                // Get forums current visibility
     391                                                $visibility = bbp_get_forum_visibility( $forum_id );
     392
     393                                                // What is the new forum visibility setting?
     394                                                switch ( $_POST['bbp_forum_visibility'] ) {
     395
     396                                                        // Hidden
     397                                                        case bbp_get_hidden_status_id()  :
     398                                                                bbp_hide_forum( $forum_id, $visibility );
     399                                                                break;
     400
     401                                                        // Private
     402                                                        case bbp_get_private_status_id() :
     403                                                                bbp_privatize_forum( $forum_id, $visibility );
     404                                                                break;
     405
     406                                                        // Publish (default)
     407                                                        case bbp_get_public_status_id()  :
     408                                                        default        :
     409                                                                bbp_publicize_forum( $forum_id, $visibility );
     410                                                                break;
     411                                                }
     412                                        }
    373413                                }
    374414                        }
    375415
     
    11521192        <?php
    11531193        }
    11541194
     1195        /**
     1196         * Inline js for set forum visibility according to group privacy
     1197         */
     1198        public function groups_admin_edit() { ?>
     1199                <script type="text/javascript">
     1200                        (function($) {
     1201                                var bbpGroupsForums = {
     1202
     1203                                        init: function() {
     1204                                                $(document).on( 'change', 'input[name="group-status"]', bbpGroupsForums.setVisibility);
     1205                                        },
     1206
     1207                                        setVisibility: function() {
     1208                                                var group_visibility = $(this).val();
     1209
     1210                                                if( 'public' === group_visibility )
     1211                                                        group_visibility = 'publish';
     1212
     1213                                                $('select[name="bbp_forum_visibility"]').val( group_visibility );
     1214                                        }
     1215                                }
     1216                                $(document).ready( function () {
     1217                                        bbpGroupsForums.init();
     1218                                });
     1219                        })(jQuery);
     1220                </script>
     1221        <?php }
     1222
    11551223        /** Permalink Mappers *****************************************************/
    11561224
    11571225        /**