Index: includes/webform.submissions.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/includes/webform.submissions.inc,v
retrieving revision 1.7
diff -u -r1.7 webform.submissions.inc
--- includes/webform.submissions.inc	21 Jan 2010 06:02:51 -0000	1.7
+++ includes/webform.submissions.inc	21 Jan 2010 07:34:25 -0000
@@ -144,9 +144,18 @@
     $output = webform_submission_render($node, $submission, $format);
   }
 
+  // Determine the mode in which we're displaying this submission.
+  $mode = ($format != 'form') ? 'display' : 'form';
+  if (preg_match("!^q=print/!", $_SERVER['QUERY_STRING'])) {
+    $mode = 'print';
+  }
+  if (preg_match("!^q=printpdf/!", $_SERVER['QUERY_STRING'])) {
+    $mode = 'pdf';
+  }
+
   // Add navigation for administrators.
   if (user_access('access all webform results') || (user_access('access own webform results') && $user->uid == $node->uid)) {
-    $navigation = theme('webform_submission_navigation', $node, $submission, $format != 'form' ? 'display' : 'form');
+    $navigation = ($mode != 'pdf') ? theme('webform_submission_navigation', $node, $submission, $mode) : NULL;
     $information = theme('webform_submission_information', $node, $submission);
   }
   else {
@@ -396,10 +405,11 @@
  * Preprocess function for webform-submission-navigation.tpl.php
  */
 function template_preprocess_webform_submission_navigation(&$vars) {
+  $start_path = ($vars['mode'] == 'print') ? 'print/' : 'node/';
   $vars['previous'] = db_result(db_query('SELECT MAX(sid) FROM {webform_submissions} WHERE nid = %d AND sid < %d', array($vars['node']->nid, $vars['submission']->sid)));
   $vars['next'] = db_result(db_query('SELECT MIN(sid) FROM {webform_submissions} WHERE nid = %d AND sid > %d', array($vars['node']->nid, $vars['submission']->sid)));
-  $vars['previous_url'] = 'node/' . $vars['node']->nid . '/submission/' . $vars['previous'] . ($vars['mode'] == 'form' ? '/edit' : '');
-  $vars['next_url'] = 'node/' . $vars['node']->nid . '/submission/' . $vars['next'] . ($vars['mode'] == 'form' ? '/edit' : '');
+  $vars['previous_url'] = $start_path . $vars['node']->nid . '/submission/' . $vars['previous'] . ($vars['mode'] == 'form' ? '/edit' : '');
+  $vars['next_url'] = $start_path . $vars['node']->nid . '/submission/' . $vars['next'] . ($vars['mode'] == 'form' ? '/edit' : '');
 }
 
 /**
Index: includes/webform.report.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/webform/includes/webform.report.inc,v
retrieving revision 1.10
diff -u -r1.10 webform.report.inc
--- includes/webform.report.inc	21 Jan 2010 06:02:51 -0000	1.10
+++ includes/webform.report.inc	21 Jan 2010 07:34:25 -0000
@@ -105,7 +105,7 @@
     $columns[] = array('data' => t('User'), 'field' => 'name');
     $columns[] = array('data' => t('IP Address'), 'field' => 'remote_addr');
   }
-  $columns[] = array('data' => t('Operations'), 'colspan' => 3);
+  $columns[] = array('data' => t('Operations'), 'colspan' => module_exists('print') ? 5 : 3);
 
   return $columns;
 }
@@ -130,6 +130,8 @@
   // This header has to be generated separately so we can add the SQL necessary
   // to sort the results.
   $header = theme('webform_results_submissions_header', $node);
+  $operation_column = end($header);
+  $operation_total = $operation_column['colspan'];
 
   $rows = array();
   foreach ($submissions as $sid => $submission) {
@@ -143,6 +145,14 @@
     }
     $row[] = l(t('View'), "node/$node->nid/submission/$sid");
     $operation_count = 1;
+    if (module_exists('print_pdf') && user_access('access PDF version')) {
+      $row[] = l(t('PDF'), "printpdf/$node->nid/submission/$sid", array('query' => drupal_get_destination()));
+      $operation_count++;
+    }
+    if (module_exists('print') && user_access('access print')) {
+      $row[] = l(t('Print'), "print/$node->nid/submission/$sid");
+      $operation_count++;
+    }
     if ((user_access('edit own webform submissions') && $user->uid == $submission->uid) || user_access('edit all webform submissions')) {
       $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit", array('query' => drupal_get_destination()));
       $operation_count++;
@@ -151,8 +161,8 @@
       $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => drupal_get_destination()));
       $operation_count++;
     }
-    if ($operation_count < 3) {
-      $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => 4 - $operation_count);
+    if ($operation_count < $operation_total) {
+      $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1);
     }
     $rows[] = $row;
   }
