summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--includes/common.inc21
-rw-r--r--modules/comment/comment.module6
-rw-r--r--modules/menu/menu.module5
-rw-r--r--modules/node/node.module5
-rw-r--r--modules/path/path.module5
-rw-r--r--modules/system/system.module34
-rw-r--r--modules/user/user.module9
7 files changed, 45 insertions, 40 deletions
diff --git a/includes/common.inc b/includes/common.inc
index c371d40d8..2afa0dbee 100644
--- a/includes/common.inc
+++ b/includes/common.inc
@@ -2912,9 +2912,9 @@ function drupal_delete_add_query($query) {
*
* @param $confirm
* An associative array with the following key/value pairs:
- * 'form' => Optional. An array representing the form elements to pass to the confirm form.
- * 'question' => Optional. The question for the confirm form.
- * 'path' => Optional. The cancellation path for the confirm form.
+ * 'form' => Optional. An array representing the form elements to pass to the confirm form.
+ * 'question' => Optional. The question for the confirm form.
+ * 'destination' => Optional. The destination path for form submissions and form cancellations.
*
* Also, any valid options from the $options argument of confirm_form() may be passed,
* and they will be passed through to the confirm form.
@@ -2922,9 +2922,8 @@ function drupal_delete_add_query($query) {
* array(
* 'form' => $form,
* 'question' => t('Are you sure you want to delete these items?'),
- * 'path' => 'admin/content/node',
- * 'yes' => t('Delete all'),
* 'destination' => 'admin/content/node',
+ * 'yes' => t('Delete all'),
* )
* );
*/
@@ -3142,8 +3141,8 @@ function _drupal_delete($op, $id = '') {
// Generate the confirm form if any packages remain.
if ($count) {
$question = isset($args['question']) ? $args['question'] : t('Delete the item?');
- $path = isset($args['path']) ? $args['path'] : 'node';
- unset($args['question'], $args['path']);
+ $path = isset($args['destination']) ? $args['destination'] : '<front>';
+ unset($args['question'], $args['destination']);
$args['name'] = 'delete';
// Submit handler - triggers execute operation for the API.
$form['#submit'] = array('delete_confirm_submit');
@@ -3154,12 +3153,12 @@ function _drupal_delete($op, $id = '') {
drupal_goto($abort_destination);
}
// Fallback to cancel path.
- elseif (isset($args['path'])) {
- drupal_goto($args['path']);
+ elseif (isset($args['cancel'])) {
+ drupal_goto($args['cancel']);
}
- // Last fallback, front page.
+ // Last fallback, submit destination.
else {
- drupal_goto('<front>');
+ drupal_goto($path);
}
}
}
diff --git a/modules/comment/comment.module b/modules/comment/comment.module
index d12798c59..e65f88095 100644
--- a/modules/comment/comment.module
+++ b/modules/comment/comment.module
@@ -1114,9 +1114,8 @@ function comment_delete(&$form_state, $cid = NULL) {
return drupal_delete_confirm(
array(
'question' => t('Are you sure you want to delete the comment %title?', array('%title' => $comment->subject)),
- 'path' => 'node/'. $comment->nid,
- 'description' => t('Any replies to this comment will be lost. This action cannot be undone.'),
'destination' => 'node/'. $comment->nid,
+ 'description' => t('Any replies to this comment will be lost. This action cannot be undone.'),
)
);
}
@@ -1344,9 +1343,8 @@ function comment_multiple_delete_confirm(&$form_state) {
array(
'form' => $form,
'question' => t('Are you sure you want to delete these comments and all their children?'),
- 'path' => 'admin/content/comment',
- 'yes' => t('Delete all'),
'destination' => 'admin/content/comment',
+ 'yes' => t('Delete all'),
)
);
}
diff --git a/modules/menu/menu.module b/modules/menu/menu.module
index 424d9d75a..a8ad367e9 100644
--- a/modules/menu/menu.module
+++ b/modules/menu/menu.module
@@ -488,10 +488,11 @@ function menu_reset_item(&$form_state, $mlid) {
$options = array(
'description' => t('Any customizations will be lost. This action cannot be undone.'),
- 'yes' => t('Reset')
+ 'yes' => t('Reset'),
+ 'cancel' => 'admin/build/menu',
);
- return confirm_form($form, t('Are you sure you want to reset the item %item to its default values?', array('%item' => $item['link_title'])), 'admin/build/menu', $options);
+ return confirm_form($form, t('Are you sure you want to reset the item %item to its default values?', array('%item' => $item['link_title'])), 'admin/build/menu/navigation', $options);
}
else {
drupal_not_found();
diff --git a/modules/node/node.module b/modules/node/node.module
index 6463a7f81..ccc34ae98 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1743,9 +1743,8 @@ function node_multiple_delete_confirm(&$form_state) {
array(
'form' => $form,
'question' => t('Are you sure you want to delete these items?'),
- 'path' => 'admin/content/node',
- 'yes' => t('Delete all'),
'destination' => 'admin/content/node',
+ 'yes' => t('Delete all'),
)
);
}
@@ -2443,7 +2442,7 @@ function node_delete_confirm(&$form_state, $node) {
return drupal_delete_confirm(
array(
'question' => t('Are you sure you want to delete %title?', array('%title' => $node->title)),
- 'path' => isset($_GET['destination']) ? $_GET['destination'] : 'node/'. $node->nid,
+ 'cancel' => isset($_GET['destination']) ? $_GET['destination'] : 'node/'. $node->nid,
'destination' => isset($_GET['destination']) ? $_GET['destination'] : '<front>',
)
);
diff --git a/modules/path/path.module b/modules/path/path.module
index 5a663e77b..d822f7ab7 100644
--- a/modules/path/path.module
+++ b/modules/path/path.module
@@ -90,13 +90,14 @@ function path_admin_edit($pid = 0) {
/**
* Menu callback; confirms deleting an URL alias
**/
-function path_admin_delete_confirm($pid) {
+function path_admin_delete_confirm(&$form_state, $pid) {
$path = path_load($pid);
if (user_access('administer url aliases')) {
$form['pid'] = array('#type' => 'value', '#value' => $pid);
+ $options = array('cancel' => isset($_GET['destination']) ? $_GET['destination'] : 'admin/build/path');
$output = confirm_form($form,
t('Are you sure you want to delete path alias %title?', array('%title' => $path['dst'])),
- isset($_GET['destination']) ? $_GET['destination'] : 'admin/build/path');
+ 'admin/build/path', $options);
}
return $output;
}
diff --git a/modules/system/system.module b/modules/system/system.module
index 2d1f019ae..8ce30d292 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2426,9 +2426,11 @@ function system_node_type($op, $info) {
* @param $question
* The question to ask the user (e.g. "Are you sure you want to delete the
* block <em>foo</em>?").
- * @param $path
- * The page to go to if the user denies the action.
- * Can be either a Drupal path, or an array with the keys 'path', 'query', 'fragment'.
+ * @param $destination
+ * The page to go to if the confirm form is submitted, or the action is cancelled.
+ * The value can be either a Drupal path, or an array with the keys 'path', 'query', 'fragment'.
+ *
+ * Note: If a custom submit handler is being used, return the destination from the handler.
* @param $options
* An associative array of options, with the following key/value pairs:
* 'description' => Additional text to display.
@@ -2439,37 +2441,39 @@ function system_node_type($op, $info) {
* Default is "Cancel".
* 'name' => The internal name used to refer to the confirmation item.
* Default is "confirm".
- * 'destination' => A destination page to go to after form submission -- the value can
- * be of any form of the $goto argument accepted by drupal_redirect().
+ * 'cancel' => Set a custom path for cancelling the form, -- can be either a Drupal path,
+ * or an array with the keys 'path', 'query', 'fragment'.
*
* @return
* The form.
*/
-function confirm_form($form, $question, $path, $options = array()) {
+function confirm_form($form, $question, $destination, $options = array()) {
$description = isset($options['description']) ? $options['description'] : t('This action cannot be undone.');
$name = isset($options['name']) ? $options['name'] : 'confirm';
+ $cancel = isset($options['cancel']) ? $options['cancel'] : $destination;
// Prepare cancel link
$query = $fragment = NULL;
- if (is_array($path)) {
- $query = isset($path['query']) ? $path['query'] : NULL;
- $fragment = isset($path['fragment']) ? $path['fragment'] : NULL;
- $path = isset($path['path']) ? $path['path'] : NULL;
+ if (is_array($cancel)) {
+ $query = isset($cancel['query']) ? $cancel['query'] : NULL;
+ $fragment = isset($cancel['fragment']) ? $cancel['fragment'] : NULL;
+ $path = isset($cancel['path']) ? $cancel['path'] : NULL;
+ }
+ else {
+ $path = $cancel;
}
- $cancel = l(isset($options['no']) ? $options['no'] : t('Cancel'), $path, array('query' => $query, 'fragment' => $fragment));
+ $cancel_link = l(isset($options['no']) ? $options['no'] : t('Cancel'), $path, array('query' => $query, 'fragment' => $fragment));
drupal_set_title($question);
$form['#attributes'] = array('class' => 'confirmation');
$form['description'] = array('#value' => $description);
$form[$name] = array('#type' => 'hidden', '#value' => 1);
- if (isset($options['destination'])) {
- $form['destination'] = array('#type' => 'value', '#value' => $options['destination']);
- }
+ $form['destination'] = array('#type' => 'value', '#value' => $destination);
$form['actions'] = array('#prefix' => '<div class="container-inline">', '#suffix' => '</div>');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => isset($options['yes']) ? $options['yes'] : t('Delete'));
- $form['actions']['cancel'] = array('#value' => $cancel);
+ $form['actions']['cancel'] = array('#value' => $cancel_link);
$form['#theme'] = 'confirm_form';
return $form;
diff --git a/modules/user/user.module b/modules/user/user.module
index 0f95e10d1..7918f09c3 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -1621,12 +1621,15 @@ function user_edit($form_state, $category = 'account') {
return $form;
}
-function user_confirm_delete($name, $uid) {
- $options = array('description' => t('All submissions made by this user will be attributed to the anonymous account. This action cannot be undone.'));
+function user_confirm_delete(&$form_state, $name, $uid) {
+ $options = array(
+ 'description' => t('All submissions made by this user will be attributed to the anonymous account. This action cannot be undone.'),
+ 'cancel' => 'user/'. $uid,
+ );
return confirm_form(array(),
t('Are you sure you want to delete the account %name?', array('%name' => $name)),
- 'user/'. $uid,
+ 'admin/user/user',
$options);
}