Rollback RTL changes. this is mailbox_display.php v.1.301
[squirrelmail.git] / functions / mailbox_display.php
index 74cdc82ccade18b8187b4de9290a34b37a83f370..8861f11c0fac82b6eb857a314bec295e19f6720f 100644 (file)
@@ -3,7 +3,7 @@
 /**
  * mailbox_display.php
  *
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
  * Licensed under the GNU GPL. For full terms see the file COPYING.
  *
  * This contains functions that display mailbox information, such as the
@@ -76,7 +76,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
        $senderName = sqimap_find_displayable_name($msg['FROM']);
     }
 
-    $subject = processSubject($msg['SUBJECT']);
+    $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
 
     echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
 
@@ -118,7 +118,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
     * AAAAH! Make my eyes stop bleeding!
     * Who wrote this?!
     */
-    if (sizeof($message_highlight_list)){
+    if (is_array($message_highlight_list) && count($message_highlight_list)){
         foreach ($message_highlight_list as $message_highlight_list_part) {
             if (trim($message_highlight_list_part['value']) != '') {
                 $high_val   = strtolower($message_highlight_list_part['value']);
@@ -142,7 +142,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
     if (!isset($hlt_color)) {
         $hlt_color = $color_string;
     }
-    $checked = ($checkall == 1) ? true : false;
+    $checked = ($checkall == 1) ? ' CHECKED' : '';
     $col = 0;
     if (sizeof($index_order)) {
         foreach ($index_order as $index_order_part) {
@@ -175,7 +175,7 @@ function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
             case 4: /* subject */
                 $td_str = $bold;
                 if ($thread_sort_messages == 1) {
-                    if (isset($indent_array[$msg["ID"]])) {
+                    if (isset($indent_array[$msg['ID']])) {
                         $td_str .= str_repeat("    ",$indent_array[$msg['ID']]);
                     }
                 }
@@ -455,12 +455,19 @@ function calc_msort($msgs, $sort) {
      * 4 = Subject (up)
      * 5 = Subject (dn)
      */
+
     if (($sort == 0) || ($sort == 1)) {
-        $msort = array_cleave ($msgs, 'TIME_STAMP');
+        foreach ($msgs as $item) {
+            $msort[] = $item['TIME_STAMP'];
+        }
     } elseif (($sort == 2) || ($sort == 3)) {
-        $msort = array_cleave ($msgs, 'FROM-SORT');
+        foreach ($msgs as $item) {
+            $msort[] = $item['FROM-SORT'];
+        }
     } elseif (($sort == 4) || ($sort == 5)) {
-        $msort = array_cleave ($msgs, 'SUBJECT-SORT');
+        foreach ($msgs as $item) {
+            $msort[] = $item['SUBJECT-SORT'];
+        }
     } else {
         $msort = $msgs;
     }
@@ -543,8 +550,7 @@ function fillMessageArray($imapConnection, $id, $count) {
 function displayMessageArray($imapConnection, $num_msgs, $start_msg,
                              $msort, $mailbox, $sort, $color,
                              $show_num, $where=0, $what=0) {
-    global $imapServerAddress, $use_mailbox_cache,
-           $index_order, $checkall,
+    global $imapServerAddress, $use_mailbox_cache, $index_order,
            $indent_array, $thread_sort_messages, $allow_server_sort,
            $server_sort_order, $PHP_SELF;
 
@@ -555,7 +561,7 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
     $urlMailbox = urlencode($mailbox);
 
     /* get indent level for subject display */
-    if ($thread_sort_messages == 1 ) {
+    if ($thread_sort_messages == 1 && $num_msgs) {
         $indent_array = get_parent_level($imapConnection);
     }
 
@@ -579,7 +585,7 @@ function displayMessageArray($imapConnection, $num_msgs, $start_msg,
 
     /* messages display */
 
-    if ($num_msgs == 0) {
+    if (!$num_msgs) {
     /* if there's no messages in this folder */
         echo html_tag( 'tr',
                 html_tag( 'td',
@@ -785,8 +791,17 @@ function mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $colo
 function printHeader($mailbox, $sort, $color, $showsort=true) {
     global $index_order;
     echo html_tag( 'tr' ,'' , 'center', $color[5] );
-    for ($i = 1; $i <= count($index_order); $i++) {
-        switch ($index_order[$i]) {
+
+    /* calculate the width of the subject column based on the
+     * widths of the other columns */
+    $widths = array(1=>1,2=>25,3=>5,4=>0,5=>1,6=>5);
+    $subjectwidth = 100;
+    foreach($index_order as $item) {
+        $subjectwidth -= $widths[$item]; 
+    }
+
+    foreach ($index_order as $item) {
+        switch ($item) {
         case 1: /* checkbox */
         case 5: /* flags */
             echo html_tag( 'td' ,'&nbsp;' , '', '', 'width="1%"' );
@@ -813,7 +828,7 @@ function printHeader($mailbox, $sort, $color, $showsort=true) {
             echo "</td>\n";
             break;
         case 4: /* subject */
-            echo html_tag( 'td' ,'' , 'left', '', '' )
+            echo html_tag( 'td' ,'' , 'left', '', 'width="'.$subjectwidth.'%"' )
                  . '<b>' . _("Subject") . '</b>';
             if ($showsort) {
                 ShowSortButton($sort, $mailbox, 4, 5);
@@ -1153,18 +1168,24 @@ function get_paginator_str($box, $start_msg, $end_msg, $num_msgs,
     return ($result);
 }
 
-function processSubject($subject) {
+function processSubject($subject, $threadlevel = 0) {
     global $languages, $squirrelmail_language;
     /* Shouldn't ever happen -- caught too many times in the IMAP functions */
     if ($subject == '')
         return _("(no subject)");
 
-    if (strlen($subject) <= 55)
+    $trim_at = 55;
+
+    /* if this is threaded, substract two chars per indentlevel */
+    if($threadlevel > 0 && $threadlevel <= 10)
+        $trim_at -= (2*$threadlevel);
+
+    if (strlen($subject) <= $trim_at)
         return $subject;
 
     $ent_strlen = strlen($subject);
-    $trim_val=50;
-    $ent_offset=0;
+    $trim_val = $trim_at - 5;
+    $ent_offset = 0;
     /*
      * see if this is entities-encoded string
      * If so, Iterate through the whole string, find out
@@ -1178,7 +1199,7 @@ function processSubject($subject) {
         $ent_offset  = $ent_loc_end+1;
     }
 
-    if ($ent_strlen <= 55){
+    if ($ent_strlen <= $trim_at){
         return $subject;
     }
 
@@ -1193,21 +1214,7 @@ function processSubject($subject) {
 function getMbxList($imapConnection) {
     global $lastTargetMailbox;
     echo  '         <small>&nbsp;<tt><select name="targetMailbox">';
-    $boxes = sqimap_mailbox_list($imapConnection);
-    foreach ($boxes as $boxes_part) {
-        if (!in_array('noselect', $boxes_part['flags'])) {
-            $box = $boxes_part['unformatted'];
-            $box2 = str_replace(' ', '&nbsp;', imap_utf7_decode_local($boxes_part['unformatted-disp']));
-            if($box2 == 'INBOX') {
-                $box2 = _("INBOX");
-            }
-            if ($lastTargetMailbox == $box) {
-                echo "       <OPTION VALUE=\"$box\" SELECTED>$box2</OPTION>\n";
-            } else {
-                echo "         <OPTION VALUE=\"$box\">$box2</OPTION>\n";
-            }
-        }
-    }
+    echo sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)) ); 
     echo '         </SELECT></TT>&nbsp;';
 }