/**
* 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
require_once(SM_PATH . 'functions/html.php');
require_once(SM_PATH . 'class/html.class.php');
require_once(SM_PATH . 'functions/imap_mailbox.php');
+require_once(SM_PATH . 'functions/set_language_align.php');
+
+/* --------------------- Get globals ------------------------------------- */
+$language_align = set_language_align();
/* Default value for page_selector_max. */
define('PG_SEL_MAX', 10);
$senderName = sqimap_find_displayable_name($msg['FROM']);
}
- $subject = processSubject($msg['SUBJECT']);
+ $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
- echo html_tag( 'tr' ) . "\n";
+ echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
if (isset($msg['FLAG_FLAGGED']) && ($msg['FLAG_FLAGGED'] == true)) {
$flag = "<font color=\"$color[2]\">";
* 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']);
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) {
$hlt_color );
break;
case 3: /* date */
+ $date_string = $msg['DATE_STRING'] . '';
+ if ($date_string == '') {
+ $date_string = _("Unknown date");
+ }
echo html_tag( 'td',
- $bold . $flag . $fontstr . $msg['DATE_STRING'] .
+ $bold . $flag . $fontstr . $date_string .
$fontstr_end . $flag_end . $bold_end,
'center',
$hlt_color,
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']]);
}
}
function showMessagesForMailbox($imapConnection, $mailbox, $num_msgs,
$start_msg, $sort, $color, $show_num,
$use_cache, $mode='') {
- global $msgs, $msort, $auto_expunge, $thread_sort_messages,
+ global $msgs, $msort, $auto_expunge, $thread_sort_messages, $language_align,
$allow_server_sort, $server_sort_order;
/* If autoexpunge is turned on, then do it now. */
$msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
do_hook('mailbox_index_before');
-
- mail_message_listing_beginning($imapConnection, $mailbox, $sort,
- $msg_cnt_str, $paginator_str, $start_msg);
-
-
- echo '<table bgcolor="' . $color[0] . '" border="0" width="100%" cellpadding="1" cellspacing="0"><tr><td>';
+ echo '<table dir="' . $language_align['dir'] . '" border="0" width="100%" cellpadding="0" cellspacing="0">';
+ echo '<tr><td>';
+
+ mail_message_listing_beginning($imapConnection, $mailbox, $sort,
+ $msg_cnt_str, $paginator_str, $start_msg);
+ echo '</td></tr>';
+ /* line between the button area and the list */
+ echo '<tr><td HEIGHT="5" BGCOLOR="'.$color[4].'"></td></tr>';
+
+ echo '<tr><td>';
+ echo ' <table width="100%" cellpadding="1" cellspacing="0" align="center"'.' border="0" bgcolor="'.$color[9].'">';
+ echo ' <tr><td>';
+ echo ' <table width="100%" cellpadding="1" cellspacing="0" align="center" border="0" bgcolor="'.$color[5].'">';
+ echo '<tr><td>';
printHeader($mailbox, $srt, $color, !$thread_sort_messages);
- displayMessageArray($imapConnection, $num_msgs, $start_msg,
- $msort, $mailbox, $sort, $color, $show_num, 0, 0);
+ displayMessageArray($imapConnection, $num_msgs, $start_msg,
+ $msort, $mailbox, $sort, $color, $show_num,0,0);
+ echo '</td></tr></table></td></tr></table>';
- mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color);
+ mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color);
echo '</td></tr></table>';
-
- /**
- * TODO: Switch to using $_SESSION[] whenever we ditch the 4.0.x series.
- */
}
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;
}
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;
$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);
}
/* messages display */
- if ($num_msgs == 0) {
+ if (!$num_msgs) {
/* if there's no messages in this folder */
echo html_tag( 'tr',
html_tag( 'td',
next($msort);
} while ($i && $i < $endVar);
}
- echo '</table>';
}
/*
* This is the beginning of the message list table.
* It wraps around all messages
*/
-
echo "<FORM name=\"messageList\" method=post action=\"$moveURL\">\n"
- . html_tag( 'table' ,'' , '', '', 'border="0" width="100%" cellpadding="1" cellspacing="0"' ) .
+ . html_tag( 'table' ,
html_tag( 'tr',
html_tag( 'td' ,
html_tag( 'table' ,
html_tag( 'tr',
html_tag( 'td', $paginator, 'left' ) .
- html_tag( 'td', $msg_cnt_str, 'right' )
+ html_tag( 'td', $msg_cnt_str, 'right' )
)
- , '', $color[4], 'border="0" width="100%" cellpadding="2" cellspacing="0"' )
+ , '', $color[4], 'border="0" width="100%" cellpadding="1" cellspacing="0"' )
, 'left', '', '' )
, '', $color[0] )
- . html_tag( 'tr' ) . "\n"
- . html_tag( 'td' ,'' , 'left', $color[0], '' )
- . html_tag( 'table' ,'' , '', $color[0], 'border="0" width="100%" cellpadding="0" cellspacing="0"' )
+ , '', '', 'border="0" width="100%" cellpadding="1" cellspacing="0"' );
+ /* line between header and button area */
+ echo '<tr><td HEIGHT="5" BGCOLOR="'.$color[4].'"></td></tr>';
+
+ echo '<tr><td>';
+ echo html_tag( 'tr' ) . "\n"
+ . html_tag( 'td' ,'' , 'left', '', '' )
+ . html_tag( 'table' ,'' , '', $color[9], 'border="0" width="100%" cellpadding="1" cellspacing="0"' )
+ . '<tr><td>'
+ . html_tag( 'table' ,'' , '', $color[0], 'border="0" width="100%" cellpadding="1" cellspacing="0"' )
. html_tag( 'tr',
- getSmallStringCell(' ' . _("Move Selected To"), 'left') .
- getSmallStringCell(_("Transform Selected Messages"), 'right')
+ getSmallStringCell(_("Move Selected To"), 'left', 'nowrap') .
+ getSmallStringCell(_("Transform Selected Messages"), 'right')
)
. html_tag( 'tr' ) ."\n"
. html_tag( 'td', '', 'left', '', 'valign="middle" nowrap' );
- getMbxList($imapConnection);
- echo getButton('SUBMIT', 'moveButton',_("Move")) . "\n";
- echo getButton('SUBMIT', 'attache',_("Forward")) . "\n";
+ getMbxList($imapConnection);
+ echo getButton('SUBMIT', 'moveButton',_("Move")) . "\n";
+ echo getButton('SUBMIT', 'attache',_("Forward")) . "\n";
- echo " </TD>\n"
+ echo " </TD>\n"
. html_tag( 'td', '', 'right', '', 'nowrap' );
+
+
if (!$auto_expunge) {
echo getButton('SUBMIT', 'expungeButton',_("Expunge"))
.' ' . _("mailbox") . "\n";
, '', '', '' );
}
- echo "</TABLE>\n";
- echo "</table>\n";
+ echo "</TABLE></td></tr></table></td></tr>\n";
do_hook('mailbox_form_before');
- echo '</td></tr>'
- . html_tag( 'tr' )
- . html_tag( 'td' ,'' , '', $color[0], '' );
-
/* if using server sort we highjack the
* the $sort var and use $server_sort_order
* instead. but here we reset sort for a bit
}
function mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color) {
- if ($num_msgs) {
- echo html_tag( 'table',
+ if ($num_msgs) {
+ /* space between list and footer */
+ echo '<tr><td HEIGHT="5" BGCOLOR="'.$color[4].'" COLSPAN="1">';
+
+ echo '</td></tr><tr><td>';
+ echo html_tag( 'table',
html_tag( 'tr',
html_tag( 'td',
html_tag( 'table',
html_tag( 'td', $paginator_str ) .
html_tag( 'td', $msg_cnt_str, 'right' )
)
- , '', $color[4], 'width="100%" cellpadding="1" cellspacing="1"' )
+ , '', $color[4], 'width="100%" border="0" cellpadding="1" cellspacing="0"' )
)
- , '', $color[4] )
- , '', $color[9], 'width="100%" cellpadding="1" cellspacing="1"' );
-
- }
+ )
+ , '', $color[9], 'width="100%" border="0" cellpadding="1" cellspacing="0"' );
+ echo '</td></tr>';
+ }
/* End of message-list table */
do_hook('mailbox_index_after');
function printHeader($mailbox, $sort, $color, $showsort=true) {
global $index_order;
- echo html_tag( 'table' ,'' , '', $color[4], 'border="0" width="100%" cellpadding="1" cellspacing="0"' );
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' ,' ' , '', '', 'width="1%"' );
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);
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
$ent_offset = $ent_loc_end+1;
}
- if ($ent_strlen <= 55){
+ if ($ent_strlen <= $trim_at){
return $subject;
}
function getMbxList($imapConnection) {
global $lastTargetMailbox;
echo ' <small> <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(' ', ' ', 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> ';
}