diff --git a/js/workbench_moderation.js b/js/workbench_moderation.js
new file mode 100644
index 0000000..57a48ca
--- /dev/null
+++ b/js/workbench_moderation.js
@@ -0,0 +1,43 @@
+/**
+ * @file
+ * Sets the summary for Workbench moderation on vertical tabs.
+ */
+Drupal.behaviors.workbenchModerationVerticalTabsSummary = {
+  attach: function(context) {
+
+    // Gets the current values from the fieldset.
+    var getValues = function($context) {
+      var $select = $context.find('#edit-workbench-moderation-state-new');
+      return {
+        state: $select.find('option[value="' + $select.val() + '"]').text().replace('Current: ', ''),
+        log: $context.find('#edit-log').val()
+      };
+    };
+
+    // Find the fieldset, save initial state & register the summary callback.
+    var $fieldset = jQuery('fieldset#' + Drupal.settings.workbenchModerationId, context);
+    var initial = getValues($fieldset);
+    $fieldset.drupalSetSummary(function(context) {
+
+      // Get the new values from the fieldset.
+      var current = getValues(jQuery(context));
+
+      // Prepare arguments for Drupal.t().
+      var message = {
+        '!current': current.state,
+        '!initial': initial.state.toLowerCase()
+      };
+
+      // Build the message string and return it.
+      message = (current.state == initial.state) ? Drupal.t('!current (unchanged)', message) : Drupal.t('!current (was !initial)', message);
+      if (current.log == initial.log) {
+        message += '<br /><strong>' + Drupal.t('Log message not changed') + '</strong>';
+      }
+      else if (current.log.length < 1) {
+        message += '<br /><strong>' + Drupal.t('Log message missing') + '</strong>';
+      }
+
+      return message;
+    });
+  }
+};
diff --git a/workbench_moderation.module b/workbench_moderation.module
index b652b6f..781fa15 100644
--- a/workbench_moderation.module
+++ b/workbench_moderation.module
@@ -881,6 +881,14 @@ function workbench_moderation_form_node_form_alter(&$form, $form_state) {
     $form['revision_information']['#access'] = FALSE;
   }
 
+  // Setup the JS for the vertical tabs summary.
+  // @todo Move this to $form[#attached].
+  $fieldset_id = $form['options']['#access'] ? 'edit-options' : 'edit-revision-information';
+  drupal_add_js(array('workbenchModerationId' => $fieldset_id), 'setting');
+  // The heavy weight allows this script to replace the default summary
+  // callbacks that get registered by "lighter" scripts.
+  drupal_add_js(drupal_get_path('module', 'workbench_moderation') . '/js/workbench_moderation.js', array('weight' => 90));
+
   // Users can not choose to publish content; content can only be published by
   // setting the content's moderation state to "Published".
   $form['options']['status']['#access'] = FALSE;
