diff -uprbN simplenews_orig/simplenews-block-all.tpl.php simplenews/simplenews-block-all.tpl.php
--- simplenews_orig/simplenews-block-all.tpl.php	1970-01-01 01:00:00.000000000 +0100
+++ simplenews/simplenews-block-all.tpl.php	2008-09-09 09:47:03.000000000 +0200
@@ -0,0 +1,19 @@
+<?php
+// $Id$
+
+/**
+ * @file simplenews-block.tpl.php
+ * Default theme implementation to display a block with subscription options for all newsletters.
+ * 
+ *
+ * Available variables:
+ * - $form: the rendered form
+ *
+ * @see template_preprocess_simplenews_block_all()
+ */
+?>
+  <p><?php print t('Select the newsletter(s) to which you want to subscribe or unsubscribe.'); ?></p>
+
+  <?php if ($form): ?>
+    <?php print $form; ?>
+  <?php endif; ?>
diff -uprbN simplenews_orig/simplenews.module simplenews/simplenews.module
--- simplenews_orig/simplenews.module	2008-09-01 16:51:33.000000000 +0200
+++ simplenews/simplenews.module	2008-09-09 09:33:03.000000000 +0200
@@ -579,6 +579,14 @@ function simplenews_form_alter(&$form, $
       );
     }
   }
+  elseif ($form_id == 'simplenews_subscription_manager_form') {
+    if (!empty($form['#parameters'][3]) && $form['#parameters'][3] == 'simplenews_block_all') {
+      // Get rid of the fieldset to save screen space.
+      unset($form['subscriptions']['#type']);
+      // Prevent the form from redirecting to the front page.
+      $form['#redirect'] = FALSE;
+    }
+  }
 }
 
 /**
@@ -734,6 +742,10 @@ function simplenews_block($op = 'list', 
   switch ($op) {
     case 'list':
       $blocks = array();
+      $blocks['all'] = array(
+        'info' => t('Newsletter: all newsletters'),
+        'cache' => BLOCK_NO_CACHE,
+      );
       foreach (taxonomy_get_tree(variable_get('simplenews_vid', '')) as $newsletter) {
         //TODO: 1. without form -> by role; 2. with form -> user caching with refresh on subscribe/unsubscribe (option as setting) or no caching
         $blocks[$newsletter->tid] = array(
@@ -743,6 +755,7 @@ function simplenews_block($op = 'list', 
       }
       return $blocks;
     case 'configure':
+      if ($delta != 'all') {
       $form['simplenews_block_'. $delta]['simplenews_block_m_'. $delta] = array(
         '#type' => 'textfield',
         '#title' => t('Block message'),
@@ -784,16 +797,27 @@ function simplenews_block($op = 'list', 
         '#default_value' => variable_get('simplenews_block_r_'. $delta, 1),
         '#description' => t("Note: this requires permission 'view links in block'."),
       );
+      }
       return $form;
     case 'save':
+      if ($delta != 'all') {
       variable_set('simplenews_block_m_'. $delta, $edit['simplenews_block_m_'. $delta]);
       variable_set('simplenews_block_f_'. $delta, $edit['simplenews_block_f_'. $delta]);
       variable_set('simplenews_block_l_'. $delta, $edit['simplenews_block_l_'. $delta]);
       variable_set('simplenews_block_i_status_'. $delta, $edit['simplenews_block_i_status_'. $delta]);
       variable_set('simplenews_block_i_'. $delta, $edit['simplenews_block_i_'. $delta]);
       variable_set('simplenews_block_r_'. $delta, $edit['simplenews_block_r_'. $delta]);
+      }
       break;
     case 'view':
+      if ($delta == 'all') {
+        $block = array(
+          'subject' => t('Our newsletters'),
+          'content' => theme('simplenews_block_all'),
+        );
+        return $block;
+      }
+      else {
       if ($tree = taxonomy_get_tree(variable_get('simplenews_vid', ''))) {
         // Only display a block if $delta is a valid newsletter term id.
         foreach ($tree as $taxonomy) {
@@ -813,6 +837,7 @@ function simplenews_block($op = 'list', 
         return array();
       }
     }
+      }
     break;  
   }
 }
@@ -2030,6 +2055,10 @@ function simplenews_theme() {
       'template' => 'simplenews-block',
       'arguments' => array('tid' => NULL),
     ),
+    'simplenews_block_all' => array(
+      'file' => 'simplenews.subscription.inc',
+      'template' => 'simplenews-block-all',
+    ),
     'simplenews_status' => array(
       'template' => 'simplenews-status',
       'file' => 'simplenews.admin.inc',
@@ -2055,7 +2084,7 @@ function simplenews_theme() {
 }
 
 /**
- * Process variables to format the simplenews block.
+ * Process variables to format a single newsletter's block.
  *
  * Collect data and apply access restrictions.
  *
diff -uprbN simplenews_orig/simplenews.subscription.inc simplenews/simplenews.subscription.inc
--- simplenews_orig/simplenews.subscription.inc	2008-08-21 11:46:23.000000000 +0200
+++ simplenews/simplenews.subscription.inc	2008-09-09 09:48:01.000000000 +0200
@@ -180,3 +180,15 @@ function simplenews_admin_users_form(&$f
   $form['#redirect'] = 'admin/content/simplenews/users';
   return $form;
 }
+
+/**
+ * Process variables to format the subscription block for all newsletters.
+ *
+ * Include the subscriptions form in simplenews_confirm_subscription().
+ *
+ * @see simplenews-block-all.tpl.php
+ */
+function template_preprocess_simplenews_block_all(&$variables) {
+  // The third argument makes it possible for hook_form_alter() to recognize this instance of the form.
+  $variables['form'] = drupal_get_form('simplenews_subscription_manager_form', NULL, 'simplenews_block_all');
+}
