Index: modules/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node.module,v
retrieving revision 1.527
diff -u -r1.527 node.module
--- modules/node.module 2 Sep 2005 02:11:41 -0000 1.527
+++ modules/node.module 8 Sep 2005 09:00:14 -0000
@@ -806,14 +806,24 @@
drupal_set_message(t('The items have been deleted.'));
}
else {
- $extra = '
';
- foreach ($edit['nodes'] as $nid => $value) {
- if ($value) {
- $title = db_result(db_query('SELECT title FROM {node} WHERE nid = %d', $nid));
- $extra .= '- '. form_hidden('nodes]['. $nid, 1) . check_plain($title) .'
';
+ // Theme nodes to delete into a list, injecting any module-specific data.
+ $list = array();
+ // Keep only checked nodes' nids
+ $nids = array_keys(array_intersect($edit['nodes'], array('1')));
+ foreach ($nids as $nid) {
+ $node = node_load($nid);
+ $extras = node_invoke_nodeapi($node, 'delete pre');
+ // Add node and extras to the list only if no module has cancelled deletion for this node.
+ if (!in_array(FALSE, $extras)) {
+ $list[] = form_hidden('nodes]['. $node->nid, 1) . check_plain($node->title) . implode('', $extras);
}
+
+ }
+ // Back to the admin page if no nodes can be deleted.
+ if (count($list) == 0) {
+ drupal_goto('admin/node');
}
- $extra .= '
';
+ $extra = theme_item_list($list);
$extra .= form_hidden('operation', 'delete');
$output = theme('confirm',
@@ -1617,7 +1627,13 @@
watchdog('content', t('%type: deleted %title.', array('%type' => theme('placeholder', t($node->type)), '%title' => theme('placeholder', $node->title))));
}
else {
- $extra = form_hidden('nid', $node->nid);
+ $extras = node_invoke_nodeapi($node, 'delete pre');
+ // Add extras only if no module has cancelled the deletion.
+ if (!in_array(FALSE, $extras)) {
+ $extra = form_hidden('nid', $node->nid) . implode('', $extras);
+ } else {
+ drupal_goto('node/'. $node->nid .'/edit');
+ }
$output = theme('confirm',
t('Are you sure you want to delete %title?', array('%title' => theme('placeholder', $node->title))),
$_GET['destination'] ? $_GET['destination'] : 'node/'. $node->nid,