diff --git a/submitted_by.install b/submitted_by.install
index 66b76bc..a0ba564 100644
--- a/submitted_by.install
+++ b/submitted_by.install
@@ -15,3 +15,44 @@ function submitted_by_uninstall() {
     variable_del('submitted_by_comment_' . $type);
   }
 }
+
+/**
+ * Convert settings for view modes.
+ */
+function submitted_by_update_7000(&$sandbox) {
+  // Get stuff from entity system.
+  $entity_info = entity_get_info();
+
+  // Get all node type names.
+  $types = node_type_get_names();
+
+  // Progress info.
+  $sandbox['max'] = count($types);
+  $sandbox['progress'] = 0;
+
+  // Go through each content type.
+  foreach ($types as $type => $name) {
+    $strings = array();
+    $var = "submitted_by_$type";
+    $current = variable_get($var, NULL);
+
+    // Just in case we didn't finish last time.
+    if (is_array($current)) {
+      // Build a new string array.
+      foreach ($entity_info['view modes'] as $mode => $info) {
+        $strings[$mode] = $current;
+      }
+
+      // Save the array.
+      variable_set($var, $strings);
+    }
+
+    // Track our progress.
+    $sandbox['progress']++;
+  }
+
+  // Indicate that we're done.
+  $sandbox['#finished'] = 1;
+  
+  return t('The Submitted By module is now ready for View modes.');
+}
diff --git a/submitted_by.module b/submitted_by.module
index bcd9d5b..6d6f891 100644
--- a/submitted_by.module
+++ b/submitted_by.module
@@ -24,25 +24,38 @@ function submitted_by_form_node_type_form_alter(&$form, &$form_state) {
       ),
     );
 
-    // Note: node module will add "_type" to the variable name.
-    $form['display']['submitted_by']['submitted_by'] = array(
-      '#type' => 'textfield',
-      '#maxlength' => 255,
-      '#title' => t("Byline text"),
-      '#default_value' => $enabled ? $current_value : NULL,
-      '#description' => t("When a node is displayed, text in this box will be used to override the normal byline attribution and date-posted text. Default is \"Submitted by [node:author] on [node:created]\""),
-      '#element_validate' => array('token_element_validate'),
-      '#token_types' => array('node'),
-    );
+    // Get info about view_modes.
+    $entity_info = entity_get_info('node');
+
+    $form['display']['submitted_by']['view_modes'] = array(
+      '#type' => 'value',
+      '#value' => $entity_info['view modes'],
+      );
+
+    foreach($entity_info['view modes'] as $mode => $info) {
+      // Note: node module will add "_type" to the variable name.
+      $form['display']['submitted_by']["submitted_by_$mode"] = array(
+        '#type' => 'textfield',
+        '#maxlength' => 255,
+        '#title' => t("Byline text - @mode view mode", array('@mode' => $info['label'])),
+        '#default_value' => $enabled ? $current_value : NULL,
+        '#description' => t('When a node is displayed in the "@mode" view mode, the text in this box
+          will be used to override the normal byline attribution and date-posted text.
+          Default is "Submitted by [node:author] on [node:created]"', array('@mode' => $info['label'])),
+        '#element_validate' => array('token_element_validate'),
+        '#token_types' => array('node'),
+        );
+    }
+
     $form['display']['submitted_by']['token_help'] = array(
       '#theme' => 'token_tree',
       '#token_types' => array('node'),
-    );
+      );
 
     if (isset($form['comment'])) {
       $form['comment']['submitted_by'] = array(
         '#type' => 'container',
-      );
+        );
       $form['comment']['submitted_by']['submitted_by_comment'] = array(
         '#type' => 'textfield',
         '#maxlength' => 255,
@@ -51,13 +64,35 @@ function submitted_by_form_node_type_form_alter(&$form, &$form_state) {
         '#description' => t("When a comment is displayed, text in this box will be used to override the normal byline attribution and date-posted text. Default is \"Submitted by [comment:author] on [comment:created]\""),
       	'#element_validate' => array('token_element_validate'),
       	'#token_types' => array('comment'),
-      );
+        );
       $form['comment']['submitted_by']['token_help'] = array(
         '#theme' => 'token_tree',
         '#token_types' => array('comment'),
-      );
+        );
+    }
+
+    // Provide a submit handler to clean up our variables.
+    if (isset($form['#submit'])) {
+      array_unshift($form['#submit'], 'submitted_by_node_form_submit');
     }
+    else {
+      $form['#submit'] = array('submitted_by_node_form_submit');
+    }
+  }
+}
+
+/**
+ * Submission handler to aggregate the patterns into an array.
+ */
+function submitted_by_node_form_submit($form, &$form_state) {
+  $strings = array();
+  // Get all the values.
+  foreach ($form_state['values']['view_modes'] as $mode => $info) {
+    $strings[$mode] = $form_state['values']["submitted_by_$mode"];
+    unset($form_state['values']["submitted_by_$mode"]);
   }
+  // Save the settings.
+  variable_set('submitted_by_' . $form_state['values']['type'], $strings);
 }
 
 /**
@@ -100,7 +135,7 @@ function submitted_by_node_view($node, $view_mode, $langcode) {
   $fields = field_extra_fields_get_display('node', $node->type, $view_mode);
   if (isset($fields['submitted_by']['visible']) && $fields['submitted_by']['visible']) {
     $node->content['submitted'] =
-      array('#markup' => '<span class="submitted-by">' . submitted_by_do_replace($node) . '</span>');
+      array('#markup' => '<span class="submitted-by">' . submitted_by_do_replace($node, $view_mode) . '</span>');
   }
   else {
     $node->content['submitted'] = array(array());
@@ -109,12 +144,15 @@ function submitted_by_node_view($node, $view_mode, $langcode) {
   return;
 }
 
-function submitted_by_do_replace($node) {
-  $submitted_by = variable_get('submitted_by_' . $node->type, NULL);
-  if ($submitted_by) {
+/**
+ * Helper function to call token_replace().
+ */
+function submitted_by_do_replace($node, $view_mode = '') {
+  $submitted_by = variable_get('submitted_by_' . $node->type, array());
+  if ($submitted_by && !empty($submitted_by[$view_mode])) {
     // Get node tokens.
     // Note that we do not suppress un-replaced tokens.
-    $output = token_replace($submitted_by, array('node' => $node));
+    $output = token_replace($submitted_by[$view_mode], array('node' => $node));
     // Get whatever else can be found, like user stuff.
     $output = token_replace($output);
 
@@ -130,7 +168,7 @@ function submitted_by_do_replace($node) {
  */
 function submitted_by_process_node(&$variables) {
   $node = $variables['node'];
-  $variables['submitted'] = submitted_by_do_replace($node);
+  $variables['submitted'] = submitted_by_do_replace($node, $variables['view_mode']);
 
   // Override the regular submitted variable.
   if (isset($variables['content']['submitted_by'])) {
