Masato Higashiyama japanese patch.
[squirrelmail.git] / src / compose.php
index 22a7027806cd8f9bacb041bef56bfd8fe42a77dc..c066add1984d37f1d5fba748f6ba36531c39bfae 100644 (file)
@@ -195,7 +195,7 @@ function getforwardHeader($orig_header) {
    $subject = decodeHeader($orig_header->subject,false,false);
    $subject = str_replace(' ',' ',$subject);
    $bodyTop =  str_pad(' '._("Original Message").' ',$editor_size -2,'-',STR_PAD_BOTH) .
-               "\n\n". $display[_("Subject")] . $subject . "\n" .
+               "\n". $display[_("Subject")] . $subject . "\n" .
                $display[_("From")] . $from . "\n" .
                $display[_("Date")] . getLongDateString( $orig_header->date ). "\n" .
                $display[_("To")] . $to . "\n";
@@ -536,6 +536,9 @@ elseif (isset($sigappend)) {
     if (isset($send_to_bcc)) {
        $values['send_to_bcc'] = $send_to_bcc;
     }
+    if (isset($subject)) {
+       $values['subject'] = $subject;
+    }
     showInputForm($session, $values);
 }
 
@@ -550,6 +553,7 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
            $use_signature, $composesession, $data_dir, $username,
            $username, $key, $imapServerAddress, $imapPort, $compose_messages,
            $composeMessage;
+       global $languages, $squirrelmail_language;
 
     $send_to = $send_to_cc = $send_to_bcc = $subject = $identity = '';
     $mailprio = 3;
@@ -600,6 +604,12 @@ function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $se
                 $bodypart = str_replace(array('&nbsp;','&gt','&lt'),array(' ','<','>'),$bodypart);
                 $bodypart = strip_tags($bodypart);
             }
+            if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
+                function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
+                if (mb_detect_encoding($bodypart) != 'ASCII') {
+                    $bodypart = $languages[$squirrelmail_language]['XTRA_CODE']('decode', $bodypart);
+                }
+            }
             $body .= $bodypart;
         }
         if ($default_use_priority) {
@@ -815,7 +825,7 @@ function getMessage_RFC822_Attachment($message, $composeMessage, $passed_id,
                                      TRUE, $response, $readmessage, $uid_support);
         $message = $message->parent;
     }
-    if ($response = 'OK') {
+    if ($response == 'OK') {
         $subject = encodeHeader($message->rfc822_header->subject);
         array_shift($body_a);
         $body = implode('', $body_a) . "\r\n";
@@ -905,73 +915,85 @@ function showInputForm ($session, $values=false) {
         showComposeButtonRow();
     }
 
+    /* display select list for identities */
     $idents = getPref($data_dir, $username, 'identities', 0);
     if ($idents > 1) {
-        echo '   <TR>' . "\n" .
-                    html_tag( 'td', '', 'right', $color[4], 'WIDTH="10%"' ) .
-                    _("From:") . '</TD>' . "\n" .
-                    html_tag( 'td', '', 'left', $color[4], 'WIDTH="90%"' ) .
-             '         <select name=identity>' . "\n" .
-             '         <option value=default>' .
-                       htmlspecialchars(getPref($data_dir, $username, 'full_name'));
+        $fn = getPref($data_dir, $username, 'full_name');
         $em = getPref($data_dir, $username, 'email_address');
+        echo '   <tr>' . "\n" .
+                    html_tag( 'td', '', 'right', $color[4], 'width="10%"' ) .
+                    _("From:") . '</td>' . "\n" .
+                    html_tag( 'td', '', 'left', $color[4], 'width="90%"' ) .
+             '         <select name="identity">' . "\n" .
+             '         <option value="default">' .
+                       htmlspecialchars($fn);
         if ($em != '') {
-            echo htmlspecialchars(' <' . $em . '>') . "\n";
+            if($fn != '') {
+                echo htmlspecialchars(' <' . $em . '>') . "\n";
+            } else {
+                echo htmlspecialchars($em) . "\n";
+            }
         }
         for ($i = 1; $i < $idents; $i ++) {
+            $fn = getPref($data_dir, $username, 'full_name' . $i);
+            $em = getPref($data_dir, $username, 'email_address' . $i);
+
             echo '<option value="' . $i . '"';
             if (isset($identity) && $identity == $i) {
-                echo ' SELECTED';
+                echo ' selected';
             }
-            echo '>' . htmlspecialchars(getPref($data_dir, $username,
-                                                'full_name' . $i));
-            $em = getPref($data_dir, $username, 'email_address' . $i);
+            echo '>' . htmlspecialchars($fn);
             if ($em != '') {
-                echo htmlspecialchars(' <' . $em . '>') . "\n";
+                if($fn != '') {
+                    echo htmlspecialchars(' <' . $em . '>') . "\n";
+                } else {
+                    echo htmlspecialchars($em) . "\n";
+                }
             }
             echo '</option>';
         }
         echo '</select>' . "\n" .
-             '      </TD>' . "\n" .
-             '   </TR>' . "\n";
+             '      </td>' . "\n" .
+             '   </tr>' . "\n";
     }
-    echo '   <TR>' . "\n" .
-                html_tag( 'td', '', 'right', $color[4], 'WIDTH="10%"' ) .
+    echo '   <tr>' . "\n" .
+                html_tag( 'td', '', 'right', $color[4], 'width="10%"' ) .
                 _("To:") . '</TD>' . "\n" .
-                html_tag( 'td', '', 'left', $color[4], 'WIDTH="90%"' ) .
-         '         <INPUT TYPE=text NAME="send_to" VALUE="' .
-                   $send_to . '" SIZE=60><BR>' . "\n" .
-         '      </TD>' . "\n" .
-         '   </TR>' . "\n" .
-         '   <TR>' . "\n" .
+                html_tag( 'td', '', 'left', $color[4], 'width="90%"' ) .
+         '         <input type="text" name="send_to" value="' .
+                   $send_to . '" size="60" /><br />' . "\n" .
+         '      </td>' . "\n" .
+         '   </tr>' . "\n" .
+         '   <tr>' . "\n" .
                 html_tag( 'td', '', 'right', $color[4] ) .
-                _("CC:") . '</TD>' . "\n" .
+                _("CC:") . '</td>' . "\n" .
                 html_tag( 'td', '', 'left', $color[4] ) .
-         '         <INPUT TYPE=text NAME="send_to_cc" SIZE=60 VALUE="' .
-                   $send_to_cc . '"><BR>' . "\n" .
-         '      </TD>' . "\n" .
-         '   </TR>' . "\n" .
-         '   <TR>' . "\n" .
+         '         <input type="text" name="send_to_cc" size="60" value="' .
+                   $send_to_cc . '" /><br />' . "\n" .
+         '      </td>' . "\n" .
+         '   </tr>' . "\n" .
+         '   <tr>' . "\n" .
                 html_tag( 'td', '', 'right', $color[4] ) .
-                _("BCC:") . '</TD>' . "\n" .
+                _("BCC:") . '</td>' . "\n" .
                 html_tag( 'td', '', 'left', $color[4] ) .
-         '         <INPUT TYPE=text NAME="send_to_bcc" VALUE="' .
-                $send_to_bcc . '" SIZE=60><BR>' . "\n" .
-         '      </TD>' . "\n" .
-         '   </TR>' . "\n" .
-         '   <TR>' . "\n" .
+         '         <input type="text" name="send_to_bcc" value="' .
+                $send_to_bcc . '" size="60" /><br />' . "\n" .
+         '      </td>' . "\n" .
+         '   </tr>' . "\n" .
+         '   <tr>' . "\n" .
                 html_tag( 'td', '', 'right', $color[4] ) .
-                _("Subject:") . '</TD>' . "\n" .
+                _("Subject:") . '</td>' . "\n" .
                 html_tag( 'td', '', 'left', $color[4] ) . "\n";
-    echo '         <INPUT TYPE=text NAME=subject SIZE=60 VALUE="' .
-                   $subject . '">' . "\n" .
-         '      </TD>' . "\n" .
-         '   </TR>' . "\n\n";
+    echo '         <input type="text" name="subject" size="60" value="' .
+                   $subject . '" />' . "\n" .
+         '      </td>' . "\n" .
+         '   </tr>' . "\n\n";
 
     if ($location_of_buttons == 'between') {
         showComposeButtonRow();
     }
 
+    /* why this distinction? */
     if ($compose_new_win == '1') {
         echo '   <TR>' . "\n" .
              '      <TD BGCOLOR="' . $color[0] . '" COLSPAN=2 ALIGN=CENTER>' . "\n" .
@@ -984,6 +1006,7 @@ function showInputForm ($session, $values=false) {
             '         &nbsp;&nbsp;<TEXTAREA NAME=body ROWS=20 COLS="' .
                       $editor_size . '" WRAP="VIRTUAL">';
     }
+
     if ($use_signature == true && $newmail == true && !isset($from_htmladdr_search)) {
         if ($idents > 1) {
             if ($identity == 'default') {
@@ -1014,41 +1037,62 @@ function showInputForm ($session, $values=false) {
     else {
        echo decodeHeader($body,false,true);
     }
-    echo '</TEXTAREA><BR>' . "\n" .
-         '      </TD>' . "\n" .
-         '   </TR>' . "\n";
+    echo '</textarea><br />' . "\n" .
+         '      </td>' . "\n" .
+         '   </tr>' . "\n";
 
 
     if ($location_of_buttons == 'bottom') {
         showComposeButtonRow();
     } else {
-        echo '   <TR>' . "\n" .
-                    html_tag( 'td', '', 'right', '', 'COLSPAN=2' ) . "\n" .
-             '         <INPUT TYPE=SUBMIT NAME=send VALUE="' . _("Send") . '">' . "\n" .
-             '         &nbsp;&nbsp;&nbsp;&nbsp;<BR><BR>' . "\n" .
-             '      </TD>' . "\n" .
-             '   </TR>' . "\n";
+        echo '   <tr>' . "\n" .
+                    html_tag( 'td', '', 'right', '', 'colspan="2"' ) . "\n" .
+             '         <input type="submit" name="send" value="' . _("Send") . '" />' . "\n" .
+             '         &nbsp;&nbsp;&nbsp;&nbsp;<br /><br />' . "\n" .
+             '      </td>' . "\n" .
+             '   </tr>' . "\n";
     }
 
     /* This code is for attachments */
         if ((bool) ini_get('file_uploads')) {
-    echo '   <TR>' . "\n" .
-         '      <TD COLSPAN=2>' . "\n" .
+
+    /* Calculate the max size for an uploaded file.
+     * This is advisory for the user because we can't actually prevent
+     * people to upload too large files. */
+    $sizes = array();
+    /* php.ini vars which influence the max for uploads */
+    $configvars = array('post_max_size', 'memory_limit', 'upload_max_filesize');
+    foreach($configvars as $var) {
+        /* skip 0 or empty values */
+        if( $size = getByteSize(ini_get($var)) ) {
+            $sizes[] = $size;
+        }
+    }
+
+    if(count($sizes) > 0) {
+        $maxsize = '(max.&nbsp;' . show_readable_size( min( $sizes ) ) . ')';
+    } else {
+        $maxsize = '';
+    }
+
+    echo '   <tr>' . "\n" .
+         '      <td colspan="2">' . "\n" .
          '         <table width="100%" cellpadding="1" cellspacing="0" align="center"'.
                    ' border="0" bgcolor="'.$color[9].'">' . "\n" .
-         '            <TR>' . "\n" .
-         '               <TD>' . "\n" .
+         '            <tr>' . "\n" .
+         '               <td>' . "\n" .
          '                 <table width="100%" cellpadding="3" cellspacing="0" align="center"'.
                            ' border="0">' . "\n" .
-         '                    <TR>' . "\n" .
-                                 html_tag( 'td', '', 'right', '', 'VALIGN=MIDDLE' ) .
-                                 _("Attach:") . '</TD>' . "\n" .
-                                 html_tag( 'td', '', 'left', '', 'VALIGN=MIDDLE' ) .
-         '                          <INPUT NAME="attachfile" SIZE=48 TYPE="file">' . "\n" .
+         '                    <tr>' . "\n" .
+                                 html_tag( 'td', '', 'right', '', 'valign="middle"' ) .
+                                 _("Attach:") . '</td>' . "\n" .
+                                 html_tag( 'td', '', 'left', '', 'valign="middle"' ) .
+         '                          <input name="attachfile" size="48" type="file" />' . "\n" .
          '                          &nbsp;&nbsp;<input type="submit" name="attach"' .
                                     ' value="' . _("Add") .'">' . "\n" .
-         '                       </TD>' . "\n" .
-         '                    </TR>' . "\n";
+                                    $maxsize .
+         '                       </td>' . "\n" .
+         '                    </tr>' . "\n";
     
 
     $s_a = array();
@@ -1238,7 +1282,31 @@ function ClearAttachments($composeMessage) {
     }
 }
 
+/* parse values like 8M and 2k into bytes */
+function getByteSize($ini_size) {
+
+    if(!$ini_size) return FALSE;
 
+    $ini_size = trim($ini_size);
+
+    switch(strtoupper(substr($ini_size, -1))) {
+        case 'G':
+           $bytesize = 1073741824;
+           break;
+        case 'M':
+           $bytesize = 1048576;
+           break;
+        case 'K':
+           $bytesize = 1024;
+           break;
+        default:
+           $bytesize = 1;
+    }
+
+    $bytesize *= (int)substr($ini_size, 0, -1);
+       
+    return $bytesize;
+}
 
 
 /* temporary function to make use of the deliver class.