diff --git a/lib/Drupal/profile2/ProfileFormController.php b/lib/Drupal/profile2/ProfileFormController.php index ad39ef5..5e7dd36 100644 --- a/lib/Drupal/profile2/ProfileFormController.php +++ b/lib/Drupal/profile2/ProfileFormController.php @@ -45,7 +45,8 @@ class ProfileFormController extends EntityFormController { * Overrides Drupal\Core\Entity\EntityFormController::delete(). */ public function delete(array $form, array &$form_state) { - // @todo Add delete confirmation form. + $profile = $this->getEntity($form_state); + $form_state['redirect'] = 'user/' . $profile->uid . '/edit/' . $profile->bundle() . '/delete'; } } diff --git a/profile2.module b/profile2.module index 7cf9505..bcc5e25 100644 --- a/profile2.module +++ b/profile2.module @@ -161,6 +161,16 @@ function profile2_menu() { 'page arguments' => array(3), 'type' => MENU_LOCAL_TASK, ); + $items['user/%user/edit/%profile2_menu/delete'] = array( + 'load arguments' => array('%map', 'edit'), + 'title' => 'Delete profile', + 'access callback' => 'profile2_profile_edit_access', + 'access arguments' => array(3), + 'page callback' => 'drupal_get_form', + 'page arguments' => array('profile2_delete_confirm_form', 3), + 'type' => MENU_CALLBACK, + 'file' => 'profile2.pages.inc', + ); return $items; } diff --git a/profile2.pages.inc b/profile2.pages.inc new file mode 100644 index 0000000..4ba9bec --- /dev/null +++ b/profile2.pages.inc @@ -0,0 +1,28 @@ + $profile->label())); + $uri = $profile->uri(); + return confirm_form($form, $confirm_question, $uri['path']); +} + +/** + * Submit handler for deleting a profile. + */ +function profile2_delete_confirm_form_submit(array $form, array &$form_state) { + $uri = entity_load('user', $form_state['profile']->uid)->uri(); + $form_state['profile']->delete(); + drupal_set_message(t('Deleted %label.', array('%label' => $form_state['profile']->label()))); + $form_state['redirect'] = $uri['path']; +}