Skip to:
Content

BuddyPress.org

Ticket #8045: 8045.group-admin.patch

File 8045.group-admin.patch, 7.2 KB (added by imath, 6 years ago)
  • src/bp-groups/admin/css/admin.css

    diff --git src/bp-groups/admin/css/admin.css src/bp-groups/admin/css/admin.css
    index 0a7887a10..11f2b8bdc 100644
    body.toplevel_page_bp-groups table.groups th#last_active { 
    6363        position: relative;
    6464}
    6565
     66.bp-groups-member-type-hide {
     67        display: none;
     68}
     69
    6670.bp-groups-member-type > h4 {
    6771        margin-bottom: 0.5em;
    6872}
  • src/bp-groups/admin/js/admin.js

    diff --git src/bp-groups/admin/js/admin.js src/bp-groups/admin/js/admin.js
    index 349d77f5e..fec0c88b3 100644
     
    3030                } );
    3131
    3232                /* Warn before leaving unsaved changes */
    33                 $(document).on( 'change', 'input#bp-groups-name, input#bp-groups-description, select.bp-groups-role, #bp-groups-settings-section-status input[type="radio"]', function() {
     33                $(document).on( 'change', 'input#bp-groups-name, input#bp-groups-description, #bp-groups-settings-section-status input[type="radio"]', function() {
    3434                        window.warn_on_leave = true;
    3535                });
    3636
  • src/bp-groups/bp-groups-admin.php

    diff --git src/bp-groups/bp-groups-admin.php src/bp-groups/bp-groups-admin.php
    index 94ef62829..dced9f519 100644
    function bp_groups_admin_load() { 
    153153                // Enqueue JavaScript files.
    154154                wp_enqueue_script( 'postbox' );
    155155                wp_enqueue_script( 'dashboard' );
     156                wp_enqueue_script( 'bp-groups-manage' );
     157                wp_localize_script( 'bp-groups-manage', 'bpGroupsManage', array(
     158                        'endpoint'  => sprintf( '/buddypress/v1/%1$s/%2$d/members', buddypress()->groups->id, $_GET['gid'] ),
     159                ) );
    156160
    157161        // Index screen.
    158162        } else {
    function bp_groups_admin_edit_metabox_members( $item ) { 
    951955                                <?php echo $pagination[ $member_type ] ?>
    952956                        </div>
    953957
    954                 <?php if ( !empty( $type_users ) ) : ?>
    955 
    956958                        <table class="widefat bp-group-members">
    957959                                <thead>
    958960                                        <tr>
    function bp_groups_admin_edit_metabox_members( $item ) { 
    964966
    965967                                <tbody>
    966968
    967                                 <?php foreach ( $type_users as $type_user ) : ?>
     969                                        <tr class="<?php echo empty( $type_users ) ? '' : 'bp-groups-member-type-hide'; ?>">
     970                                                <td scope="row" colspan="3">
     971                                                        <p class="bp-groups-no-members description"><?php esc_html_e( 'No members of this type', 'buddypress' ); ?></p>
     972                                                </td>
     973                                        </tr>
     974
     975                                <?php if ( ! empty( $type_users ) ) : foreach ( $type_users as $type_user ) : ?>
    968976                                        <tr>
    969977                                                <th scope="row" class="uid-column"><?php echo esc_html( $type_user->ID ); ?></th>
    970978
    function bp_groups_admin_edit_metabox_members( $item ) { 
    10301038                                                </tr>
    10311039                                        <?php endif; ?>
    10321040
    1033                                 <?php endforeach; ?>
     1041                                <?php endforeach; endif ?>
    10341042
    10351043                                </tbody>
    10361044                        </table>
    10371045
    1038                 <?php else : ?>
    1039 
    1040                         <p class="bp-groups-no-members description"><?php esc_html_e( 'No members of this type', 'buddypress' ); ?></p>
    1041 
    1042                 <?php endif; ?>
    1043 
    10441046                </div><!-- .bp-groups-member-type -->
    10451047
    10461048        <?php endforeach;
  • src/bp-groups/bp-groups-cssjs.php

    diff --git src/bp-groups/bp-groups-cssjs.php src/bp-groups/bp-groups-cssjs.php
    index e69de29bb..06218c222 100644
     
     1<?php
     2/**
     3 * Groups component CSS/JS
     4 *
     5 * @package BuddyPress
     6 * @subpackage GroupsScripts
     7 * @since 5.0.0
     8 */
     9
     10// Exit if accessed directly.
     11defined( 'ABSPATH' ) || exit;
     12
     13function bp_groups_register_scripts() {
     14    $min = bp_core_get_minified_asset_suffix();
     15
     16    wp_register_script(
     17        'bp-groups-manage',
     18        buddypress()->plugin_url . "bp-groups/js/manage{$min}.js",
     19        array( 'wp-api-request', 'wp-backbone' ),
     20        bp_get_version(),
     21        true
     22    );
     23}
     24add_action( 'bp_init', 'bp_groups_register_scripts' );
  • src/bp-groups/classes/class-bp-groups-component.php

    diff --git src/bp-groups/classes/class-bp-groups-component.php src/bp-groups/classes/class-bp-groups-component.php
    index f7d45658d..d35f14454 100644
    class BP_Groups_Component extends BP_Component { 
    128128                        'template',
    129129                        'adminbar',
    130130                        'functions',
    131                         'notifications'
     131                        'notifications',
     132                        'cssjs'
    132133                );
    133134
    134135                // Conditional includes.
  • src/bp-groups/js/manage.js

    diff --git src/bp-groups/js/manage.js src/bp-groups/js/manage.js
    index e69de29bb..ef5dd1245 100644
     
     1/**
     2 * Manage Group script.
     3 */
     4
     5 /* global bpGroupsManage */
     6
     7( function( $, wp ) {
     8    if ( 'undefined' === typeof bpGroupsManage || ! bpGroupsManage.endpoint  ) {
     9                return;
     10    }
     11
     12    $( '#bp_group_members' ).on( 'change', '.bp-groups-role', function( event ) {
     13        var roleSelect = $( event.target ), userId = parseInt( roleSelect.prop( 'id' ).replace( 'bp-groups-role-', '' ), 10 ),
     14            newRole = roleSelect.val(), currentRole = $( event.target ).parent().find( '[type="hidden"]' ).first(),
     15            actionData = { action: 'promote' };
     16
     17        if ( currentRole === newRole ) {
     18            return;
     19        }
     20
     21        // Set the new role.
     22        actionData.role = newRole;
     23
     24        if ( 'admin' === currentRole.val() || ( 'mod' === currentRole.val() && 'member' === newRole ) ) {
     25            actionData = { action: 'demote', role: 'member' };
     26        }
     27
     28        if ( 'banned' === newRole ) {
     29            actionData = { action: 'ban' };
     30        } else if ( 'banned' === currentRole.val() ) {
     31            actionData = { action: 'unban' };
     32        } else if ( 'remove' === newRole ) {
     33            actionData = { action: 'remove' };
     34        }
     35
     36        wp.apiRequest( {
     37            path: bpGroupsManage.endpoint + '/' + userId,
     38            type: 'POST',
     39            data: actionData,
     40            dataType: 'json',
     41            context: 'edit'
     42        } ).done( function( response ) {
     43            currentRole.val( newRole );
     44
     45            if ( response[0] && response[0][ 'is_' + newRole ] ) {
     46                $( '#bp-groups-member-type-' + newRole ).find( 'tr' ).last().after(
     47                    roleSelect.closest( 'tr' )
     48                );
     49            } else if ( 'remove' === actionData.action ) {
     50                roleSelect.closest( 'tr' ).remove();
     51            } else {
     52                // Reset the current role.
     53                currentRole.val( 'member' );
     54
     55                // Reset the selected option.
     56                $.each( roleSelect.find( 'option' ), function( o, option ) {
     57                    if ( 'member' === $( option ).val() ) {
     58                        $( option ).prop( 'selected', true );
     59                    } else {
     60                        $( option ).prop( 'selected', false );
     61                    }
     62                } );
     63
     64                $( '#bp-groups-member-type-member' ).find( 'tr' ).last().after(
     65                    roleSelect.closest( 'tr' )
     66                );
     67            }
     68
     69            $.each( $( 'table.bp-group-members tbody' ), function( t, tbody ) {
     70                if ( 1 === parseInt( $( tbody ).find( 'tr' ).length, 10 ) ) {
     71                    $( tbody ).find( 'tr' ).first().removeClass( 'bp-groups-member-type-hide' );
     72                } else {
     73                    $( tbody ).find( 'tr' ).first().addClass( 'bp-groups-member-type-hide' );
     74                }
     75            } );
     76
     77        } ).fail( function( response ) {
     78            console.log( response );
     79        } );
     80    } );
     81
     82} )( jQuery, window.wp || {} );