Skip to:
Content

Changeset 11556


Ignore:
Timestamp:
05/17/2017 06:57:20 PM (13 months ago)
Author:
dcavins
Message:

Update group update form logic to handle slug changes.

Add error cases for handling form input that may include group slug
updates.

See #6014.

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

Legend:

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

    r11416 r11556  
    4646    line-height: 24px;
    4747    color: #666;
     48}
     49#bp-groups-permalink {
     50    margin-left: 24px;
    4851}
    4952.bp-groups-member-type {
  • trunk/src/bp-groups/admin/css/admin.css

    r11416 r11556  
    4646    line-height: 24px;
    4747    color: #666;
     48}
     49#bp-groups-permalink {
     50    margin-right: 24px;
    4851}
    4952.bp-groups-member-type {
  • trunk/src/bp-groups/bp-groups-admin.php

    r11530 r11556  
    237237        $success_new = $error_new = $success_modified = $error_modified = array();
    238238
    239         // Group name and description are handled with
    240         // groups_edit_base_group_details().
    241         if ( !groups_edit_base_group_details( $group_id, $_POST['bp-groups-name'], $_POST['bp-groups-description'], 0 ) ) {
     239        // Name, description and slug must not be empty.
     240        if ( empty( $_POST['bp-groups-name'] ) ) {
     241            $error = $error - 1;
     242        }
     243        if ( empty( $_POST['bp-groups-description'] ) ) {
     244            $error = $error - 2;
     245        }
     246        if ( empty( $_POST['bp-groups-slug'] ) ) {
     247            $error = $error - 4;
     248        }
     249
     250        /*
     251         * Group name, slug, and description are handled with
     252         * groups_edit_base_group_details().
     253         */
     254        if ( ! $error && ! groups_edit_base_group_details( array(
     255                'group_id'       => $group_id,
     256                'name'           => $_POST['bp-groups-name'],
     257                'slug'           => $_POST['bp-groups-slug'],
     258                'description'    => $_POST['bp-groups-description'],
     259                'notify_members' => false,
     260            ) ) ) {
    242261            $error = $group_id;
    243 
    244             // Using negative integers for different error messages... eek!
    245             if ( empty( $_POST['bp-groups-name'] ) && empty( $_POST['bp-groups-description'] ) ) {
    246                 $error = -3;
    247             } elseif ( empty( $_POST['bp-groups-name'] ) ) {
    248                 $error = -1;
    249             } elseif ( empty( $_POST['bp-groups-description'] ) ) {
    250                 $error = -2;
    251             }
    252262        }
    253263
     
    519529
    520530        if ( ! empty( $errors ) ) {
    521             switch ( $errors ) {
    522                 case -1 :
    523                     $messages[] = __( 'Group name cannot be empty.', 'buddypress' );
    524                     break;
    525 
    526                 case -2 :
    527                     $messages[] = __( 'Group description cannot be empty.', 'buddypress' );
    528                     break;
    529 
    530                 case -3 :
    531                     $messages[] = __( 'Group name and description cannot be empty.', 'buddypress' );
    532                     break;
    533 
    534                 default :
    535                     $messages[] = __( 'An error occurred when trying to update your group details.', 'buddypress' );
    536                     break;
     531            if ( $errors < 0 ) {
     532                $messages[] = __( 'Group name, slug, and description are all required fields.', 'buddypress' );
     533            } else {
     534                $messages[] = __( 'An error occurred when trying to update your group details.', 'buddypress' );
    537535            }
    538536
     
    613611                                        <input type="text" name="bp-groups-name" id="bp-groups-name" value="<?php echo esc_attr( stripslashes( $group_name ) ) ?>" />
    614612                                        <div id="bp-groups-permalink-box">
    615                                             <strong><?php esc_html_e( 'Permalink:', 'buddypress' ) ?></strong> <span id="sample-permalink"><?php bp_group_permalink( $group ) ?></span> <a href="<?php echo bp_group_permalink( $group ) ?>" class="button button-small" id="bp-groups-visit-group"><?php esc_html_e( 'Visit Group', 'buddypress' ) ?></a>
     613                                            <strong><?php esc_html_e( 'Permalink:', 'buddypress' ) ?></strong>
     614                                            <span id="bp-groups-permalink">
     615                                                <?php bp_groups_directory_permalink(); ?> <input type="text" id="bp-groups-slug" name="bp-groups-slug" value="<?php bp_group_slug( $group ); ?>" autocomplete="off"> /
     616                                            </span>
     617                                            <a href="<?php echo bp_group_permalink( $group ) ?>" class="button button-small" id="bp-groups-visit-group"><?php esc_html_e( 'Visit Group', 'buddypress' ) ?></a>
    616618                                        </div>
    617619
  • trunk/src/bp-groups/bp-groups-screens.php

    r11529 r11556  
    840840            $group_notify_members = isset( $_POST['group-notify-members'] ) ? (int) $_POST['group-notify-members'] : 0;
    841841
    842             if ( !groups_edit_base_group_details( $_POST['group-id'], $_POST['group-name'], $_POST['group-desc'], $group_notify_members ) ) {
     842            // Name and description are required and may not be empty.
     843            if ( empty( $_POST['group-name'] ) || empty( $_POST['group-desc'] ) ) {
     844                bp_core_add_message( __( 'Groups must have a name and a description. Please try again.', 'buddypress' ), 'error' );
     845            } elseif ( ! groups_edit_base_group_details( array(
     846                'group_id'       => $_POST['group-id'],
     847                'name'           => $_POST['group-name'],
     848                'slug'           => null, // @TODO: Add to settings pane? If yes, editable by site admin only, or allow group admins to do this?
     849                'description'    => $_POST['group-desc'],
     850                'notify_members' => $group_notify_members,
     851            ) ) ) {
    843852                bp_core_add_message( __( 'There was an error updating group details. Please try again.', 'buddypress' ), 'error' );
    844853            } else {
Note: See TracChangeset for help on using the changeset viewer.