Skip to:
Content

BuddyPress.org

Changeset 12660


Ignore:
Timestamp:
05/30/2020 09:26:01 AM (6 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.