Index: modules/comment/comment.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.pages.inc,v
retrieving revision 1.6
diff -u -r1.6 comment.pages.inc
--- modules/comment/comment.pages.inc	24 Jun 2008 17:01:33 -0000	1.6
+++ modules/comment/comment.pages.inc	21 Aug 2008 04:15:40 -0000
@@ -115,21 +115,38 @@
 }
 
 /**
- * Publish specified comment.
- *
- * @param $cid ID of comment to be published.
+ * Display a confirmation form for approving a comment.
  */
-function comment_approve($cid) {
-  // Load the comment whose cid = $cid
+function comment_approve_confirm_form(&$form_state, $cid) {
   if ($comment = comment_load($cid)) {
-    $operations = comment_operations('publish');
-    db_query($operations['publish'][1], $cid);
-
-    drupal_set_message(t('Comment approved.'));
-    drupal_goto("node/$comment->nid");
+    $form = array();
+    $form['cid'] = array(
+      '#type' => 'value',
+      '#value' => $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 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) {
+  $operations = comment_operations('publish');
+  db_query($operations['publish'][1], $form_state['values']['cid']);
+
+  drupal_set_message(t('Comment approved.'));
+
+  $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.10
diff -u -r1.10 comment.test
--- modules/comment/comment.test	3 Jul 2008 17:57:03 -0000	1.10
+++ modules/comment/comment.test	21 Aug 2008 04:15:40 -0000
@@ -244,6 +244,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.646
diff -u -r1.646 comment.module
--- modules/comment/comment.module	14 Aug 2008 19:42:26 -0000	1.646
+++ modules/comment/comment.module	21 Aug 2008 04:15:40 -0000
@@ -202,12 +202,13 @@
     'access arguments' => array('view', 2),
     'type' => MENU_CALLBACK,
   );
-  $items['comment/approve'] = array(
+  $items['comment/approve/%'] = 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,
+    'file' => 'comment.pages.inc',
   );
 
   return $items;
