Skip to:
Content

BuddyPress.org

Changeset 12660


Ignore:
Timestamp:
05/30/2020 09:26:01 AM (5 years ago)
Author:
imath
Message:

xProfile Group Admin: add confirmation screen for the delete action

Props oztaser

Fixes #8305

Location:
trunk/src/bp-xprofile
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-xprofile/admin/css/admin-rtl.css

    r12136 r12660  
    323323}
    324324
     325ul.bp-xprofile-delete-group-list {
     326    list-style-type: disc;
     327    margin: 4px 26px;
     328}
     329
     330
    325331@media screen and (max-width: 782px) {
    326332
  • trunk/src/bp-xprofile/admin/css/admin.css

    r12136 r12660  
    323323}
    324324
     325ul.bp-xprofile-delete-group-list {
     326    list-style-type: disc;
     327    margin: 4px 26px;
     328}
     329
     330
    325331@media screen and (max-width: 782px) {
    326332
  • trunk/src/bp-xprofile/bp-xprofile-admin.php

    r12624 r12660  
    6666        'edit_group',
    6767        'delete_group',
     68        'do_delete_group',
    6869        'add_field',
    6970        'edit_field',
     
    8788
    8889            // Delete group.
    89             } elseif ( 'delete_group' === $mode ) {
     90            } elseif ( in_array( $mode, array( 'delete_group', 'do_delete_group' ), true ) ) {
    9091                xprofile_admin_delete_group( $group_id );
    9192
     
    404405    check_admin_referer( 'bp_xprofile_delete_group' );
    405406
     407    $mode = ! empty( $_GET['mode'] )
     408          ? sanitize_key( $_GET['mode'] )
     409          : false;
     410
     411    // Display the group delete confirmation screen.
     412    if ( 'delete_group' === $mode ) {
     413        xprofile_admin_delete_group_screen( $group_id );
     414
     415    // Handle the deletion of group.
     416    } else {
     417        $group = new BP_XProfile_Group( $group_id );
     418
     419        if ( ! $group->delete() ) {
     420            $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' );
     421            $type    = 'error';
     422        } else {
     423            $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' );
     424            $type    = 'success';
     425
     426            /**
     427             * Fires at the end of group deletion process, if successful.
     428             *
     429             * @since 1.0.0
     430             *
     431             * @param BP_XProfile_Group $group Current BP_XProfile_Group object.
     432             */
     433            do_action( 'xprofile_groups_deleted_group', $group );
     434        }
     435
     436        xprofile_admin_screen( $message, $type );
     437    }
     438}
     439
     440/**
     441 * Display the delete confirmation screen of profile data groups.
     442 *
     443 * @since 7.0.0
     444 */
     445function xprofile_admin_delete_group_screen( $group_id ) {
     446
     447    if ( ! bp_current_user_can( 'bp_moderate' ) ) {
     448        die( '-1' );
     449    }
     450
    406451    $group = new BP_XProfile_Group( $group_id );
    407452
    408     if ( !$group->delete() ) {
    409         $message = _x( 'There was an error deleting the group. Please try again.', 'Error when deleting profile fields group', 'buddypress' );
    410         $type    = 'error';
    411     } else {
    412         $message = _x( 'The group was deleted successfully.', 'Profile fields group was deleted successfully', 'buddypress' );
    413         $type    = 'success';
    414 
    415         /**
    416          * Fires at the end of group deletion process, if successful.
    417          *
    418          * @since 1.0.0
    419          *
    420          * @param BP_XProfile_Group $group Current BP_XProfile_Group object.
    421          */
    422         do_action( 'xprofile_groups_deleted_group', $group );
    423     }
    424 
    425     xprofile_admin_screen( $message, $type );
     453    $base_url = remove_query_arg( array( 'mode', 'group_id', '_wpnonce' ), $_SERVER['REQUEST_URI'] ); ?>
     454
     455    <div class="wrap">
     456        <h1><?php esc_html_e( 'Delete Field Group', 'buddypress' ) ?></h1>
     457        <p><?php esc_html_e( 'You are about to delete the following field group:', 'buddypress' ) ?></p>
     458
     459        <ul class="bp-xprofile-delete-group-list">
     460            <li><?php echo esc_html( $group->name ); ?></li>
     461        </ul>
     462
     463        <p><strong><?php esc_html_e( 'This action cannot be undone.', 'buddypress' ) ?></strong></p>
     464
     465        <a class="button-primary" href="<?php echo esc_url( wp_nonce_url( add_query_arg( array( 'mode' => 'do_delete_group', 'group_id' => $group_id ), $base_url ), 'bp_xprofile_delete_group' ) ); ?>"><?php esc_html_e( 'Delete Permanently', 'buddypress' ) ?></a>
     466        <a class="button" href="<?php echo esc_attr( $base_url ); ?>"><?php esc_html_e( 'Cancel', 'buddypress' ) ?></a>
     467    </div>
     468
     469    <?php
    426470}
    427471
  • trunk/src/bp-xprofile/classes/class-bp-xprofile-group.php

    r12534 r12660  
    832832                'group_id' => (int) $this->id
    833833            ), $users_url );
     834
     835            if ( $this->can_delete ) {
     836                // Delete Group URL.
     837                $delete_url = wp_nonce_url( add_query_arg( array(
     838                    'page'     => 'bp-profile-setup',
     839                    'mode'     => 'delete_group',
     840                    'group_id' => (int) $this->id
     841                ), $users_url ), 'bp_xprofile_delete_group' );
     842            }
    834843        } ?>
    835844
     
    894903
    895904                            <div id="submitdiv" class="postbox">
    896                                 <h2><?php _e( 'Submit', 'buddypress' ); ?></h2>
     905                                <h2><?php esc_html_e( 'Submit', 'buddypress' ); ?></h2>
    897906                                <div class="inside">
    898907                                    <div id="submitcomment" class="submitbox">
     
    918927                                            </div>
    919928                                            <div id="delete-action">
    920                                                 <a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php _e( 'Cancel', 'buddypress' ); ?></a>
     929                                                <?php if ( ! empty( $this->id ) && isset( $delete_url ) ) : ?>
     930                                                    <a href="<?php echo esc_url( $delete_url ); ?>" class="submitdelete deletion"><?php esc_html_e( 'Delete Group', 'buddypress' ); ?></a>
     931                                                <?php endif; ?>
     932
     933                                                <div><a href="<?php echo esc_url( $cancel_url ); ?>" class="deletion"><?php esc_html_e( 'Cancel', 'buddypress' ); ?></a></div>
    921934                                            </div>
    922935                                            <div class="clear"></div>
Note: See TracChangeset for help on using the changeset viewer.