diff options
-rw-r--r-- | includes/theme.inc | 51 | ||||
-rw-r--r-- | modules/block.module | 24 | ||||
-rw-r--r-- | modules/block/block.module | 24 | ||||
-rw-r--r-- | modules/comment.module | 14 | ||||
-rw-r--r-- | modules/comment/comment.module | 14 | ||||
-rw-r--r-- | modules/filter.module | 17 | ||||
-rw-r--r-- | modules/filter/filter.module | 17 | ||||
-rw-r--r-- | modules/forum.module | 17 | ||||
-rw-r--r-- | modules/forum/forum.module | 17 | ||||
-rw-r--r-- | modules/locale.module | 78 | ||||
-rw-r--r-- | modules/locale/locale.module | 78 | ||||
-rw-r--r-- | modules/menu.module | 47 | ||||
-rw-r--r-- | modules/menu/menu.module | 47 | ||||
-rw-r--r-- | modules/node.module | 56 | ||||
-rw-r--r-- | modules/node/node.module | 56 | ||||
-rw-r--r-- | modules/taxonomy.module | 31 | ||||
-rw-r--r-- | modules/taxonomy/taxonomy.module | 31 | ||||
-rw-r--r-- | modules/user.module | 39 | ||||
-rw-r--r-- | modules/user/user.module | 39 |
19 files changed, 455 insertions, 242 deletions
diff --git a/includes/theme.inc b/includes/theme.inc index c2698aef4..775ed941a 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -849,6 +849,57 @@ function theme_blocks($region) { } return $output; } + +/** + * Output a confirmation form + * + * This function outputs a complete form for confirming an action. A link is + * offered to go back to the item that is being changed in case the user changes + * his/her mind. + * + * You should use $_POST['edit'][$name] (where $name is usually 'confirm') to + * check if the confirmation was succesful. + * + * @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. + * @param $description + * Additional text to display (defaults to "This action cannot be undone."). + * @param $yes + * A caption for the button which confirms the action (e.g. "Delete", + * "Replace", ...). + * @param $no + * A caption for the link which denies the action (e.g. "Cancel"). + * @param $extra + * Additional HTML to inject into the form, for example form_hidden()s. + * @param $name + * The internal name used to refer to the confirmation item. + * @return + * A themed HTML string representing the form. + */ +function theme_confirm($question, $path, $description = NULL, $yes = NULL, $no = NULL, $extra = NULL, $name = 'confirm') { + drupal_set_title($question); + + if (is_null($description)) { + $description = t('This action cannot be undone.'); + } + + $output .= '<p>'. $description ."</p>\n"; + if (!is_null($extra)) { + $output .= $extra; + } + $output .= '<div class="container-inline">'; + $output .= form_submit($yes ? $yes : t('Confirm')); + $output .= l($no ? $no : t('Cancel'), $path); + $output .= "</div>\n"; + + $output .= form_hidden($name, 1); + return form($output, 'post', NULL, array('class' => 'confirmation')); +} + + /** * @} End of "defgroup themeable". */ diff --git a/modules/block.module b/modules/block.module index 495135941..359a78e6c 100644 --- a/modules/block.module +++ b/modules/block.module @@ -312,18 +312,20 @@ function block_box_add() { function block_box_delete($bid = 0) { $op = $_POST['op']; $box = block_box_get($bid); + $info = $box['info'] ? $box['info'] : $box['title']; - switch ($op) { - case t('Delete'): - db_query('DELETE FROM {boxes} WHERE bid = %d', $bid); - drupal_set_message(t('The block %name has been deleted.', array('%name' => '<em>'. $box['info'] .'</em>'))); - cache_clear_all(); - drupal_goto('admin/block'); - - default: - $form = '<p>'. t('Are you sure you want to delete the block %name?', array('%name' => '<em>'. $box['info'] .'</em>')) ."</p>\n"; - $form .= form_submit(t('Delete')); - $output = form($form); + if ($_POST['edit']['confirm']) { + db_query('DELETE FROM {boxes} WHERE bid = %d', $bid); + drupal_set_message(t('The block %name has been deleted.', array('%name' => '<em>'. $info .'</em>'))); + cache_clear_all(); + drupal_goto('admin/block'); + } + else { + $output = theme('confirm', + t('Are you sure you want to delete the block %name?', array('%name' => '<em>'. $info .'</em>')), + 'admin/block', + NULL, + t('Delete')); } print theme('page', $output); diff --git a/modules/block/block.module b/modules/block/block.module index 495135941..359a78e6c 100644 --- a/modules/block/block.module +++ b/modules/block/block.module @@ -312,18 +312,20 @@ function block_box_add() { function block_box_delete($bid = 0) { $op = $_POST['op']; $box = block_box_get($bid); + $info = $box['info'] ? $box['info'] : $box['title']; - switch ($op) { - case t('Delete'): - db_query('DELETE FROM {boxes} WHERE bid = %d', $bid); - drupal_set_message(t('The block %name has been deleted.', array('%name' => '<em>'. $box['info'] .'</em>'))); - cache_clear_all(); - drupal_goto('admin/block'); - - default: - $form = '<p>'. t('Are you sure you want to delete the block %name?', array('%name' => '<em>'. $box['info'] .'</em>')) ."</p>\n"; - $form .= form_submit(t('Delete')); - $output = form($form); + if ($_POST['edit']['confirm']) { + db_query('DELETE FROM {boxes} WHERE bid = %d', $bid); + drupal_set_message(t('The block %name has been deleted.', array('%name' => '<em>'. $info .'</em>'))); + cache_clear_all(); + drupal_goto('admin/block'); + } + else { + $output = theme('confirm', + t('Are you sure you want to delete the block %name?', array('%name' => '<em>'. $info .'</em>')), + 'admin/block', + NULL, + t('Delete')); } print theme('page', $output); diff --git a/modules/comment.module b/modules/comment.module index 7c8098b7c..2735c0ab5 100644 --- a/modules/comment.module +++ b/modules/comment.module @@ -951,7 +951,7 @@ function comment_delete($cid) { // We'll only delete if the user has confirmed the // deletion using the form in our else clause below. - if ($comment->cid && $_POST['op'] == t('Delete')) { + if ($comment->cid && $_POST['edit']['confirm']) { drupal_set_message(t('The comment and all its replies have been deleted.')); // Delete comment and its replies. @@ -966,11 +966,15 @@ function comment_delete($cid) { } else if ($comment->cid) { - drupal_set_message(t('Do you want to delete this comment and all its replies?')); + $output = theme('confirm', + t('Are you sure you want to delete the comment %title?', array('%title' => '<em>'. $comment->subject .'</em>')), + 'node/'. $comment->nid, + t('Any replies to this comment will be lost. This action cannot be undone.'), + t('Delete')); + // Show comment that is being deleted $comment->comment = check_output($comment->comment, $comment->format); - $output = theme('comment', $comment); - $output .= form_submit(t('Delete')); - $output = form($output); + $output .= theme('comment', $comment); + } else { drupal_set_message(t('The comment no longer exists.')); diff --git a/modules/comment/comment.module b/modules/comment/comment.module index 7c8098b7c..2735c0ab5 100644 --- a/modules/comment/comment.module +++ b/modules/comment/comment.module @@ -951,7 +951,7 @@ function comment_delete($cid) { // We'll only delete if the user has confirmed the // deletion using the form in our else clause below. - if ($comment->cid && $_POST['op'] == t('Delete')) { + if ($comment->cid && $_POST['edit']['confirm']) { drupal_set_message(t('The comment and all its replies have been deleted.')); // Delete comment and its replies. @@ -966,11 +966,15 @@ function comment_delete($cid) { } else if ($comment->cid) { - drupal_set_message(t('Do you want to delete this comment and all its replies?')); + $output = theme('confirm', + t('Are you sure you want to delete the comment %title?', array('%title' => '<em>'. $comment->subject .'</em>')), + 'node/'. $comment->nid, + t('Any replies to this comment will be lost. This action cannot be undone.'), + t('Delete')); + // Show comment that is being deleted $comment->comment = check_output($comment->comment, $comment->format); - $output = theme('comment', $comment); - $output .= form_submit(t('Delete')); - $output = form($output); + $output .= theme('comment', $comment); + } else { drupal_set_message(t('The comment no longer exists.')); diff --git a/modules/filter.module b/modules/filter.module index 9b618208d..f1408c945 100644 --- a/modules/filter.module +++ b/modules/filter.module @@ -377,7 +377,7 @@ function filter_admin_add() { */ function filter_admin_delete() { $edit = $_POST['edit']; - if ($_POST['op'] == t('Delete')) { + if ($edit['confirm']) { if ($edit['format'] != variable_get('filter_default_format', 1)) { db_query("DELETE FROM {filter_formats} WHERE format = %d", $edit['format']); db_query("DELETE FROM {filters} WHERE format = %d", $edit['format']); @@ -397,11 +397,16 @@ function filter_admin_delete() { $format = arg(3); $format = db_fetch_object(db_query('SELECT * FROM {filter_formats} WHERE format = %d', $format)); - $form .= form_hidden('format', $format->format); - $form .= form_hidden('name', $format->name); - $form .= '<p>'. t('Are you sure you want to delete the input format %format? If you have any content left in this input format, it will be switched to the default input format.', array('%format' => '<em>'. $format->name .'</em>')) ."</p>\n"; - $form .= form_submit(t('Delete')); - print theme('page', form($form)); + $extra = form_hidden('format', $format->format); + $extra .= form_hidden('name', $format->name); + $output = theme('confirm', + t('Are you sure you want to delete the input format %format?', array('%format' => '<em>'. $format->name .'</em>')), + 'admin/filters', + t('If you have any content left in this input format, it will be switched to the default input format. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/filter/filter.module b/modules/filter/filter.module index 9b618208d..f1408c945 100644 --- a/modules/filter/filter.module +++ b/modules/filter/filter.module @@ -377,7 +377,7 @@ function filter_admin_add() { */ function filter_admin_delete() { $edit = $_POST['edit']; - if ($_POST['op'] == t('Delete')) { + if ($edit['confirm']) { if ($edit['format'] != variable_get('filter_default_format', 1)) { db_query("DELETE FROM {filter_formats} WHERE format = %d", $edit['format']); db_query("DELETE FROM {filters} WHERE format = %d", $edit['format']); @@ -397,11 +397,16 @@ function filter_admin_delete() { $format = arg(3); $format = db_fetch_object(db_query('SELECT * FROM {filter_formats} WHERE format = %d', $format)); - $form .= form_hidden('format', $format->format); - $form .= form_hidden('name', $format->name); - $form .= '<p>'. t('Are you sure you want to delete the input format %format? If you have any content left in this input format, it will be switched to the default input format.', array('%format' => '<em>'. $format->name .'</em>')) ."</p>\n"; - $form .= form_submit(t('Delete')); - print theme('page', form($form)); + $extra = form_hidden('format', $format->format); + $extra .= form_hidden('name', $format->name); + $output = theme('confirm', + t('Are you sure you want to delete the input format %format?', array('%format' => '<em>'. $format->name .'</em>')), + 'admin/filters', + t('If you have any content left in this input format, it will be switched to the default input format. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/forum.module b/modules/forum.module index 77a4d82e5..06ed9b38a 100644 --- a/modules/forum.module +++ b/modules/forum.module @@ -126,14 +126,17 @@ function forum_taxonomy($op, $type, $object) { * @param $tid ID of the term to be deleted */ function _forum_confirm_del($tid) { - $term = taxonomy_get_term($tid); - - $form .= form_hidden('confirm', 1); - $form .= form_hidden('tid', $tid); - $form .= form_submit(t('Delete')); - $form .= form_submit(t('Cancel')); + $term = taxonomy_get_term($tid); - return form(form_item(t('Delete "%name"', array('%name' => $term->name)), $form, t('Deleteing a forum or container will delete all sub-forums as well. Are you sure you want to delete?'))); + $extra = form_hidden('tid', $tid); + $output = theme('confirm', + t('Are you sure you want to delete the forum %name?', array('%name' => '<em>'. $term->name .'</em>')), + 'admin/forums', + t('Deleting a forum or container will delete all sub-forums as well. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/forum/forum.module b/modules/forum/forum.module index 77a4d82e5..06ed9b38a 100644 --- a/modules/forum/forum.module +++ b/modules/forum/forum.module @@ -126,14 +126,17 @@ function forum_taxonomy($op, $type, $object) { * @param $tid ID of the term to be deleted */ function _forum_confirm_del($tid) { - $term = taxonomy_get_term($tid); - - $form .= form_hidden('confirm', 1); - $form .= form_hidden('tid', $tid); - $form .= form_submit(t('Delete')); - $form .= form_submit(t('Cancel')); + $term = taxonomy_get_term($tid); - return form(form_item(t('Delete "%name"', array('%name' => $term->name)), $form, t('Deleteing a forum or container will delete all sub-forums as well. Are you sure you want to delete?'))); + $extra = form_hidden('tid', $tid); + $output = theme('confirm', + t('Are you sure you want to delete the forum %name?', array('%name' => '<em>'. $term->name .'</em>')), + 'admin/forums', + t('Deleting a forum or container will delete all sub-forums as well. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/locale.module b/modules/locale.module index f9c6da115..3f31ff755 100644 --- a/modules/locale.module +++ b/modules/locale.module @@ -260,44 +260,28 @@ function locale_admin_manage() { include_once 'includes/locale.inc'; $edit = &$_POST['edit']; - switch ($_POST['op']) { + if ($_POST['op'] == t('Save configuration')) { // Save changes to existing languages - case t('Save configuration'): - $languages = locale_supported_languages(FALSE, TRUE); - foreach($languages['name'] as $key => $value) { - if ($edit['sitedefault'] == $key) { - $edit['enabled'][$key] = 1; // autoenable the default language - } - if ($key == 'en') { - // Disallow name change for English locale - db_query("UPDATE {locales_meta} SET isdefault = %d, enabled = %d WHERE locale = 'en'", ($edit['sitedefault'] == $key), $edit['enabled'][$key]); - } - else { - db_query("UPDATE {locales_meta} SET name = '%s', isdefault = %d, enabled = %d WHERE locale = '%s'", $edit['name'][$key], ($edit['sitedefault'] == $key), $edit['enabled'][$key], $key); - } + $languages = locale_supported_languages(FALSE, TRUE); + foreach($languages['name'] as $key => $value) { + if ($edit['sitedefault'] == $key) { + $edit['enabled'][$key] = 1; // autoenable the default language } - - // Changing the locale settings impacts the interface: - cache_clear_all(); - - break; - - // Remove existing language - case t('Delete'): - $languages = locale_supported_languages(FALSE, TRUE); - if (isset($languages['name'][$edit['langcode']])) { - db_query("DELETE FROM {locales_meta} WHERE locale = '%s'", $edit['langcode']); - db_query("DELETE FROM {locales_target} WHERE locale = '%s'", $edit['langcode']); - $message = t('%locale language removed.', array('%locale' => '<em>'. t($languages['name'][$edit['langcode']]) .'</em>')); - drupal_set_message($message); - watchdog('locale', $message); + if ($key == 'en') { + // Disallow name change for English locale + db_query("UPDATE {locales_meta} SET isdefault = %d, enabled = %d WHERE locale = 'en'", ($edit['sitedefault'] == $key), $edit['enabled'][$key]); + } + else { + db_query("UPDATE {locales_meta} SET name = '%s', isdefault = %d, enabled = %d WHERE locale = '%s'", $edit['name'][$key], ($edit['sitedefault'] == $key), $edit['enabled'][$key], $key); } + } - // Changing the locale settings impacts the interface: - cache_clear_all(); + // Changing the locale settings impacts the interface: + cache_clear_all(); - break; + drupal_goto('admin/locale/language/overview'); } + print theme('page', _locale_admin_manage_screen()); } @@ -307,6 +291,23 @@ function locale_admin_manage() { function locale_admin_manage_delete_screen() { include_once 'includes/locale.inc'; $langcode = arg(4); + $edit = $_POST['edit']; + + // Check confirmation and if so, delete language + if ($edit['confirm']) { + $languages = locale_supported_languages(FALSE, TRUE); + if (isset($languages['name'][$edit['langcode']])) { + db_query("DELETE FROM {locales_meta} WHERE locale = '%s'", $edit['langcode']); + db_query("DELETE FROM {locales_target} WHERE locale = '%s'", $edit['langcode']); + $message = t('%locale language removed.', array('%locale' => '<em>'. t($languages['name'][$edit['langcode']]) .'</em>')); + drupal_set_message($message); + watchdog('locale', $message); + } + + // Changing the locale settings impacts the interface: + cache_clear_all(); + drupal_goto('admin/locale/language/overview'); + } // Do not allow deletion of English locale if ($langcode == 'en') { @@ -315,10 +316,17 @@ function locale_admin_manage_delete_screen() { } // For other locales, warn user that data loss is ahead - $form = form_hidden('langcode', $langcode); - $form .= form_submit(t('Delete')); $languages = locale_supported_languages(FALSE, TRUE); - print theme('page', form(form_item(t("Delete language '%name'", array('%name' => t($languages['name'][$langcode]))), $form, t('Are you sure you want to delete the language and all data associated with it?')), 'POST', url('admin/locale/language/overview'))); + + $extra = form_hidden('langcode', $langcode); + $output = theme('confirm', + t('Are you sure you want to delete the language %name?', array('%name' => '<em>'. t($languages['name'][$langcode]) .'</em>')), + 'admin/locale/language/overview', + t('Deleting a language will remove all data associated with it. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/locale/locale.module b/modules/locale/locale.module index f9c6da115..3f31ff755 100644 --- a/modules/locale/locale.module +++ b/modules/locale/locale.module @@ -260,44 +260,28 @@ function locale_admin_manage() { include_once 'includes/locale.inc'; $edit = &$_POST['edit']; - switch ($_POST['op']) { + if ($_POST['op'] == t('Save configuration')) { // Save changes to existing languages - case t('Save configuration'): - $languages = locale_supported_languages(FALSE, TRUE); - foreach($languages['name'] as $key => $value) { - if ($edit['sitedefault'] == $key) { - $edit['enabled'][$key] = 1; // autoenable the default language - } - if ($key == 'en') { - // Disallow name change for English locale - db_query("UPDATE {locales_meta} SET isdefault = %d, enabled = %d WHERE locale = 'en'", ($edit['sitedefault'] == $key), $edit['enabled'][$key]); - } - else { - db_query("UPDATE {locales_meta} SET name = '%s', isdefault = %d, enabled = %d WHERE locale = '%s'", $edit['name'][$key], ($edit['sitedefault'] == $key), $edit['enabled'][$key], $key); - } + $languages = locale_supported_languages(FALSE, TRUE); + foreach($languages['name'] as $key => $value) { + if ($edit['sitedefault'] == $key) { + $edit['enabled'][$key] = 1; // autoenable the default language } - - // Changing the locale settings impacts the interface: - cache_clear_all(); - - break; - - // Remove existing language - case t('Delete'): - $languages = locale_supported_languages(FALSE, TRUE); - if (isset($languages['name'][$edit['langcode']])) { - db_query("DELETE FROM {locales_meta} WHERE locale = '%s'", $edit['langcode']); - db_query("DELETE FROM {locales_target} WHERE locale = '%s'", $edit['langcode']); - $message = t('%locale language removed.', array('%locale' => '<em>'. t($languages['name'][$edit['langcode']]) .'</em>')); - drupal_set_message($message); - watchdog('locale', $message); + if ($key == 'en') { + // Disallow name change for English locale + db_query("UPDATE {locales_meta} SET isdefault = %d, enabled = %d WHERE locale = 'en'", ($edit['sitedefault'] == $key), $edit['enabled'][$key]); + } + else { + db_query("UPDATE {locales_meta} SET name = '%s', isdefault = %d, enabled = %d WHERE locale = '%s'", $edit['name'][$key], ($edit['sitedefault'] == $key), $edit['enabled'][$key], $key); } + } - // Changing the locale settings impacts the interface: - cache_clear_all(); + // Changing the locale settings impacts the interface: + cache_clear_all(); - break; + drupal_goto('admin/locale/language/overview'); } + print theme('page', _locale_admin_manage_screen()); } @@ -307,6 +291,23 @@ function locale_admin_manage() { function locale_admin_manage_delete_screen() { include_once 'includes/locale.inc'; $langcode = arg(4); + $edit = $_POST['edit']; + + // Check confirmation and if so, delete language + if ($edit['confirm']) { + $languages = locale_supported_languages(FALSE, TRUE); + if (isset($languages['name'][$edit['langcode']])) { + db_query("DELETE FROM {locales_meta} WHERE locale = '%s'", $edit['langcode']); + db_query("DELETE FROM {locales_target} WHERE locale = '%s'", $edit['langcode']); + $message = t('%locale language removed.', array('%locale' => '<em>'. t($languages['name'][$edit['langcode']]) .'</em>')); + drupal_set_message($message); + watchdog('locale', $message); + } + + // Changing the locale settings impacts the interface: + cache_clear_all(); + drupal_goto('admin/locale/language/overview'); + } // Do not allow deletion of English locale if ($langcode == 'en') { @@ -315,10 +316,17 @@ function locale_admin_manage_delete_screen() { } // For other locales, warn user that data loss is ahead - $form = form_hidden('langcode', $langcode); - $form .= form_submit(t('Delete')); $languages = locale_supported_languages(FALSE, TRUE); - print theme('page', form(form_item(t("Delete language '%name'", array('%name' => t($languages['name'][$langcode]))), $form, t('Are you sure you want to delete the language and all data associated with it?')), 'POST', url('admin/locale/language/overview'))); + + $extra = form_hidden('langcode', $langcode); + $output = theme('confirm', + t('Are you sure you want to delete the language %name?', array('%name' => '<em>'. t($languages['name'][$langcode]) .'</em>')), + 'admin/locale/language/overview', + t('Deleting a language will remove all data associated with it. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + print theme('page', $output); } /** diff --git a/modules/menu.module b/modules/menu.module index ab080700a..0a972ec39 100644 --- a/modules/menu.module +++ b/modules/menu.module @@ -113,17 +113,17 @@ function menu_overview() { function menu_reset() { $op = $_POST['op']; switch ($op) { - case t('Reset'): + case t('Reset all'): db_query('DELETE FROM {menu}'); drupal_set_message(t('All menu items reset.')); drupal_goto('admin/menu'); break; - case t('Cancel'): - drupal_goto('admin/menu'); - break; default: - $output = '<p>'. t('Are you sure you want to reset all menu items to their default settings? Any custom menu items will be lost.') .'</p>'; - $output .= form(form_submit(t('Reset')) . form_submit(t('Cancel'))); + $output = theme('confirm', + t('Are you sure you want to reset all menu items to their default settings?', array('%item' => '<em>'. $title .'</em>')), + 'admin/menu', + t('Any custom additions or changes to the menu will be lost.'), + t('Reset all')); print theme('page', $output); } } @@ -164,12 +164,13 @@ function menu_reset_item($mid) { drupal_set_message(t('Menu item reset.')); drupal_goto('admin/menu'); break; - case t('Cancel'): - drupal_goto('admin/menu'); - break; default: - $output = '<p>'. t('Are you sure you want to reset this item to its default values?') .'</p>'; - $output .= form(form_submit(t('Reset')) . form_submit(t('Cancel'))); + $title = db_result(db_query('SELECT title FROM {menu} WHERE mid = %d', $mid)); + $output = theme('confirm', + t('Are you sure you want to reset the item %item to its default values?', array('%item' => '<em>'. $title .'</em>')), + 'admin/menu', + t('Any customizations will be lost. This action cannot be undone.'), + t('Reset')); print theme('page', $output); } } @@ -179,18 +180,30 @@ function menu_reset_item($mid) { */ function menu_delete_item($mid) { $op = $_POST['op']; + $result = db_query('SELECT type, title FROM {menu} WHERE mid = %d', $mid); + $menu = db_fetch_object($result); + if (!$menu) { + drupal_goto('admin/menu'); + } switch ($op) { case t('Delete'): db_query('DELETE FROM {menu} WHERE mid = %d', $mid); - drupal_set_message(t('Menu item deleted.')); - drupal_goto('admin/menu'); - break; - case t('Cancel'): + if ($menu->type & MENU_IS_ROOT) { + drupal_set_message(t('Menu deleted.')); + } + else { + drupal_set_message(t('Menu item deleted.')); + } drupal_goto('admin/menu'); break; default: - $output = '<p>'. t('Are you sure you want to delete this custom menu item?') .'</p>'; - $output .= form(form_submit(t('Delete')) . form_submit(t('Cancel'))); + if ($menu->type & MENU_IS_ROOT) { + $message = t('Are you sure you want to delete the menu %item?', array('%item' => '<em>'. $menu->title .'</em>')); + } + else { + $message = t('Are you sure you want to delete the custom menu item %item?', array('%item' => '<em>'. $menu->title .'</em>')); + } + $output = theme('confirm', $message, 'admin/menu', t('This action cannot be undone.'), t('Delete')); print theme('page', $output); } } diff --git a/modules/menu/menu.module b/modules/menu/menu.module index ab080700a..0a972ec39 100644 --- a/modules/menu/menu.module +++ b/modules/menu/menu.module @@ -113,17 +113,17 @@ function menu_overview() { function menu_reset() { $op = $_POST['op']; switch ($op) { - case t('Reset'): + case t('Reset all'): db_query('DELETE FROM {menu}'); drupal_set_message(t('All menu items reset.')); drupal_goto('admin/menu'); break; - case t('Cancel'): - drupal_goto('admin/menu'); - break; default: - $output = '<p>'. t('Are you sure you want to reset all menu items to their default settings? Any custom menu items will be lost.') .'</p>'; - $output .= form(form_submit(t('Reset')) . form_submit(t('Cancel'))); + $output = theme('confirm', + t('Are you sure you want to reset all menu items to their default settings?', array('%item' => '<em>'. $title .'</em>')), + 'admin/menu', + t('Any custom additions or changes to the menu will be lost.'), + t('Reset all')); print theme('page', $output); } } @@ -164,12 +164,13 @@ function menu_reset_item($mid) { drupal_set_message(t('Menu item reset.')); drupal_goto('admin/menu'); break; - case t('Cancel'): - drupal_goto('admin/menu'); - break; default: - $output = '<p>'. t('Are you sure you want to reset this item to its default values?') .'</p>'; - $output .= form(form_submit(t('Reset')) . form_submit(t('Cancel'))); + $title = db_result(db_query('SELECT title FROM {menu} WHERE mid = %d', $mid)); + $output = theme('confirm', + t('Are you sure you want to reset the item %item to its default values?', array('%item' => '<em>'. $title .'</em>')), + 'admin/menu', + t('Any customizations will be lost. This action cannot be undone.'), + t('Reset')); print theme('page', $output); } } @@ -179,18 +180,30 @@ function menu_reset_item($mid) { */ function menu_delete_item($mid) { $op = $_POST['op']; + $result = db_query('SELECT type, title FROM {menu} WHERE mid = %d', $mid); + $menu = db_fetch_object($result); + if (!$menu) { + drupal_goto('admin/menu'); + } switch ($op) { case t('Delete'): db_query('DELETE FROM {menu} WHERE mid = %d', $mid); - drupal_set_message(t('Menu item deleted.')); - drupal_goto('admin/menu'); - break; - case t('Cancel'): + if ($menu->type & MENU_IS_ROOT) { + drupal_set_message(t('Menu deleted.')); + } + else { + drupal_set_message(t('Menu item deleted.')); + } drupal_goto('admin/menu'); break; default: - $output = '<p>'. t('Are you sure you want to delete this custom menu item?') .'</p>'; - $output .= form(form_submit(t('Delete')) . form_submit(t('Cancel'))); + if ($menu->type & MENU_IS_ROOT) { + $message = t('Are you sure you want to delete the menu %item?', array('%item' => '<em>'. $menu->title .'</em>')); + } + else { + $message = t('Are you sure you want to delete the custom menu item %item?', array('%item' => '<em>'. $menu->title .'</em>')); + } + $output = theme('confirm', $message, 'admin/menu', t('This action cannot be undone.'), t('Delete')); print theme('page', $output); } } diff --git a/modules/node.module b/modules/node.module index a28779ca7..78d2cad18 100644 --- a/modules/node.module +++ b/modules/node.module @@ -704,6 +704,11 @@ function node_menu($may_cache) { 'access' => node_access('update', $node), 'weight' => 1, 'type' => MENU_LOCAL_TASK); + $items[] = array('path' => 'node/'. arg(1) .'/delete', 'title' => t('delete'), + 'callback' => 'node_page', + 'access' => node_access('delete', $node), + 'weight' => 1, + 'type' => MENU_CALLBACK); if ($node->revisions) { $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'), @@ -749,7 +754,7 @@ function node_admin_nodes() { $op = $_POST['op']; $edit = $_POST['edit']; - if (($op == t('Update') || $op == t('Delete')) && isset($edit['operation']) && isset($edit['nodes'])) { + if (($op == t('Update') || $op == t('Delete all')) && isset($edit['operation']) && isset($edit['nodes'])) { $edit['nodes'] = array_diff($edit['nodes'], array(0)); if (count($edit['nodes']) == 0) { form_set_error('', t('Please select some items to perform the update on.')); @@ -774,20 +779,23 @@ function node_admin_nodes() { drupal_set_message(t('The items have been deleted.')); } else { - $list = '<ul>'; + $extra = '<ul>'; foreach ($edit['nodes'] as $nid => $value) { if ($value) { $title = db_result(db_query('SELECT title FROM {node} WHERE nid = %d', $nid)); - $list .= '<li>'. form_hidden('nodes]['. $nid, 1) . $title .'</li>'; + $extra .= '<li>'. form_hidden('nodes]['. $nid, 1) . $title .'</li>'; } } - $list .= '</ul>'; - - $output = '<h3>'. t('Are you sure you want to delete these items?') .'</h3>'. $list; - $output .= form_hidden('operation', 'delete'); - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + $extra .= '</ul>'; + $extra .= form_hidden('operation', 'delete'); + + $output = theme('confirm', + t('Are you sure you want to delete these items?'), + 'admin/node', + t('This action cannot be undone.'), + t('Delete all'), + t('Cancel'), + $extra); return $output; } } @@ -1575,7 +1583,6 @@ function node_submit(&$node) { * Ask for confirmation, and delete the node. */ function node_delete($edit) { - $node = node_load(array('nid' => $edit['nid'])); if (node_access('delete', $node)) { @@ -1597,14 +1604,16 @@ function node_delete($edit) { } watchdog('content', t('%type: deleted %title.', array('%type' => '<em>'. t($node->type) .'</em>', '%title' => "<em>$node->title</em>"))); - $output = t('The node has been deleted.'); } else { - $output .= form_item(t('Confirm deletion'), $node->title); - $output .= form_hidden('nid', $node->nid); - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + $extra = form_hidden('nid', $node->nid); + $output = theme('confirm', + t('Are you sure you want to delete %title?', array('%title' => '<em>'. $node->title .'</em>')), + $_GET['destination'] ? $_GET['destination'] : 'node/'. $node->nid, + t('This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); } } @@ -1699,8 +1708,19 @@ function node_page() { print theme('page', node_preview($edit)); } break; + case 'delete': case t('Delete'): - drupal_set_title(t('Delete')); + // Note: we redirect from node/uid/edit to node/uid/delete to make the tabs disappear. + if ($_GET['q'] == 'node/'. arg(1) .'/edit') { + unset($_REQUEST['destination']); + drupal_goto('node/'. arg(1) .'/delete'); + } + $edit['nid'] = $edit['nid'] ? $edit['nid'] : arg(1); + $output = node_delete($edit); + if (!$output) { + drupal_set_message(t('The node has been deleted.')); + drupal_goto('admin/node'); + } print theme('page', node_delete($edit)); break; default: diff --git a/modules/node/node.module b/modules/node/node.module index a28779ca7..78d2cad18 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -704,6 +704,11 @@ function node_menu($may_cache) { 'access' => node_access('update', $node), 'weight' => 1, 'type' => MENU_LOCAL_TASK); + $items[] = array('path' => 'node/'. arg(1) .'/delete', 'title' => t('delete'), + 'callback' => 'node_page', + 'access' => node_access('delete', $node), + 'weight' => 1, + 'type' => MENU_CALLBACK); if ($node->revisions) { $items[] = array('path' => 'node/'. arg(1) .'/revisions', 'title' => t('revisions'), @@ -749,7 +754,7 @@ function node_admin_nodes() { $op = $_POST['op']; $edit = $_POST['edit']; - if (($op == t('Update') || $op == t('Delete')) && isset($edit['operation']) && isset($edit['nodes'])) { + if (($op == t('Update') || $op == t('Delete all')) && isset($edit['operation']) && isset($edit['nodes'])) { $edit['nodes'] = array_diff($edit['nodes'], array(0)); if (count($edit['nodes']) == 0) { form_set_error('', t('Please select some items to perform the update on.')); @@ -774,20 +779,23 @@ function node_admin_nodes() { drupal_set_message(t('The items have been deleted.')); } else { - $list = '<ul>'; + $extra = '<ul>'; foreach ($edit['nodes'] as $nid => $value) { if ($value) { $title = db_result(db_query('SELECT title FROM {node} WHERE nid = %d', $nid)); - $list .= '<li>'. form_hidden('nodes]['. $nid, 1) . $title .'</li>'; + $extra .= '<li>'. form_hidden('nodes]['. $nid, 1) . $title .'</li>'; } } - $list .= '</ul>'; - - $output = '<h3>'. t('Are you sure you want to delete these items?') .'</h3>'. $list; - $output .= form_hidden('operation', 'delete'); - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + $extra .= '</ul>'; + $extra .= form_hidden('operation', 'delete'); + + $output = theme('confirm', + t('Are you sure you want to delete these items?'), + 'admin/node', + t('This action cannot be undone.'), + t('Delete all'), + t('Cancel'), + $extra); return $output; } } @@ -1575,7 +1583,6 @@ function node_submit(&$node) { * Ask for confirmation, and delete the node. */ function node_delete($edit) { - $node = node_load(array('nid' => $edit['nid'])); if (node_access('delete', $node)) { @@ -1597,14 +1604,16 @@ function node_delete($edit) { } watchdog('content', t('%type: deleted %title.', array('%type' => '<em>'. t($node->type) .'</em>', '%title' => "<em>$node->title</em>"))); - $output = t('The node has been deleted.'); } else { - $output .= form_item(t('Confirm deletion'), $node->title); - $output .= form_hidden('nid', $node->nid); - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + $extra = form_hidden('nid', $node->nid); + $output = theme('confirm', + t('Are you sure you want to delete %title?', array('%title' => '<em>'. $node->title .'</em>')), + $_GET['destination'] ? $_GET['destination'] : 'node/'. $node->nid, + t('This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); } } @@ -1699,8 +1708,19 @@ function node_page() { print theme('page', node_preview($edit)); } break; + case 'delete': case t('Delete'): - drupal_set_title(t('Delete')); + // Note: we redirect from node/uid/edit to node/uid/delete to make the tabs disappear. + if ($_GET['q'] == 'node/'. arg(1) .'/edit') { + unset($_REQUEST['destination']); + drupal_goto('node/'. arg(1) .'/delete'); + } + $edit['nid'] = $edit['nid'] ? $edit['nid'] : arg(1); + $output = node_delete($edit); + if (!$output) { + drupal_set_message(t('The node has been deleted.')); + drupal_goto('admin/node'); + } print theme('page', node_delete($edit)); break; default: diff --git a/modules/taxonomy.module b/modules/taxonomy.module index ffdc90a6a..a3f3c7983 100644 --- a/modules/taxonomy.module +++ b/modules/taxonomy.module @@ -172,12 +172,17 @@ function taxonomy_del_vocabulary($vid) { function _taxonomy_confirm_del_vocabulary($vid) { $vocabulary = taxonomy_get_vocabulary($vid); - $form .= form_hidden('confirm', 1); - $form .= form_hidden('type', 'vocabulary'); - $form .= form_hidden('vid', $vid); - $form .= form_submit(t('Delete')); - - return form(form_item(t('Delete vocabulary "%name"', array('%name' => $vocabulary->name)), $form, t('Are you sure you want to delete the vocabulary and all its terms?'))); + $extra = form_hidden('type', 'vocabulary'); + $extra .= form_hidden('vid', $vid); + + $output = theme('confirm', + t('Are you sure you want to delete the vocabulary %title?', array('%title' => $vocabulary->name)), + 'admin/taxonomy', + t('Deleting a vocabulary will delete all the terms in it. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + return $output; } function taxonomy_form_term($edit = array()) { @@ -322,12 +327,16 @@ function taxonomy_del_term($tid) { function _taxonomy_confirm_del_term($tid) { $term = taxonomy_get_term($tid); - $form .= form_hidden('confirm', 1); - $form .= form_hidden('type', 'term'); - $form .= form_hidden('tid', $tid); - $form .= form_submit(t('Delete')); + $extra = form_hidden('type', 'term'); + $extra .= form_hidden('tid', $tid); - $output = form(form_item(t('Delete term "%name" and all its children', array('%name' => $term->name)), $form, t('Are you sure you want to delete the term and all its children (if any)?'))); + $output = theme('confirm', + t('Are you sure you want to delete the term %name?', array('%title' => '<em>'. $vocabulary->name .'</em>')), + 'admin/taxonomy', + t('Deleting a term will delete all its children if there are any. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); return $output; } diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module index ffdc90a6a..a3f3c7983 100644 --- a/modules/taxonomy/taxonomy.module +++ b/modules/taxonomy/taxonomy.module @@ -172,12 +172,17 @@ function taxonomy_del_vocabulary($vid) { function _taxonomy_confirm_del_vocabulary($vid) { $vocabulary = taxonomy_get_vocabulary($vid); - $form .= form_hidden('confirm', 1); - $form .= form_hidden('type', 'vocabulary'); - $form .= form_hidden('vid', $vid); - $form .= form_submit(t('Delete')); - - return form(form_item(t('Delete vocabulary "%name"', array('%name' => $vocabulary->name)), $form, t('Are you sure you want to delete the vocabulary and all its terms?'))); + $extra = form_hidden('type', 'vocabulary'); + $extra .= form_hidden('vid', $vid); + + $output = theme('confirm', + t('Are you sure you want to delete the vocabulary %title?', array('%title' => $vocabulary->name)), + 'admin/taxonomy', + t('Deleting a vocabulary will delete all the terms in it. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); + return $output; } function taxonomy_form_term($edit = array()) { @@ -322,12 +327,16 @@ function taxonomy_del_term($tid) { function _taxonomy_confirm_del_term($tid) { $term = taxonomy_get_term($tid); - $form .= form_hidden('confirm', 1); - $form .= form_hidden('type', 'term'); - $form .= form_hidden('tid', $tid); - $form .= form_submit(t('Delete')); + $extra = form_hidden('type', 'term'); + $extra .= form_hidden('tid', $tid); - $output = form(form_item(t('Delete term "%name" and all its children', array('%name' => $term->name)), $form, t('Are you sure you want to delete the term and all its children (if any)?'))); + $output = theme('confirm', + t('Are you sure you want to delete the term %name?', array('%title' => '<em>'. $vocabulary->name .'</em>')), + 'admin/taxonomy', + t('Deleting a term will delete all its children if there are any. This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); return $output; } diff --git a/modules/user.module b/modules/user.module index f202ec326..41af5c94f 100644 --- a/modules/user.module +++ b/modules/user.module @@ -706,6 +706,9 @@ function user_menu($may_cache) { $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'), 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1), 'type' => MENU_LOCAL_TASK); + $items[] = array('path' => 'user/'. arg(1) .'/delete', 'title' => t('delete'), + 'callback' => 'user_edit', 'access' => $access, + 'type' => MENU_CALLBACK); if (arg(2) == 'edit') { if (($categories = _user_categories()) && (count($categories) > 1)) { @@ -1119,7 +1122,7 @@ function user_edit($category = 'account') { $account = user_load(array('uid' => arg(1))); $edit = $_POST['op'] ? $_POST['edit'] : object2array($account); - if ($_POST['op'] == t('Save account')) { + if ($_POST['op'] == t('Submit')) { user_module_invoke('validate', $edit, $account, $category); if (!form_get_errors()) { @@ -1136,8 +1139,8 @@ function user_edit($category = 'account') { } } } - else if ($_POST['op'] == t('Delete account')) { - if ($account->status == 0) { + else if (arg(2) == 'delete') { + if ($edit['confirm']) { db_query('DELETE FROM {users} WHERE uid = %d', $account->uid); db_query('DELETE FROM {users_roles} WHERE uid = %d', $account->uid); db_query('DELETE FROM {authmap} WHERE uid = %d', $account->uid); @@ -1146,14 +1149,24 @@ function user_edit($category = 'account') { drupal_goto('admin/user'); } else { - drupal_set_message(t('Failed to delete account: the account has to be blocked first.'), 'error'); - } + $output = theme('confirm', + t('Are you sure you want to delete the account %name?', array('%name' => '<em>'. $account->name .'</em>')), + 'user/'. $account->uid, + t('Deleting a user will remove all their submissions as well. This action cannot be undone.'), + t('Delete')); + print theme('page', $output); + return; + } + } + else if ($_POST['op'] == t('Delete')) { + // Note: we redirect from user/uid/edit to user/uid/delete to make the tabs disappear. + drupal_goto("user/$account->uid/delete"); } $output = _user_forms($edit, $account, $category); - $output .= form_submit(t('Save account')); + $output .= form_submit(t('Submit')); if (user_access('administer users')) { - $output .= form_submit(t('Delete account')); + $output .= form_submit(t('Delete')); } $output = form($output, 'post', 0, array('enctype' => 'multipart/form-data')); @@ -1368,10 +1381,14 @@ function user_admin_access_delete($aid = 0) { else { $access_types = array('user' => t('username'), 'mail' => t('e-mail')); $edit = db_fetch_object(db_query('SELECT aid, type, status, mask FROM {access} WHERE aid = %d', $aid)); - $output = '<p>'. t('Are you sure you want to delete the %type rule for %rule?', array('%type' => $access_types[$edit->type], '%rule' => '<em>'. $edit->mask .'</em>')) .'</p>'; - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + + $output = theme('confirm', + t('Are you sure you want to delete the %type rule for %rule?', array('%type' => $access_types[$edit->type], '%rule' => '<em>'. $edit->mask .'</em>')), + 'admin/access/rules', + t('This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); print theme('page', $output); } } diff --git a/modules/user/user.module b/modules/user/user.module index f202ec326..41af5c94f 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -706,6 +706,9 @@ function user_menu($may_cache) { $items[] = array('path' => 'user/'. arg(1) .'/edit', 'title' => t('edit'), 'callback' => 'user_edit', 'access' => $access || $user->uid == arg(1), 'type' => MENU_LOCAL_TASK); + $items[] = array('path' => 'user/'. arg(1) .'/delete', 'title' => t('delete'), + 'callback' => 'user_edit', 'access' => $access, + 'type' => MENU_CALLBACK); if (arg(2) == 'edit') { if (($categories = _user_categories()) && (count($categories) > 1)) { @@ -1119,7 +1122,7 @@ function user_edit($category = 'account') { $account = user_load(array('uid' => arg(1))); $edit = $_POST['op'] ? $_POST['edit'] : object2array($account); - if ($_POST['op'] == t('Save account')) { + if ($_POST['op'] == t('Submit')) { user_module_invoke('validate', $edit, $account, $category); if (!form_get_errors()) { @@ -1136,8 +1139,8 @@ function user_edit($category = 'account') { } } } - else if ($_POST['op'] == t('Delete account')) { - if ($account->status == 0) { + else if (arg(2) == 'delete') { + if ($edit['confirm']) { db_query('DELETE FROM {users} WHERE uid = %d', $account->uid); db_query('DELETE FROM {users_roles} WHERE uid = %d', $account->uid); db_query('DELETE FROM {authmap} WHERE uid = %d', $account->uid); @@ -1146,14 +1149,24 @@ function user_edit($category = 'account') { drupal_goto('admin/user'); } else { - drupal_set_message(t('Failed to delete account: the account has to be blocked first.'), 'error'); - } + $output = theme('confirm', + t('Are you sure you want to delete the account %name?', array('%name' => '<em>'. $account->name .'</em>')), + 'user/'. $account->uid, + t('Deleting a user will remove all their submissions as well. This action cannot be undone.'), + t('Delete')); + print theme('page', $output); + return; + } + } + else if ($_POST['op'] == t('Delete')) { + // Note: we redirect from user/uid/edit to user/uid/delete to make the tabs disappear. + drupal_goto("user/$account->uid/delete"); } $output = _user_forms($edit, $account, $category); - $output .= form_submit(t('Save account')); + $output .= form_submit(t('Submit')); if (user_access('administer users')) { - $output .= form_submit(t('Delete account')); + $output .= form_submit(t('Delete')); } $output = form($output, 'post', 0, array('enctype' => 'multipart/form-data')); @@ -1368,10 +1381,14 @@ function user_admin_access_delete($aid = 0) { else { $access_types = array('user' => t('username'), 'mail' => t('e-mail')); $edit = db_fetch_object(db_query('SELECT aid, type, status, mask FROM {access} WHERE aid = %d', $aid)); - $output = '<p>'. t('Are you sure you want to delete the %type rule for %rule?', array('%type' => $access_types[$edit->type], '%rule' => '<em>'. $edit->mask .'</em>')) .'</p>'; - $output .= form_hidden('confirm', 1); - $output .= form_submit(t('Delete')); - $output = form($output); + + $output = theme('confirm', + t('Are you sure you want to delete the %type rule for %rule?', array('%type' => $access_types[$edit->type], '%rule' => '<em>'. $edit->mask .'</em>')), + 'admin/access/rules', + t('This action cannot be undone.'), + t('Delete'), + t('Cancel'), + $extra); print theme('page', $output); } } |