lets the users set the size of the 'compose in new window' pop up
[squirrelmail.git] / src / compose.php
index de50217968706d9fc4cf4e9c709ed3cedc170872..8b9e12057d97d8f5234c529ce89b451dfc7abd70 100644 (file)
@@ -25,6 +25,41 @@ require_once('../functions/smtp.php');
 require_once('../functions/display_messages.php');
 require_once('../functions/plugin.php');
 
+/* --------------------- Specific Functions ------------------------------ */
+
+
+
+/**
+ * Does the opposite of sqWordWrap()
+ */
+function sqUnWordWrap(&$body) {
+    $lines = explode("\n", $body);
+    $body = '';
+    $PreviousSpaces = '';
+    for ($i = 0; $i < count($lines); $i ++) {
+        ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs);
+        $CurrentSpaces = $regs[1];
+        if (isset($regs[2])) {
+            $CurrentRest = $regs[2];
+        }
+        
+        if ($i == 0) {
+            $PreviousSpaces = $CurrentSpaces;
+            $body = $lines[$i];
+        } else if (($PreviousSpaces == $CurrentSpaces) /* Do the beginnings match */
+                   && (strlen($lines[$i - 1]) > 65)    /* Over 65 characters long */
+                   && strlen($CurrentRest)) {          /* and there's a line to continue with */
+            $body .= ' ' . $CurrentRest;
+        } else {
+            $body .= "\n" . $lines[$i];
+            $PreviousSpaces = $CurrentSpaces;
+        }
+    }
+    $body .= "\n";
+}
+
+/* ----------------------------------------------------------------------- */
+
 if (!isset($attachments)) {
     $attachments = array();
     session_register('attachments');
@@ -52,7 +87,10 @@ if (isset($draft)) {
     if (! isset($MDN)) {
         $MDN = 'False';
     }
-    if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $MDN, $session)) {
+    if (! isset($mailprio)) {
+        $mailprio = '';
+    }
+    if (!saveMessageAsDraft($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id, $mailprio, $session)) {
         showInputForm($session);
         exit();
     } else {
@@ -104,8 +142,7 @@ if (isset($send)) {
         /*
          * Rewrap $body so that no line is bigger than $editor_size
          * This should only really kick in the sqWordWrap function
-         * if the browser doesn't support "HARD" as the wrap type
-         * Or, in Opera's case, something goes wrong.
+         * if the browser doesn't support "VIRTUAL" as the wrap type.
          */
         $body = explode("\n", $body);
         $newBody = '';
@@ -327,6 +364,9 @@ function newMail () {
     $send_to = decodeHeader($send_to, false);
     $send_to_cc = decodeHeader($send_to_cc, false);
     $send_to_bcc = decodeHeader($send_to_bcc, false);
+    $send_to = str_replace('&lt;', '<', str_replace('&gt;', '>', str_replace('&amp;', '&', str_replace('&quot;', '"', $send_to))));
+    $send_to_cc = str_replace('&lt;', '<', str_replace('&gt;', '>', str_replace('&amp;', '&', str_replace('&quot;', '"', $send_to_cc))));
+    $send_to_bcc = str_replace('&lt;', '<', str_replace('&gt;', '>', str_replace('&amp;', '&', str_replace('&quot;', '"', $send_to_bcc))));
 
     if ($forward_id) {
         $id = $forward_id;
@@ -559,6 +599,7 @@ function showInputForm ($session) {
     }
     echo '<TABLE WIDTH="100%" ALIGN=center CELLSPACING=0 BORDER=0>' . "\n";
     if ($compose_new_win == '1') {
+        echo '<TABLE ALIGN=CENTER BGCOLOR="'.$color[0].'" WIDTH="100%" BORDER=0>'."\n";
         echo '   <TR><TD></TD><TD ALIGN="RIGHT"><INPUT TYPE="BUTTON" NAME="Close" onClick="return self.close()" VALUE='._("Close").'></TD></TR>'."\n";
     }
     if ($location_of_buttons == 'top') {
@@ -654,7 +695,7 @@ function showInputForm ($session) {
     echo '   <TR>' . "\n" .
          '      <TD BGCOLOR="' . $color[4] . '" COLSPAN=2>' . "\n" .
          '         &nbsp;&nbsp;<TEXTAREA NAME=body ROWS=20 COLS="' .
-         $editor_size . '" WRAP=HARD>';
+         $editor_size . '" WRAP="VIRTUAL">';
     if ($use_signature == true && $newmail == true && !isset($from_htmladdr_search)) {
         if ($sig_first == '1') {
             echo "\n\n".($prefix_sig==true? "-- \n":'').htmlspecialchars($signature);
@@ -710,7 +751,9 @@ function showInputForm ($session) {
              '</td></tr>';
     }
     /* End of attachment code */
-
+    if ($compose_new_win == '1') {
+        echo '</TABLE>'."\n";
+    }
     echo '</TABLE>' . "\n";
     if ($reply_id) {
         echo '<input type=hidden name=reply_id value=' . $reply_id . ">\n";
@@ -726,6 +769,7 @@ function showInputForm ($session) {
 function showComposeButtonRow() {
     global $use_javascript_addr_book, $save_as_draft,
         $default_use_priority, $mailprio, $default_use_mdn,
+       $request_mdn, $request_dr,
         $data_dir, $username;
 
     echo "  <TR><TD>\n</TD><TD>\n";
@@ -743,8 +787,10 @@ function showComposeButtonRow() {
     if ($default_use_mdn) {
         if ($mdn_user_support) {
             echo "\n\t". _("Receipt") .': '.
-            '<input type="checkbox" name="request_mdn" value=1>'. _("On read").
-            ' <input type="checkbox" name="request_dr" value=1>'. _("On Delivery");
+            '<input type="checkbox" name="request_mdn" value=1'.
+               ($request_mdn=='1'?' checked':'') .'>'. _("On read").
+            ' <input type="checkbox" name="request_dr" value=1'.
+               ($request_dr=='1'?' checked':'') .'>'. _("On Delivery");
         }
     }
 
@@ -829,15 +875,18 @@ function ClearAttachments($session)
     $hashed_attachment_dir = getHashedDir($username, $attachment_dir);
 
     $rem_attachments = array();
-    foreach ($attachments as $info) {
-       if ($info['session'] == $session) {
-           $attached_file = "$hashed_attachment_dir/$info[localfilename]";
-           if (file_exists($attached_file)) {
-               unlink($attached_file);
-           }
-       } else {
-           $rem_attachments[] = $info;
-       }
+    if (is_array($attachments)) {
+        foreach ($attachments as $info) {
+               if ($info['session'] == $session) {
+               $attached_file = "$hashed_attachment_dir/$info[localfilename]";
+               if (file_exists($attached_file)) {
+                       unlink($attached_file);
+               }
+               } 
+            else {
+                   $rem_attachments[] = $info;
+               }
+        }
     }
     $attachments = $rem_attachments;
 }