final fix for thread sort indent before 1.2.6
[squirrelmail.git] / src / compose.php
index 22935f9554cc715f87bce7fda6f304399d05dc52..8b9e12057d97d8f5234c529ce89b451dfc7abd70 100644 (file)
@@ -27,56 +27,7 @@ require_once('../functions/plugin.php');
 
 /* --------------------- Specific Functions ------------------------------ */
 
-/**
- * Wraps text at $wrap characters
- *
- * Has a problem with special HTML characters, so call this before
- * you do character translation.
- *
- * Specifically, &#039 comes up as 5 characters instead of 1.
- * This should not add newlines to the end of lines.
- */
-function sqWordWrap(&$line, $wrap) {
-    ereg("^([\t >]*)([^\t >].*)?$", $line, $regs);
-    $beginning_spaces = $regs[1];
-    if (isset($regs[2])) {
-        $words = explode(' ', $regs[2]);
-    } else {
-        $words = '';
-    }
-    
-    $i = 0;
-    $line = $beginning_spaces;
-    
-    while ($i < count($words)) {
-        /* Force one word to be on a line (minimum) */
-        $line .= $words[$i];
-        $line_len = strlen($beginning_spaces) + strlen($words[$i]) + 2;
-        if (isset($words[$i + 1]))
-            $line_len += strlen($words[$i + 1]);
-        $i ++;
-        
-        /* Add more words (as long as they fit) */
-        while ($line_len < $wrap && $i < count($words)) {
-            $line .= ' ' . $words[$i];
-            $i++;
-            if (isset($words[$i]))
-                $line_len += strlen($words[$i]) + 1;
-            else
-                $line_len += 1;
-        }
-        
-        /* Skip spaces if they are the first thing on a continued line */
-        while (!isset($words[$i]) && $i < count($words)) {
-            $i ++;
-        }
-        
-        /* Go to the next line if we have more to process */
-        if ($i < count($words)) {
-            $line .= "\n" . $beginning_spaces;
-        }
-    }
-}
+
 
 /**
  * Does the opposite of sqWordWrap()
@@ -136,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 {
@@ -188,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 = '';
@@ -411,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;
@@ -643,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') {
@@ -738,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);
@@ -794,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";
@@ -810,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";
@@ -827,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");
         }
     }
 
@@ -913,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;
 }