Index: modules/comment/comment.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.pages.inc,v
retrieving revision 1.9
diff -u -r1.9 comment.pages.inc
--- modules/comment/comment.pages.inc	16 Nov 2008 19:41:14 -0000	1.9
+++ modules/comment/comment.pages.inc	20 Nov 2008 01:52:37 -0000
@@ -118,24 +118,46 @@
 }
 
 /**
- * Publish specified comment.
+ * Display a confirmation form for approving a comment.
  *
- * @param $cid ID of comment to be published.
+ * @param $comment Comment object.
  */
-function comment_approve($cid) {
-  // Load the comment whose cid = $cid
-  if ($comment = comment_load($cid)) {
+function comment_approve_confirm_form(&$form_state, $comment) {
+  if ($comment) {
+    $form = array();
+    $form['cid'] = array(
+      '#type' => 'value',
+      '#value' => $comment->cid
+    );
+    return confirm_form($form,
+      t('Are you sure you want to approve %subject?', array('%subject' => $comment->subject)),
+      isset($_GET['destination']) ? $_GET['destination'] : "node/$comment->nid",
+      t('You can unpublish this comment by going to <a href="@comment">comment administration</a>.', array('@comment' => url('admin/content/comment'))),
+      t('Publish'),
+      t('Cancel')
+    );
+  }
+  else {
+    drupal_set_message(t('The comment you are approving does not exist.'), 'error');
+    drupal_goto();
+  }
+}
+
+/**
+ * Publish specified comment.
+ */
+function comment_approve_confirm_form_submit($form, &$form_state) {
+  // Ensure that the cid represents a valid comment.
+  if ($comment = comment_load($form_state['values']['cid'])) {
     $operations = comment_operations('publish');
     $query = $operations['publish'][1];
     $query
-      ->condition('cid', $cid )
+      ->condition('cid', $comment->cid)
       ->execute();
 
     drupal_set_message(t('Comment approved.'));
-    drupal_goto("node/$comment->nid");
-  }
-  else {
-    drupal_set_message(t('The comment you are approving does not exist.'), 'error');
-    drupal_goto();
   }
+
+  $comment = comment_load($form_state['values']['cid']);
+  $form_state['redirect'] = "node/$comment->nid";
 }
Index: modules/comment/comment.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.test,v
retrieving revision 1.17
diff -u -r1.17 comment.test
--- modules/comment/comment.test	11 Nov 2008 16:49:37 -0000	1.17
+++ modules/comment/comment.test	20 Nov 2008 01:52:37 -0000
@@ -554,6 +554,7 @@
     $this->drupalLogin($this->admin_user);
     $this->drupalGet('node/'. $this->node->nid);
     $this->clickLink(t('approve'));
+    $this->drupalPost(NULL, array(), t('Publish'));
     $this->drupalLogout();
 
     $this->drupalGet('node/'. $this->node->nid);
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.664
diff -u -r1.664 comment.module
--- modules/comment/comment.module	16 Nov 2008 19:41:14 -0000	1.664
+++ modules/comment/comment.module	20 Nov 2008 01:52:37 -0000
@@ -202,10 +202,10 @@
     'access arguments' => array('view', 2),
     'type' => MENU_CALLBACK,
   );
-  $items['comment/approve'] = array(
+  $items['comment/approve/%comment'] = array(
     'title' => 'Approve a comment',
-    'page callback' => 'comment_approve',
-    'page arguments' => array(2),
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('comment_approve_confirm_form', 2),
     'access arguments' => array('administer comments'),
     'type' => MENU_CALLBACK,
   );
