Skip to:
Content

BuddyPress.org

Ticket #8045: 8045.2.group-admin.patch

File 8045.2.group-admin.patch, 7.6 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..0260c25bf 100644
    body.toplevel_page_bp-groups table.groups th#last_active { 
    6363        position: relative;
    6464}
    6565
     66.bp-groups-member-type tr.error td:first-child {
     67        border-left: solid 4px #a00;
     68        font-weight: bold;
     69}
     70
     71.bp-groups-member-type-hide {
     72        display: none;
     73}
     74
    6675.bp-groups-member-type > h4 {
    6776        margin-bottom: 0.5em;
    6877}
  • 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..d169cf3f3 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' }, methodOverride = 'PUT';
     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';
     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 = {};
     34            methodOverride = 'DELETE';
     35        }
     36
     37        wp.apiRequest( {
     38            path: bpGroupsManage.endpoint + '/' + userId,
     39            type: 'POST',
     40            headers: { 'X-HTTP-Method-Override': methodOverride },
     41            data: actionData,
     42            dataType: 'json',
     43            context: 'edit'
     44        } ).done( function( response ) {
     45            currentRole.val( newRole );
     46
     47            if ( response[0] && response[0][ 'is_' + newRole ] ) {
     48                $( '#bp-groups-member-type-' + newRole ).find( 'tr' ).last().after(
     49                    roleSelect.closest( 'tr' )
     50                );
     51            } else if ( 'DELETE' === methodOverride ) {
     52                roleSelect.closest( 'tr' ).remove();
     53            } else {
     54                // Reset the current role.
     55                currentRole.val( 'member' );
     56
     57                // Reset the selected option.
     58                $.each( roleSelect.find( 'option' ), function( o, option ) {
     59                    if ( 'member' === $( option ).val() ) {
     60                        $( option ).prop( 'selected', true );
     61                    } else {
     62                        $( option ).prop( 'selected', false );
     63                    }
     64                } );
     65
     66                $( '#bp-groups-member-type-member' ).find( 'tr' ).last().after(
     67                    roleSelect.closest( 'tr' )
     68                );
     69            }
     70
     71            $.each( $( 'table.bp-group-members tbody' ), function( t, tbody ) {
     72                if ( 1 === parseInt( $( tbody ).find( 'tr' ).length, 10 ) ) {
     73                    $( tbody ).find( 'tr' ).first().removeClass( 'bp-groups-member-type-hide' );
     74                } else {
     75                    $( tbody ).find( 'tr' ).first().addClass( 'bp-groups-member-type-hide' );
     76                }
     77            } );
     78
     79        } ).fail( function( response ) {
     80            roleSelect.closest( 'tr' ).before(
     81                $( '<tr class="error"></tr' ).html( '<td colspan="4">' + response.responseJSON.message + '</td>' )
     82            );
     83
     84            roleSelect.closest( 'tr' ).parent().find( '.error' ).fadeOut( 2000 );
     85        } );
     86    } );
     87
     88} )( jQuery, window.wp || {} );