diff -urp --strip-trailing-cr ../flatcomments/flatcomments_existing/flatcomments_existing.admin.inc ./flatcomments_existing/flatcomments_existing.admin.inc
--- ../flatcomments/flatcomments_existing/flatcomments_existing.admin.inc	2009-05-17 20:37:55.000000000 +0200
+++ ./flatcomments_existing/flatcomments_existing.admin.inc	2009-05-17 22:05:08.000000000 +0200
@@ -9,24 +9,44 @@
 
 /**
  * Form to select content types and confirm the operation.
+ * This is a multi-pass form, the confirmation being second pass.
  */
-function flatcomments_existing_form() {
-  $form['types'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Flatten existing comments for content types'),
-    '#options' => node_get_types('names'),
-    '#description' => t('To remove all threading information from already existing comments, select content types you wish to process, and click "Execute". <strong>Warning: This operation breaks any previously existing threads into separate comments permanently, so there\'s no way to revert existing discussions back to threads afterwards.</strong>'),
-  );
-  $form['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Execute'),
-  );
-
+function flatcomments_existing_form($form_state) {
+  if (empty($form_state['storage']['types'])) {
+    // First pass: Fresh form to select content types
+    $form['types'] = array(
+      '#type' => 'checkboxes',
+      '#title' => t('Flatten existing comments for content types'),
+      '#options' => node_get_types('names'),
+      '#description' => t('To remove all threading information from already existing comments, select content types you wish to process, and click "Execute". <strong>Warning: This operation breaks any previously existing threads into separate comments permanently, so there\'s no way to revert existing discussions back to threads afterwards.</strong>'),
+    );
+    $form['submit'] = array(
+      '#type' => 'submit',
+      '#value' => t('Execute'),
+    );
+    $form['#submit'] = array('flatcomments_existing_form_submit_1');
+  }
+  else {
+  // Second pass: Confirmation screen
+    $form['types'] = array(
+      '#type' => 'value',
+      '#value' => $form_state['storage']['types'], // Keep the selection from first pass
+    );
+    $form['#submit'] = array('flatcomments_existing_form_submit_2');
+    $form = confirm_form($form,
+      t('Are you sure you want to remove threading information?'),
+      'admin/content/comment/flatten',
+      t('This operation breaks any previously existing threads into separate comments permanently. It cannot be undone.'),
+      t('Continue'),
+      t('Cancel')
+    );
+  }
   return $form;
 }
 
 /**
- * Form validation; checks that node type(s) are selected, and all valid
+ * Form validation; checks that node type(s) are selected, and all valid.
+ * (Note: The checks are executed on both passes of the form.)
  */
 function flatcomments_existing_form_validate($form, &$form_state) {
   $content_types = node_get_types('names');
@@ -48,9 +68,22 @@ function flatcomments_existing_form_vali
 }
 
 /**
- * Form submit handler; starts a batch of required operations.
+ * Form submit handler - first pass. Triggers second pass for confirmation.
+ */
+function flatcomments_existing_form_submit_1($form, &$form_state) {
+  // Pass the submitted selection of content types to the second pass.
+  // The existence of $form_state['storage'] triggers the second pass
+  // of the form being rendered in our code, as well as in the FAPI.
+  $form_state['storage']['types'] = $form_state['values']['types'];
+}
+
+/**
+ * Form submit handler - second pass. Starts a batch of required operations.
  */
-function flatcomments_existing_form_submit($form, &$form_state) {
+function flatcomments_existing_form_submit_2($form, &$form_state) {
+  // Reset the form to show first pass when finished.
+  $form_state['storage'] = NULL;
+
   $content_types = node_get_types('names');
   $processed_types = array();
   $batch = array('file' => __FILE__);
diff -urp --strip-trailing-cr ../flatcomments/flatcomments_existing/flatcomments_existing.install ./flatcomments_existing/flatcomments_existing.install
--- ../flatcomments/flatcomments_existing/flatcomments_existing.install	2009-05-17 20:38:13.000000000 +0200
+++ ./flatcomments_existing/flatcomments_existing.install	2009-05-17 20:41:47.000000000 +0200
@@ -10,5 +10,5 @@
  * Implementation of hook_enable().
  */
 function flatcomments_existing_enable() {
-  drupal_set_message(t('Flatcomments Exising successfully installed. Go to <a href="!url">admin/content/comment/flatten</a> to flatten comments.', array('!url' => url('admin/content/comment/flatten'))));
+  drupal_set_message(t('Flatcomments Existing successfully installed. Go to <a href="!url">admin/content/comment/flatten</a> to flatten existing comments.', array('!url' => url('admin/content/comment/flatten'))));
 }
diff -urp --strip-trailing-cr ../flatcomments/flatcomments_existing/flatcomments_existing.module ./flatcomments_existing/flatcomments_existing.module
--- ../flatcomments/flatcomments_existing/flatcomments_existing.module	2009-05-17 20:38:23.000000000 +0200
+++ ./flatcomments_existing/flatcomments_existing.module	2009-05-17 20:46:30.000000000 +0200
@@ -28,7 +28,6 @@ function flatcomments_existing_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => array('flatcomments_existing_form'),
     'access callback' => 'flatcomments_existing_flatten_access',
-    //'access arguments' => array('administer comments', 'administer nodes', 'administer content types'),
     'file' => 'flatcomments_existing.admin.inc',
     'type' => MENU_LOCAL_TASK,
   );
@@ -37,8 +36,5 @@ function flatcomments_existing_menu() {
 }
 
 function flatcomments_existing_flatten_access() {
-  if (user_access('administer comments') && user_access('administer nodes') && user_access('administer content types')) {
-    return TRUE;
-  }
-  return FALSE;
+  return (user_access('administer comments') && user_access('administer nodes') && user_access('administer content types'));
 }
diff -urp --strip-trailing-cr ../flatcomments/README.txt ./README.txt
--- ../flatcomments/README.txt	2009-05-17 20:37:26.000000000 +0200
+++ ./README.txt	2009-05-17 22:41:59.000000000 +0200
@@ -27,6 +27,9 @@ With flatcomments enabled and flat list 
 2. Edit a content type.
 3. Under the "Comment settings" section select a "Default display mode" of either
    "Flat list - collapsed" or "Flat list - expanded".
+4. (Optional) Use the "Flat comments existing" sub-module to remove threading
+   also from already existing comments on the relevant content type(s).
+   (Recommended: Disable the "Flat comments existing" sub-module after use.)
 
 
 -- Remaining problems
@@ -42,4 +45,4 @@ Current maintainer:
 Alan Doucette (dragonwize)
 
 Original creator:
-Heine Deelstra (http://drupal.org/user/17943/contact)
\ Chybí znak konce řádku na konci souboru
+Heine Deelstra (http://drupal.org/user/17943/contact)
