Reinserting configurable body quote
[squirrelmail.git] / src / compose.php
index 7f1d6809b9b2654037e7f77feb5356a3edf2bfb8..078c7ee92203d5d152d2611e28ad8350273c74ee 100644 (file)
  *    - Send mail
  *    - Save As Draft
  *
- * $Id$
+ * @version $Id$
  * @package squirrelmail
  */
 
-/** Path for SquirrelMail required files. */
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
 define('SM_PATH','../');
 
 /* SquirrelMail required files. */
@@ -577,9 +580,16 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
     global $editor_size, $default_use_priority, $body, $idents,
            $use_signature, $composesession, $data_dir, $username,
            $username, $key, $imapServerAddress, $imapPort, $compose_messages,
-           $composeMessage;
+           $composeMessage, $body_quote;
     global $languages, $squirrelmail_language, $default_charset;
 
+    /*
+     * Set $default_charset to correspond with the user's selection
+     * of language interface. $default_charset global is not correct,
+     * if message is composed in new window.
+     */
+    set_my_charset();
+
     $send_to = $send_to_cc = $send_to_bcc = $subject = $identity = '';
     $mailprio = 3;
 
@@ -646,7 +656,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
         }
 
         if ( $actual && is_conversion_safe($actual) && $actual != $default_charset){
-        $bodypart = charset_decode($actual,$bodypart);
+          $bodypart = charset_convert($actual,$bodypart,$default_charset);
         }
 
             $body .= $bodypart;
@@ -790,9 +800,9 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
                 sqWordWrap($line, ($editor_size));
                 if (preg_match("/^(>+)/", $line, $matches)) {
                     $gt = $matches[1];
-                    $body .= '>' . str_replace("\n", "\n>$gt ", rtrim($line)) ."\n";
+                    $body .= $body_quote . str_replace("\n", "\n$body_quote$gt ", rtrim($line)) ."\n";
                 } else {
-                    $body .= '> ' . str_replace("\n", "\n> ", rtrim($line)) . "\n";
+                    $body .= $body_quote . (!empty($body_quote) ? ' ' : '') . str_replace("\n", "\n$body_quote" . (!empty($body_quote) ? ' ' : ''), rtrim($line)) . "\n";
                 }
             }
             $body = getReplyCitation($from , $orig_header->date) . $body;
@@ -983,11 +993,11 @@ function showInputForm ($session, $values=false) {
 
     /* display select list for identities */
     if (count($idents) > 1) {
-       $ident_list = array();
-       foreach($idents as $id => $data) {
-               $ident_list[$id] =
-                       $data['full_name'].' <'.$data['email_address'].'>';
-       }
+      $ident_list = array();
+      foreach($idents as $id => $data) {
+        $ident_list[$id] =
+          $data['full_name'].' <'.$data['email_address'].'>';
+      }
         echo '   <tr>' . "\n" .
                     html_tag( 'td', '', 'right', $color[4], 'width="10%"' ) .
                     _("From:") . '</td>' . "\n" .
@@ -1010,14 +1020,14 @@ function showInputForm ($session, $values=false) {
                 html_tag( 'td', '', 'right', $color[4] ) .
                 _("CC:") . '</td>' . "\n" .
                 html_tag( 'td', '', 'left', $color[4] ) .
-               addInput('send_to_cc', $send_to_cc, 60). '<br />' . "\n" .
+      addInput('send_to_cc', $send_to_cc, 60). '<br />' . "\n" .
          '      </td>' . "\n" .
          '   </tr>' . "\n" .
          '   <tr>' . "\n" .
                 html_tag( 'td', '', 'right', $color[4] ) .
                 _("BCC:") . '</td>' . "\n" .
                 html_tag( 'td', '', 'left', $color[4] ) .
-               addInput('send_to_bcc', $send_to_bcc, 60).'<br />' . "\n" .
+      addInput('send_to_bcc', $send_to_bcc, 60).'<br />' . "\n" .
          '      </td>' . "\n" .
          '   </tr>' . "\n" .
          '   <tr>' . "\n" .
@@ -1138,8 +1148,8 @@ function showInputForm ($session, $values=false) {
 
                 $s_a[] = '<table bgcolor="'.$color[0].
                 '" border="0"><tr><td>'.
-               addCheckBox('delete[]', FALSE, $key).
-                   "</td><td>\n" . $attached_filename .
+                  addCheckBox('delete[]', FALSE, $key).
+                  "</td><td>\n" . $attached_filename .
                     '</td><td>-</td><td> ' . $type . '</td><td>('.
                     show_readable_size( filesize( $attached_file ) ) . ')</td></tr></table>'."\n";
            }
@@ -1166,18 +1176,18 @@ function showInputForm ($session, $values=false) {
     }
 
     echo '</TABLE>' . "\n" .
-         addHidden('username', $username).
-        addHidden('smaction', $action).
-        addHidden('mailbox', $mailbox);
+      addHidden('username', $username).
+      addHidden('smaction', $action).
+      addHidden('mailbox', $mailbox);
     /*
        store the complete ComposeMessages array in a hidden input value
        so we can restore them in case of a session timeout.
     */
     sqgetGlobalVar('QUERY_STRING', $queryString, SQ_SERVER);
     echo addHidden('restoremessages', serialize($compose_messages)).
-         addHidden('composesession', $composesession).
-        addHidden('querystring', $queryString).
-        "</form>\n";
+      addHidden('composesession', $composesession).
+      addHidden('querystring', $queryString).
+      "</form>\n";
     if (!(bool) ini_get('file_uploads')) {
       /* File uploads are off, so we didn't show that part of the form.
          To avoid bogus bug reports, tell the user why. */
@@ -1205,16 +1215,16 @@ function showComposeButtonRow() {
         }
         echo '          ' . _("Priority") .
              addSelect('mailprio', array(
-                '1' => _("High"),
-                '3' => _("Normal"),
-                '5' => _("Low") ), $mailprio, TRUE);
+                                         '1' => _("High"),
+                                         '3' => _("Normal"),
+                                         '5' => _("Low") ), $mailprio, TRUE);
     }
     $mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn);
     if ($default_use_mdn) {
         if ($mdn_user_support) {
             echo '          ' . _("Receipt") .': '.
-           addCheckBox('request_mdn', $request_mdn == '1', '1'). _("On Read").
-           addCheckBox('request_dr',  $request_dr  == '1', '1'). _("On Delivery");
+              addCheckBox('request_mdn', $request_mdn == '1', '1'). _("On Read").
+              addCheckBox('request_dr',  $request_dr  == '1', '1'). _("On Delivery");
         }
     }
 
@@ -1356,18 +1366,6 @@ function deliverMessage($composeMessage, $draft=false) {
            $domain, $action, $default_move_to_sent, $move_to_sent;
     global $imapServerAddress, $imapPort, $sent_folder, $key;
 
-    /* some browsers replace <space> by nonbreaking spaces &nbsp;
-       by replacing them back to spaces addressparsing works */
-    /* FIXME: How to handle in case of other charsets where "\240"
-       is not a non breaking space ??? */
-    /* THEFIX: browsers don't replace space with nbsp. SM replaces
-       space with nbsp when decodes headers. If problem still happens,
-       use cleanup_nbsp() */
-
-//    $send_to = str_replace("\240",' ',$send_to);
-//    $send_to_cc = str_replace("\240",' ',$send_to_cc);
-//    $send_to_bcc = str_replace("\240",' ',$send_to_bcc);
-
     $rfc822_header = $composeMessage->rfc822_header;
 
     $abook = addressbook_init(false, true);