Templates for printer-friendly views
authorstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 18 Oct 2006 18:39:45 +0000 (18:39 +0000)
committerstevetruckstuff <stevetruckstuff@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Wed, 18 Oct 2006 18:39:45 +0000 (18:39 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11923 7612ce4b-ef26-0410-bec9-ea0150e637f0

src/printer_friendly_bottom.php
src/printer_friendly_main.php
src/printer_friendly_top.php
templates/default/printer_friendly_bottom.tpl [new file with mode: 0644]
templates/default/printer_friendly_main.tpl [new file with mode: 0644]
templates/default/printer_friendly_top.tpl [new file with mode: 0644]

index 00e416b..e0f338a 100644 (file)
@@ -68,7 +68,9 @@ $body = '';
 if ($ent_ar[0] != '') {
   for ($i = 0; $i < count($ent_ar); $i++) {
      $body .= formatBody($imapConnection, $message, $color, $wrap_at, $ent_ar[$i], $passed_id, $mailbox, TRUE);
-     $body .= '<hr style="height: 1px;" />';
+     if ($i < count($ent_ar)-1) {
+        $body .= '<hr />';
+     }
   }
   $hookResults = do_hook('message_body', $body);
   $body = $hookResults[1];
@@ -96,60 +98,26 @@ $cc = decodeHeader($cc);
 $from = decodeHeader($from);
 $subject = decodeHeader($subject);
 
-$attachments = pf_show_attachments($message,$ent_ar,$mailbox,$passed_id);
-
 // --end display setup--
 
 
 /* --start browser output-- */
-displayHtmlHeader( $subject, '', FALSE );
+displayHtmlHeader($subject);
 
-echo '<body text="#000000" bgcolor="#FFFFFF" link="#000000" vlink="#000000" alink="#000000">'."\n" .
-     /* headers (we use table because translations are not all the same width) */
-     html_tag( 'table', '', 'center', '', 'cellspacing="0" cellpadding="0" border="0" width="100%"' ) .
-     html_tag( 'tr',
-         html_tag( 'td', '<b>'._("From").':</b>&nbsp;', 'left' ,'','valign="top"') .
-         html_tag( 'td', $from, 'left' )
-     ) . "\n" .
-     html_tag( 'tr',
-         html_tag( 'td', '<b>'._("Subject").':</b>&nbsp;', 'left','','valign="top"' ) .
-         html_tag( 'td', $subject, 'left' )
-     ) . "\n" .
-     html_tag( 'tr',
-         html_tag( 'td', '<b>'._("Date").':</b>&nbsp;', 'left' ) .
-         html_tag( 'td', htmlspecialchars($date), 'left' )
-     ) . "\n" .
-     html_tag( 'tr',
-         html_tag( 'td', '<b>'._("To").':</b>&nbsp;', 'left','','valign="top"' ) .
-         html_tag( 'td', $to, 'left' )
-    ) . "\n";
-    if ( strlen($cc) > 0 ) { /* only show Cc: if it's there... */
-         echo html_tag( 'tr',
-             html_tag( 'td', '<b>'._("Cc").':</b>&nbsp;', 'left','','valign="top"' ) .
-             html_tag( 'td', $cc, 'left' )
-         );
-     }
-     /* body */
-     echo html_tag( 'tr',
-         html_tag( 'td', '<hr style="height: 1px;" /><br />' . "\n" . $body, 'left', '', 'colspan="2"' )
-     ) . "\n" ;
+$aHeaders = array();
+$aHeaders[ _("From") ] = $from;
+$aHeaders[ _("Subject") ] = $subject;
+$aHeaders[ _("Date") ] = htmlspecialchars($date);
+$aHeaders[ _("To") ] = $to;
+$aHeaders[ _("Cc") ] = $cc;
 
-     if (! empty($attachments)) {
-         // attachments title
-         echo html_tag( 'tr',
-             html_tag( 'td','<b>'._("Attachments:").'</b>', 'left', '', 'colspan="2"' )
-         ) . "\n" ;
-         // list of attachments
-         echo html_tag( 'tr',
-             html_tag( 'td',$attachments, 'left', '', 'colspan="2"' )
-         ) . "\n" ;
-         // add separator line
-         echo html_tag( 'tr',
-             html_tag( 'td', '<hr style="height: 1px;" />', 'left', '', 'colspan="2"' )
-         ) . "\n" ;
-     }
+$attachments_ar = buildAttachmentArray($message, $ent_ar, $mailbox, $passed_id);
+
+$oTemplate->assign('headers', $aHeaders);
+$oTemplate->assign('message_body', $body);
+$oTemplate->assign('attachments', $attachments_ar);
 
-     echo '</table>' . "\n";
+$oTemplate->display('printer_friendly_bottom.tpl');
 $oTemplate->display('footer.tpl');
 
 /* --end browser output-- */
@@ -199,83 +167,3 @@ function pf_clean_string ( $unclean_string, $num_leading_spaces ) {
 
     return $clean_string;
 } /* end pf_clean_string() function */
-
-/**
- * Displays attachment information
- *
- * Stripped version of formatAttachments() function from functions/mime.php.
- * @param object $message SquirrelMail message object
- * @param array $exclude_id message parts that are not attachments.
- * @param string $mailbox mailbox name
- * @param integer $id message id
- * @return string html formated attachment information.
- */
-function pf_show_attachments($message, $exclude_id, $mailbox, $id) {
-    global $where, $what, $startMessage, $color, $passed_ent_id;
-
-    $att_ar = $message->getAttachments($exclude_id);
-
-    if (!count($att_ar)) return '';
-
-    $attachments = '';
-
-    $urlMailbox = urlencode($mailbox);
-
-    foreach ($att_ar as $att) {
-        $ent = $att->entity_id;
-        $header = $att->header;
-        $type0 = strtolower($header->type0);
-        $type1 = strtolower($header->type1);
-        $name = '';
-
-        if ($type0 =='message' && $type1 == 'rfc822') {
-            $rfc822_header = $att->rfc822_header;
-            $filename = $rfc822_header->subject;
-            if (trim( $filename ) == '') {
-                $filename = 'untitled-[' . $ent . ']' ;
-            }
-            $from_o = $rfc822_header->from;
-            if (is_object($from_o)) {
-                $from_name = decodeHeader($from_o->getAddress(true));
-            } else {
-                $from_name = _("Unknown sender");
-            }
-            $description = '<tr>'.
-                html_tag( 'td',_("From:"), 'right') .
-                html_tag( 'td',$from_name, 'left') .
-                '</tr>';
-        } else {
-            $filename = $att->getFilename();
-            if ($header->description) {
-                $description = '<tr>'.
-                    html_tag( 'td',_("Info:"), 'right') .
-                    html_tag( 'td',decodeHeader($header->description), 'left') .
-                    '</tr>';
-            } else {
-                $description = '';
-            }
-        }
-
-        $display_filename = $filename;
-
-        // TODO: maybe make it nicer?
-        $attachments .= '<table cellpadding="1" cellspacing="0" width="100%" border="1"><tr><th colspan="2">'.decodeHeader($display_filename).'</th></tr>' .
-            '<tr>'.
-            html_tag( 'td',_("Size:"), 'right', '', 'width="25%"') .
-            html_tag( 'td',show_readable_size($header->size), 'left', '', 'width="75%"') .
-            '</tr><tr>' . "\n" .
-            html_tag( 'td',_("Type:"), 'right', '', 'width="25%"') .
-            html_tag( 'td',htmlspecialchars($type0).'/'.htmlspecialchars($type1), 'left', '', 'width="75%"') .
-            '</tr>';
-        if (! empty($description)) {
-            $attachments .= $description;
-        }
-        $attachments .= "</table>\n";
-    }
-    return $attachments;
-}
-
-
-/* --end pf-specific functions */
-
-?>
index 45050fa..a4d3bed 100644 (file)
@@ -27,17 +27,18 @@ if ( ! sqgetGlobalVar('mailbox',$mailbox,SQ_GET) ||
     sqgetGlobalVar('show_html_default', $show_html_default, SQ_FORM);
 /* end globals */
     displayHtmlHeader( _("Printer Friendly"), '', false, true );
-    echo '<frameset rows="60, *">' . "\n";
-    echo '<frame src="printer_friendly_top.php" name="top_frame" '
-        . 'scrolling="no" noresize="noresize" frameborder="0" />' . "\n";
-    echo '<frame src="printer_friendly_bottom.php?passed_ent_id='
-        . urlencode($passed_ent_id) . '&amp;mailbox=' . urlencode($mailbox)
-        . '&amp;passed_id=' . $passed_id
-        . '&amp;view_unsafe_images='.$view_unsafe_images
-        . '&amp;show_html_default='.$show_html_default
-        . '" name="bottom_frame" frameborder="0" />' . "\n";
-    echo "</frameset>\n";
-}
+    
+    $oErrorHandler->setDelayedErrors(true);
+    
+    $url = 'printer_friendly_bottom.php?passed_ent_id=' .
+           urlencode($passed_ent_id) . '&amp;mailbox=' . urlencode($mailbox) .
+           '&amp;passed_id=' . $passed_id .
+           '&amp;view_unsafe_images='.$view_unsafe_images .
+           '&amp;show_html_default='.$show_html_default;
+           
+    $oTemplate->assign('printer_friendly_url', $url);
+
+    $oTemplate->display('printer_friendly_main.tpl');
 
-?>
-</html>
+    $oTemplate->display('footer.tpl');
+}
index 837e58c..2ffaf6b 100644 (file)
  */
 include('../include/init.php');
 
+displayHtmlHeader( _("Printer Friendly"));
+$oErrorHandler->setDelayedErrors(true);
 
-displayHtmlHeader( _("Printer Friendly"),
-             "<script type=\"text/javascript\">\n".
-             "<!--\n".
-             "function printPopup() {\n".
-                "parent.frames[1].focus();\n".
-                "parent.frames[1].print();\n".
-             "}\n".
-             "-->\n".
-             "</script>\n", FALSE );
-
-
-echo '<body text="'.$color[8].'" bgcolor="'.$color[3].'" link="'.$color[7].'" vlink="'.$color[7].'" alink="'.$color[7]."\">\n" .
-     html_tag( 'div',
-         '<form>'.
-         '<input type="button" value="' . _("Print") . '" onclick="printPopup()" /> '.
-         '<input type="button" value="' . _("Close") . '" onclick="window.parent.close()" />'.
-         '</form>',
-     'right' );
+$oTemplate->display('printer_friendly_top.tpl');
 
 $oTemplate->display('footer.tpl');
 ?>
\ No newline at end of file
diff --git a/templates/default/printer_friendly_bottom.tpl b/templates/default/printer_friendly_bottom.tpl
new file mode 100644 (file)
index 0000000..0ba6c7c
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * printer_friendly_bottom.tpl
+ *
+ * Display the printer friendly version of an email.  This is called "_bottom"
+ * because when javaascript is enabled, the printer friendly view is a window
+ * with two frames.
+ * 
+ * The following variables are available in this template:
+ *      $headers      - array containing the headers to be displayed for this email.
+ *                      Each element in the array represents a separate header.
+ *                      The index of each element is the field name; the value is
+ *                      the value of that field.
+ *      $message_body - formatted, scrubbed body of the email.
+ *      $attachments  - array containing info for all message attachments.  Each
+ *                      element in the array represents a separate attachment and
+ *                      contains the following elements:
+ *         $el['Name']         - The name of the attachment
+ *         $el['Description']  - Description of the attachment
+ *         $el['DefaultHREF']  - URL to the action that should occur when the name is clicked
+ *         $el['DownloadHREF'] - URL to download the attachment
+ *         $el['ViewHREF']     - URL to view the attachment.  Empty if not available.
+ *         $el['Size']         - Size of attachment in bytes.
+ *         $el['ContentType']  - Content-Type of the attachment
+ *         $el['OtherLinks']   - array containing links to any other actions
+ *                               available for this attachment that might be
+ *                               provided by plugins, for example.  Each element represents
+ *                               a different action and contains the following elements:
+ *              $link['HREF'] - URL to access the functionality
+ *              $link['Text'] - Text representing the functionality.
+ *      
+ *
+ * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage templates
+ */
+
+/** add required includes **/
+include_once(SM_PATH . 'templates/util_global.php');
+
+/** extract template variables **/
+extract($t);
+
+/** Begin template **/
+?>
+<div class="printerFriendly">
+<table cellspacing="0" class="table_blank">
+ <?php
+    foreach ($headers as $field=>$value) {
+        # If the value is empty, skip the entry.
+        if (empty($value))
+            continue;
+        ?>
+ <tr>
+  <td class="fieldName">
+   <?php echo $field; ?>:
+  </td>
+  <td class="fieldValue">
+   <?php echo $value; ?>
+  </td>
+ </tr>
+        <?php
+    }
+ ?>
+</table>
+<hr />
+<?php echo $message_body; ?>
+<?php
+if (count($attachments) > 0) {
+    ?>
+<hr />
+<b>Attachments:</b>
+ <?php
+    foreach ($attachments as $attachment) {
+        ?>
+<table cellspacing="0" border="1" class="attach">
+ <tr>
+  <td colspan="2" class="attachName">
+   <?php echo $attachment['Name']; ?>
+  </td>
+ </tr>
+ <tr>
+  <td class="attachField">
+   <?php echo _("Size"); ?>:
+  </td>
+  <td class="attachFieldValue">
+   <?php echo humanReadableSize($attachment['Size']); ?>
+  </td>
+ </tr>
+ <tr>
+  <td class="attachField">
+   <?php echo _("Type"); ?>:
+  </td>
+  <td class="attachFieldValue">
+   <?php echo $attachment['ContentType']; ?>
+  </td>
+ </tr>
+ <tr>
+  <td class="attachField">
+   <?php echo _("Info"); ?>:
+  </td>
+  <td class="attachFieldValue">
+   <?php echo $attachment['Description']; ?>
+  </td>
+ </tr>
+</table>
+        <?php
+    }
+}
+?>
+</div>
\ No newline at end of file
diff --git a/templates/default/printer_friendly_main.tpl b/templates/default/printer_friendly_main.tpl
new file mode 100644 (file)
index 0000000..8f0cb02
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * printer_friendly_main.tpl
+ *
+ * Display the entire printer friendly window.  By default, this uses frames when
+ * javascript is available.
+ * 
+ * The following variables are available in this template:
+ *      $printer_friendly_url - URL to display the printer-frinedly version of a message
+ *
+ * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage templates
+ */
+
+/** add required includes **/
+
+/** extract template variables **/
+extract($t);
+
+/** Begin template **/
+?>
+<frameset rows="60, *">
+ <frame src="printer_friendly_top.php" name="top_frame" scrolling="no" noresize="noresize" frameborder="0" />
+ <frame src="<?php echo $printer_friendly_url; ?>" name="bottom_frame" frameborder="0" />
+</frameset>
\ No newline at end of file
diff --git a/templates/default/printer_friendly_top.tpl b/templates/default/printer_friendly_top.tpl
new file mode 100644 (file)
index 0000000..cc70774
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+/**
+ * printer_friendly_top.tpl
+ *
+ * Top frame of the printer-friendly window.  Bt default, this is only displayed
+ * when javascript is enabled.
+ * 
+ * There are no additional variables given to this template.
+ *
+ * @copyright &copy; 1999-2006 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
+ * @version $Id$
+ * @package squirrelmail
+ * @subpackage templates
+ */
+
+/** add required includes **/
+
+/** extract template variables **/
+extract($t);
+
+/** Begin template **/
+?>
+<script type="text/javascript">
+<!--
+function printPopup() {
+    parent.frames[1].focus();
+    parent.frames[1].print();
+}
+-->
+</script>
+<div class="printerFriendlyTop">
+<table class="table_blank" cellspacing="0">
+ <tr>
+  <td>
+   <input type="button" value="<?php echo _("Print"); ?>" onclick="printPopup()" />
+   <input type="button" value="<?php echo _("Close"); ?>" onclick="window.parent.close()" />
+  </td>
+ </tr>
+</table>
+</div>
\ No newline at end of file