* table row that has sender, date, subject, etc...
*
* $Id$
+ * @package squirrelmail
*/
+/** The standard includes.. */
require_once(SM_PATH . 'functions/strings.php');
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/imap_messages.php');
+require_once(SM_PATH . 'functions/mime.php');
-/* Default value for page_selector_max. */
+/**
+ * default value for page_selector_max
+ */
define('PG_SEL_MAX', 10);
+/**
+ * @param mixed $start UNDOCUMENTED
+ */
function elapsed($start)
{
$end = microtime();
function printMessageInfo($imapConnection, $t, $not_last=true, $key, $mailbox,
$start_msg, $where, $what) {
global $checkall,
- $color, $msgs, $msort,
+ $color, $msgs, $msort, $td_str, $msg,
$default_use_priority,
$message_highlight_list,
$index_order,
- $indent_array, /* indent subject by */
- $pos, /* Search postion (if any) */
+ $indent_array, /* indent subject by */
+ $pos, /* Search postion (if any) */
$thread_sort_messages, /* thread sorting on/off */
- $server_sort_order, /* sort value when using server-sorting */
+ $server_sort_order, /* sort value when using server-sorting */
$row_count,
- $allow_server_sort; /* enable/disable server-side sorting */
+ $allow_server_sort, /* enable/disable server-side sorting */
+ $truncate_sender, /* number of characters for From/To field (<= 0 for unchanged) */
+ $email_address,
+ $show_recipient_instead; /* show recipient name instead of default identity */
+
$color_string = $color[4];
if ($GLOBALS['alt_index_colors']) {
}
$urlMailbox = urlencode($mailbox);
- if (handleAsSent($mailbox)) {
- $msg['FROM'] = $msg['TO'];
+ $bSentFolder = handleAsSent($mailbox);
+ if ((!$bSentFolder) && ($show_recipient_instead)) {
+ // If the From address is the same as $email_address, then handle as Sent
+ $from_array = parseAddress($msg['FROM'], 1);
+ if (!isset($email_address)) {
+ global $datadir, $username;
+ $email_address = getPref($datadir, $username, 'email_address');
+ }
+ $bHandleAsSent = ((isset($from_array[0][0])) && ($from_array[0][0] == $email_address));
}
+ else
+ $bHandleAsSent = $bSentFolder;
+ // If this is a Sent message, display To address instead of From
+ if ($bHandleAsSent)
+ $msg['FROM'] = $msg['TO'];
+ // Passing 1 below results in only 1 address being parsed, thus defeating the following code
+ $msg['FROM'] = parseAddress($msg['FROM']/*,1*/);
+
/*
* This is done in case you're looking into Sent folders,
* because you can have multiple receivers.
*/
-
$senderNames = $msg['FROM'];
$senderName = '';
+ $senderAddress = '';
if (sizeof($senderNames)){
foreach ($senderNames as $senderNames_part) {
if ($senderName != '') {
$senderName .= ', ';
+ $senderAddress .= ', ';
}
- if ($senderNames_part[1]) {
- $senderName .= decodeHeader($senderNames_part[1]);
+ $sender_address_part = htmlspecialchars($senderNames_part[0]);
+ $sender_name_part = str_replace(' ',' ', decodeHeader($senderNames_part[1]));
+ if ($sender_name_part) {
+ $senderName .= $sender_name_part;
+ $senderAddress .= $sender_name_part . ' <' . $sender_address_part . '>';
} else {
- $senderName .= htmlspecialchars($senderNames_part[0]);
+ $senderName .= $sender_address_part;
+ $senderAddress .= $sender_address_part;
}
}
- }
-
+ }
+ // If Sent, prefix with To: but only if not Sent folder
+ if ($bHandleAsSent ^ $bSentFolder) {
+ $senderName = _("To:") . ' ' . $senderName;
+ $senderAddress = _("To:") . ' ' . $senderAddress;
+ }
- $subject = processSubject(decodeHeader($msg['SUBJECT']), $indent_array[$msg['ID']]);
+ if ($truncate_sender > 0)
+ $senderName = truncateWithEntities($senderName, $truncate_sender);
echo html_tag( 'tr','','','','VALIGN="top"') . "\n";
$bold = '';
$bold_end = '';
}
- if (handleAsSent($mailbox)) {
+ if ($bHandleAsSent) {
$italic = '<i>';
$italic_end = '</i>';
} else {
} else {
$searchstr = '';
}
- /**
- * AAAAH! Make my eyes stop bleeding!
- * Who wrote this?!
- */
- if (is_array($message_highlight_list) && count($message_highlight_list)){
+
+ if (is_array($message_highlight_list) && count($message_highlight_list)) {
+ $msg['TO'] = parseAddress($msg['TO']);
+ $msg['CC'] = parseAddress($msg['CC']);
foreach ($message_highlight_list as $message_highlight_list_part) {
if (trim($message_highlight_list_part['value']) != '') {
$high_val = strtolower($message_highlight_list_part['value']);
$match_type = strtoupper($message_highlight_list_part['match_type']);
- if ($match_type == 'TO_CC') {
- foreach ($msg['TO'] as $address) {
- if (strstr('^^' . strtolower($address[0]), $high_val) ||
- strstr('^^' . strtolower($address[1]), $high_val)) {
- $hlt_color = $message_highlight_list_part['color'];
- continue;
- }
- }
- foreach ($msg['CC'] as $address) {
- if( strstr('^^' . strtolower($address[0]), $high_val) ||
- strstr('^^' . strtolower($address[1]), $high_val)) {
- $hlt_color = $message_highlight_list_part['color'];
- continue;
- }
- }
+ if($match_type == 'TO_CC') {
+ $match = array('TO', 'CC');
} else {
- if (strstr('^^' . strtolower($msg[$match_type]), $high_val)) {
- $hlt_color = $message_highlight_list_part['color'];
- continue;
+ $match = array($match_type);
+ }
+ foreach($match as $match_type) {
+ switch($match_type) {
+ case('TO'):
+ case('CC'):
+ case('FROM'):
+ foreach ($msg[$match_type] as $address) {
+ $address[0] = decodeHeader($address[0], true, false);
+ $address[1] = decodeHeader($address[1], true, false);
+ if (strstr('^^' . strtolower($address[0]), $high_val) ||
+ strstr('^^' . strtolower($address[1]), $high_val)) {
+ $hlt_color = $message_highlight_list_part['color'];
+ break 4;
+ }
+ }
+ break;
+ default:
+ $headertest = strtolower(decodeHeader($msg[$match_type], true, false));
+ if (strstr('^^' . $headertest, $high_val)) {
+ $hlt_color = $message_highlight_list_part['color'];
+ break 3;
+ }
+ break;
}
}
}
}
$checked = ($checkall == 1) ? ' CHECKED' : '';
$col = 0;
+ $msg['SUBJECT'] = str_replace(' ', ' ', decodeHeader($msg['SUBJECT']));
+ $subject = processSubject($msg['SUBJECT'], $indent_array[$msg['ID']]);
if (sizeof($index_order)) {
foreach ($index_order as $index_order_part) {
switch ($index_order_part) {
$hlt_color );
break;
case 2: /* from */
+ if ($senderAddress != $senderName) {
+ $senderAddress = strtr($senderAddress, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
+ $title = ' title="' . str_replace('"', "''", $senderAddress) . '"';
+ }
+ else
+ $title = '';
echo html_tag( 'td',
$italic . $bold . $flag . $fontstr . $senderName .
$fontstr_end . $flag_end . $bold_end . $italic_end,
'left',
- $hlt_color );
+ $hlt_color, $title );
break;
case 3: /* date */
$date_string = $msg['DATE_STRING'] . '';
$td_str .= '<a href="read_body.php?mailbox='.$urlMailbox
. '&passed_id='. $msg["ID"]
. '&startMessage='.$start_msg.$searchstr.'"';
- $td_str .= ' ' .concat_hook_function('subject_link');
+ $td_str .= ' ' .concat_hook_function('subject_link', array($start_msg, $searchstr));
if ($subject != $msg['SUBJECT']) {
$title = get_html_translation_table(HTML_SPECIALCHARS);
$title = array_flip($title);
if (!$stuff) {
$td_str .= ' ';
}
+ do_hook("msg_envelope");
$td_str .= '</small></b>';
echo html_tag( 'td',
$td_str,
} else {
$end_loop = $show_num;
}
- return fillMessageArray($imapConnection,$id,$end_loop);
+ return fillMessageArray($imapConnection,$id,$end_loop,$show_num);
} else {
return false;
}
if ($sort < 6 ) {
$end = $num_msgs;
$end_loop = $end;
+ /* set shownum to 999999 to fool sqimap_get_small_header_list
+ and rebuild the msgs_str to 1:* */
+ $show_num = 999999;
} else {
/* if it's not sorted */
if ($start_msg + ($show_num - 1) < $num_msgs) {
$end_loop = $show_num;
}
}
- $msgs = fillMessageArray($imapConnection,$id,$end_loop);
+ $msgs = fillMessageArray($imapConnection,$id,$end_loop, $show_num);
}
return $msgs;
}
global $msgs, $msort, $auto_expunge, $thread_sort_messages,
$allow_server_sort, $server_sort_order;
- $start = microtime();
+ /*
+ * For some reason, on PHP 4.3+, this being unset, and set in the session causes havoc
+ * so setting it to an empty array beforehand seems to clean up the issue, and stopping the
+ * "Your script possibly relies on a session side-effect which existed until PHP 4.2.3" error
+ */
+
+ if (!isset($msort)) {
+ $msort = array();
+ }
+
+ if (!isset($msgs)) {
+ $msgs = array();
+ }
+
+ //$start = microtime();
/* If autoexpunge is turned on, then do it now. */
$mbxresponse = sqimap_mailbox_select($imapConnection, $mailbox);
$srt = $sort;
$mode = '';
}
- sqsession_unregister('msort');
- sqsession_unregister('msgs');
+ if ($use_cache) {
+ sqgetGlobalVar('msgs', $msgs, SQ_SESSION);
+ sqgetGlobalVar('msort', $msort, SQ_SESSION);
+ } else {
+ sqsession_unregister('msort');
+ sqsession_unregister('msgs'); }
switch ($mode) {
case 'thread':
$id = get_thread_sort($imapConnection);
} // switch
sqsession_register($msort, 'msort');
sqsession_register($msgs, 'msgs');
+
} /* if exists > 0 */
$res = getEndMessage($start_msg, $show_num, $num_msgs);
$msg_cnt_str = get_msgcnt_str($start_msg, $end_msg, $num_msgs);
do_hook('mailbox_index_before');
- echo '<table 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);
- echo '</td></tr></table></td></tr></table>';
-
- mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color);
- echo '</td></tr></table>';
- $t = elapsed($start);
+?>
+<table border="0" width="100%" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+ <?php mail_message_listing_beginning($imapConnection, $mailbox, $sort,
+ $msg_cnt_str, $paginator_str, $start_msg); ?>
+ </td>
+ </tr>
+ <tr><td HEIGHT="5" BGCOLOR="<?php echo $color[4]; ?>"></td></tr>
+ <tr>
+ <td>
+ <table width="100%" cellpadding="1" cellspacing="0" align="center" border="0" bgcolor="<?php echo $color[9]; ?>">
+ <tr>
+ <td>
+ <table width="100%" cellpadding="1" cellspacing="0" align="center" border="0" bgcolor="<?php echo $color[5]; ?>">
+ <tr>
+ <td>
+ <?php
+ printHeader($mailbox, $sort, $color, !$thread_sort_messages, $start_msg);
+ displayMessageArray($imapConnection, $num_msgs, $start_msg,
+ $msort, $mailbox, $sort, $color, $show_num,0,0);
+ ?>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ <?php
+ mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color);
+ ?>
+ </td>
+ </tr>
+</table>
+<?php
+ //$t = elapsed($start);
//echo("elapsed time = $t seconds\n");
}
return $msort;
}
-function fillMessageArray($imapConnection, $id, $count) {
- return sqimap_get_small_header_list($imapConnection, $id);
+function fillMessageArray($imapConnection, $id, $count, $show_num=false) {
+ return sqimap_get_small_header_list($imapConnection, $id, $show_num);
}
$msg_cnt_str = '',
$paginator = ' ',
$start_msg = 1) {
- global $color, $auto_expunge, $base_uri, $thread_sort_messages,
- $allow_thread_sort, $allow_server_sort, $server_sort_order,
- $PHP_SELF;
+ global $color, $auto_expunge, $base_uri,
+ $allow_server_sort, $server_sort_order,
+ $PHP_SELF, $allow_thread_sort, $thread_sort_messages;
$php_self = $PHP_SELF;
/* fix for incorrect $PHP_SELF */
if (!isset($msg)) {
$msg = '';
}
- $moveFields = '<input type="hidden" name="msg" value="'.htmlspecialchars($msg).'">' .
- '<input type="hidden" name="mailbox" value="'.htmlspecialchars($mailbox).'">' .
- '<input type="hidden" name="startMessage" value="'.htmlspecialchars($start_msg).'">';
-
-// $moveURL = "move_messages.php?msg=$msg&mailbox=$urlMailbox"
-// . "&startMessage=$start_msg";
- /*
- * This is the beginning of the message list table.
- * It wraps around all messages
- */
- echo '<form name="messageList" method="post" action="move_messages.php">' ."\n"
- . $moveFields
- . 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' )
- )
- , '', $color[4], 'border="0" width="100%" cellpadding="1" cellspacing="0"' )
- , 'left', '', '' )
- , '', $color[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', '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";
-
- echo " </TD>\n"
- . html_tag( 'td', '', 'right', '', 'nowrap' );
-
-
-
- if (!$auto_expunge) {
- echo getButton('SUBMIT', 'expungeButton',_("Expunge"))
- .' ' . _("mailbox") . "\n";
- }
- echo getButton('SUBMIT', 'markRead',_("Read"));
- echo getButton('SUBMIT', 'markUnread',_("Unread"));
- echo getButton('SUBMIT', 'delete',_("Delete")) ." \n";
- if (!strpos($php_self,'mailbox')) {
+ if (!strpos($php_self,'?')) {
$location = $php_self.'?mailbox=INBOX&startMessage=1';
} else {
$location = $php_self;
}
- echo '<INPUT TYPE="HIDDEN" NAME="location" VALUE="'.$location.'">';
- echo "</TD>\n"
- . " </TR>\n";
-
- /* draws thread sorting links */
- if ($allow_thread_sort == TRUE) {
- if ($thread_sort_messages == 1 ) {
- $set_thread = 2;
- $thread_name = _("Unthread View");
- } elseif ($thread_sort_messages == 0) {
- $set_thread = 1;
- $thread_name = _("Thread View");
- }
- echo html_tag( 'tr' ,
- html_tag( 'td' ,
- ' <a href=' . $source_url . '?sort='
- . "$sort" . '&start_messages=1&set_thread=' . "$set_thread"
- . '&mailbox=' . urlencode($mailbox) . '><small>' . $thread_name
- . '</a></small> '
- , '', '', '' )
- , '', '', '' );
- }
- echo "</TABLE></td></tr></table></td></tr>\n";
+ $moveFields = '<input type="hidden" name="msg" value="'.htmlspecialchars($msg).'">' .
+ '<input type="hidden" name="mailbox" value="'.htmlspecialchars($mailbox).'">' .
+ '<input type="hidden" name="startMessage" value="'.htmlspecialchars($start_msg).'">'.
+ '<input type="hidden" name="location" value="'.$location.'">';
+
+ /*
+ * This is the beginning of the message list table.
+ * It wraps around all messages
+ */
+ $safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $mailbox);
+ $form_name = "FormMsgs" . $safe_name;
+ echo '<form name="' . $form_name . '" method="post" action="move_messages.php">' ."\n"
+ . $moveFields;
+?>
+ <table width="100%" cellpadding="1" cellspacing="0" style="border: 1px solid <?php echo $color[0]; ?>">
+ <tr>
+ <td>
+ <table bgcolor="<?php echo $color[4]; ?>" border="0" width="100%" cellpadding="1" cellspacing="0">
+ <tr>
+ <td align="left"><small><?php echo $paginator; ?></small></td>
+ <td align="right"><small><?php echo $msg_cnt_str; ?></small></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr width="100%" cellpadding="1" cellspacing="0" border="0" bgcolor="<?php echo $color[0]; ?>">
+ <td>
+ <table border="0" width="100%" cellpadding="1" cellspacing="0">
+ <tr>
+ <td align="left">
+ <small><?php
+ echo getButton('SUBMIT', 'markRead',_("Read"));
+ echo getButton('SUBMIT', 'markUnread',_("Unread"));
+ echo ' ';
+ echo getButton('SUBMIT', 'attache',_("Forward"));
+ echo ' ';
+ echo getButton('SUBMIT', 'delete',_("Delete"));
+ echo '<input type="checkbox" name="bypass_trash">' . _("Bypass Trash");
+ echo ' ';
+ if (!$auto_expunge) {
+ echo getButton('SUBMIT', 'expungeButton',_("Expunge")) .' ' . _("mailbox") . "\n";
+ echo ' ';
+ }
+ do_hook('mailbox_display_buttons');
+ ?></small>
+ </td>
+ <td align="right">
+ <small><?php
+ /* draws thread sorting links */
+ if ($allow_thread_sort == TRUE) {
+ if ($thread_sort_messages == 1 ) {
+ $set_thread = 2;
+ $thread_name = _("Unthread View");
+ } elseif ($thread_sort_messages == 0) {
+ $set_thread = 1;
+ $thread_name = _("Thread View");
+ }
+ echo ' <small>[<a href="' . $source_url . '?sort='
+ . $sort . '&start_messages=1&set_thread=' . $set_thread
+ . '&mailbox=' . urlencode($mailbox) . '">' . $thread_name
+ . '</a>]</small>';
+ }
+ getMbxList($imapConnection);
+ echo getButton('SUBMIT', 'moveButton',_("Move")) . "\n";
+ ?></small>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+<?php
do_hook('mailbox_form_before');
/* if using server sort we highjack the
function mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color) {
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( 'tr',
- html_tag( 'td', $paginator_str ) .
- html_tag( 'td', $msg_cnt_str, 'right' )
- )
- , '', $color[4], 'width="100%" border="0" cellpadding="1" cellspacing="0"' )
- )
- )
- , '', $color[9], 'width="100%" border="0" cellpadding="1" cellspacing="0"' );
- echo '</td></tr>';
+?>
+ <tr><td HEIGHT="5" BGCOLOR="<?php echo $color[4]; ?>" COLSPAN="1"></td></tr>
+ <tr>
+ <td>
+ <table width="100%" cellpadding="1" cellspacing="0" style="border: 1px solid <?php echo $color[0]; ?>">
+ <tr>
+ <td>
+ <table bgcolor="<?php echo $color[4]; ?>" border="0" width="100%" cellpadding="1" cellspacing="0">
+ <tr>
+ <td align="left"><small><?php echo $paginator_str; ?></small></td>
+ <td align="right"><small><?php echo $msg_cnt_str; ?></small></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+<?php
}
/* End of message-list table */
echo "</FORM>\n";
}
-function printHeader($mailbox, $sort, $color, $showsort=true) {
+function printHeader($mailbox, $sort, $color, $showsort=true, $start_msg) {
global $index_order;
echo html_tag( 'tr' ,'' , 'center', $color[5] );
foreach ($index_order as $item) {
switch ($item) {
case 1: /* checkbox */
+ echo html_tag( 'td',get_selectall_link($start_msg, $sort) , '', '', 'width="1%"' );
+ break;
case 5: /* flags */
- echo html_tag( 'td' ,' ' , '', '', 'width="1%"' );
+ echo html_tag( 'td','' , '', '', 'width="1%"' );
break;
case 2: /* from */
if (handleAsSent($mailbox)) {
echo "</td>\n";
break;
case 6: /* size */
- echo html_tag( 'td', '<b>' . _("Size") . '</b>', 'center', '', 'width="5%"' );
+ echo html_tag( 'td', '<b>' . _("Size") . '</b>', 'center', '', 'width="5%" nowrap' );
break;
}
}
/* Now that we have everything figured out, show the actual button. */
echo ' <a href="' . $source_url .'?newsort=' . $which
. '&startMessage=1&mailbox=' . urlencode($mailbox)
- . '"><IMG SRC="../images/' . $img
- . '" BORDER=0 WIDTH=12 HEIGHT=10 ALT="sort"></a>';
+ . '"><img src="../images/' . $img
+ . '" border="0" width="12" height="10" alt="sort" title="'
+ . _("Click here to change the sorting of the message list") .'"></a>';
}
function get_selectall_link($start_msg, $sort) {
$result = '';
if ($javascript_on) {
+ $safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $mailbox);
+ $func_name = "CheckAll" . $safe_name;
+ $form_name = "FormMsgs" . $safe_name;
$result = '<script language="JavaScript" type="text/javascript">'
. "\n<!-- \n"
- . "function CheckAll() {\n"
- . " for (var i = 0; i < document.messageList.elements.length; i++) {\n"
- . " if(document.messageList.elements[i].type == 'checkbox'){\n"
- . " document.messageList.elements[i].checked = "
- . " !(document.messageList.elements[i].checked);\n"
+ . "function " . $func_name . "() {\n"
+ . " for (var i = 0; i < document." . $form_name . ".elements.length; i++) {\n"
+ . " if(document." . $form_name . ".elements[i].type == 'checkbox' && "
+ . "document." . $form_name . ".elements[i].name != 'bypass_trash'){\n"
+ . " document." . $form_name . ".elements[i].checked = "
+ . " !(document." . $form_name . ".elements[i].checked);\n"
. " }\n"
. " }\n"
. "}\n"
. "//-->\n"
- . '</script><a href="#" onClick="CheckAll();">' . _("Toggle All")
- . "</a>\n";
+ . '</script>'
+ . '<input type="checkbox" name="toggleAll" title="'._("Toggle All").'" onclick="'.$func_name.'();">';
+// . <a href="javascript:void(0)" onClick="' . $func_name . '();">' . _("Toggle All")
+// . "</a>\n";
} else {
if (strpos($PHP_SELF, "?")) {
$result .= "<a href=\"$PHP_SELF&mailbox=" . urlencode($mailbox)
$result = "<A HREF=\"right_main.php?use_mailbox_cache=$use"
. "&startMessage=$start_msg&mailbox=$box\" "
- . "TARGET=\"right\">$text</A>";
+ . ">$text</A>";
return ($result);
/*
if (preg_match('/^(.+)\?.+$/',$PHP_SELF,$regs)) {
$result = '<A HREF="'. $source_url . "?use_mailbox_cache=$use"
. "&startMessage=$start_msg&mailbox=$box\" "
- . "TARGET=\"right\">$text</A>";
+ . ">$text</A>";
return ($result);
*/
}
$nxt_str = '';
$pg_str = '';
$all_str = '';
- $tgl_str = '';
$box = urlencode($box);
$nxt_str = get_paginator_link($box, $next_grp, $use, _("Next"));
} else if (($next_grp > $num_msgs) && ($prev_grp >= 0)) {
$prv_str = get_paginator_link($box, $prev_grp, $use, _("Previous"));
- $nxt_str = "<FONT COLOR=\"$color[9]\">"._("Next")."</FONT>\n";
+ $nxt_str = _("Next");
} else if (($next_grp <= $num_msgs) && ($prev_grp < 0)) {
- $prv_str = "<FONT COLOR=\"$color[9]\">"._("Previous") . '</FONT>';
+ $prv_str = _("Previous");
$nxt_str = get_paginator_link($box, $next_grp, $use, _("Next"));
}
/* Adjust if the first and second quarters intersect. */
} else if (($cur_pg - $q2_pgs - ceil($q2_pgs/3)) <= $q1_pgs) {
$extra_pgs = $q2_pgs;
- $extra_pgs -= ceil(($cur_pg - $q1_pgs - 1) * 0.75);
- $q2_pgs = ceil(($cur_pg - $q1_pgs - 1) * 0.75);
+ $extra_pgs -= ceil(($cur_pg - $q1_pgs - 1) * 3/4);
+ $q2_pgs = ceil(($cur_pg - $q1_pgs - 1) * 3/4);
$q3_pgs += ceil($extra_pgs / 2);
$q4_pgs += floor($extra_pgs / 2);
/* Adjust if the third and fourth quarter intersect. */
} else if (($cur_pg + $q3_pgs + 1) >= ($tot_pgs - $q4_pgs + 1)) {
$extra_pgs = $q3_pgs;
- $extra_pgs -= ceil(($tot_pgs - $cur_pg - $q4_pgs) * 0.75);
- $q3_pgs = ceil(($tot_pgs - $cur_pg - $q4_pgs) * 0.75);
+ $extra_pgs -= ceil(($tot_pgs - $cur_pg - $q4_pgs) * 3/4);
+ $q3_pgs = ceil(($tot_pgs - $cur_pg - $q4_pgs) * 3/4);
$q1_pgs += floor($extra_pgs / 2);
$q2_pgs += ceil($extra_pgs / 2);
}
} else if ($PG_SHOWNUM == 999999) {
$pg_str = "<A HREF=\"right_main.php?PG_SHOWALL=0"
. "&use_mailbox_cache=$use&startMessage=1&mailbox=$box\" "
- . "TARGET=\"right\">" ._("Paginate") . '</A>' . $spc;
- }
-
- /* If necessary, compute the 'show all' string. */
- if (($prv_str != '') || ($nxt_str != '')) {
- $all_str = "<A HREF=\"right_main.php?PG_SHOWALL=1"
- . "&use_mailbox_cache=$use&startMessage=1&mailbox=$box\" "
- . "TARGET=\"right\">" . _("Show All") . '</A>';
+ . "TARGET=\"right\">" ._("Paginate") . '</A>';
}
- /* Last but not least, get the value for the toggle all link. */
- $tgl_str = get_selectall_link($start_msg, $sort);
-
/* Put all the pieces of the paginator string together. */
/**
* Hairy code... But let's leave it like it is since I am not certain
* a different approach would be any easier to read. ;)
*/
$result = '';
- $result .= ($prv_str != '' ? $prv_str . $spc . $sep . $spc : '');
- $result .= ($nxt_str != '' ? $nxt_str . $spc . $sep . $spc : '');
- $result .= ($pg_str != '' ? $pg_str : '');
- $result .= ($all_str != '' ? $sep . $spc . $all_str . $spc : '');
- $result .= ($result != '' ? $sep . $spc . $tgl_str: $tgl_str);
+ if ( $prv_str != '' || $nxt_str != '' )
+ {
+ $result .= '[';
+ $result .= ($prv_str != '' ? $prv_str . $spc . $sep . $spc : '');
+ $result .= ($nxt_str != '' ? $nxt_str : '');
+ $result .= ']' . $spc ;
+
+ /* Compute the 'show all' string. */
+ $all_str = "<A HREF=\"right_main.php?PG_SHOWALL=1"
+ . "&use_mailbox_cache=$use&startMessage=1&mailbox=$box\" "
+ . "TARGET=\"right\">" . _("Show All") . '</A>';
+ }
+
+ $result .= ($pg_str != '' ? $spc . '['.$spc.$pg_str.']' . $spc : '');
+ $result .= ($all_str != '' ? $spc . '['.$all_str.']' . $spc . $spc : '');
/* If the resulting string is blank, return a non-breaking space. */
if ($result == '') {
return ($result);
}
-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)");
-
- $trim_at = 55;
-
- /* if this is threaded, subtract two chars per indentlevel */
- if($threadlevel > 0 && $threadlevel <= 10)
- $trim_at -= (2*$threadlevel);
-
- if (strlen($subject) <= $trim_at)
+function truncateWithEntities($subject, $trim_at)
+{
+ $ent_strlen = strlen($subject);
+ if (($trim_at <= 0) || ($ent_strlen <= $trim_at))
return $subject;
- $ent_strlen = $orig_len = strlen($subject);
- $trim_val = $trim_at - 5;
- $ent_offset = 0;
+ global $languages, $squirrelmail_language;
+
/*
* see if this is entities-encoded string
* If so, Iterate through the whole string, find out
* the real number of characters, and if more
- * than 55, substr with an updated trim value.
+ * than $trim_at, substr with an updated trim value.
*/
- $step = $ent_loc = 0;
+ $trim_val = $trim_at;
+ $ent_offset = 0;
+ $ent_loc = 0;
while ( $ent_loc < $trim_val && (($ent_loc = strpos($subject, '&', $ent_offset)) !== false) &&
(($ent_loc_end = strpos($subject, ';', $ent_loc+3)) !== false) ) {
$trim_val += ($ent_loc_end-$ent_loc);
$ent_offset = $ent_loc_end+1;
- ++$step;
}
-
- if (($trim_val > 50) && (strlen($subject) > ($trim_val))&& (strpos($subject,';',$trim_val) < ($trim_val +6))) {
+ if (($trim_val > $trim_at) && ($ent_strlen > $trim_val) && (strpos($subject,';',$trim_val) < ($trim_val + 6))) {
$i = strpos($subject,';',$trim_val);
if ($i) {
$trim_val = strpos($subject,';',$trim_val);
}
}
- if ($ent_strlen <= $trim_at){
+ // only print '...' when we're actually dropping part of the subject
+ if ($ent_strlen <= $trim_val)
return $subject;
- }
if (isset($languages[$squirrelmail_language]['XTRA_CODE']) &&
function_exists($languages[$squirrelmail_language]['XTRA_CODE'])) {
return $languages[$squirrelmail_language]['XTRA_CODE']('strimwidth', $subject, $trim_val);
}
- return substr($subject, 0, $trim_val) . '...';
+
+ return substr_replace($subject, '...', $trim_val);
+}
+
+function processSubject($subject, $threadlevel = 0) {
+ /* Shouldn't ever happen -- caught too many times in the IMAP functions */
+ if ($subject == '') {
+ return _("(no subject)");
+ }
+
+ global $truncate_subject; /* number of characters for Subject field (<= 0 for unchanged) */
+ $trim_at = $truncate_subject;
+
+ /* if this is threaded, subtract two chars per indentlevel */
+ if (($threadlevel > 0) && ($threadlevel <= 10))
+ $trim_at -= (2*$threadlevel);
+
+ return truncateWithEntities($subject, $trim_at);
}
-function getMbxList($imapConnection) {
+function getMbxList($imapConnection, $boxes = 0) {
global $lastTargetMailbox;
echo ' <small> <tt><select name="targetMailbox">';
- echo sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)) );
+ echo sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)), 0, $boxes);
echo ' </SELECT></TT> ';
}
function getButton($type, $name, $value) {
- return '<INPUT TYPE="'.$type.'" NAME="'.$name.'" VALUE="'.$value . '">';
+ return '<INPUT TYPE="'.$type.'" NAME="'.$name.'" VALUE="'.$value . '" style="padding: 0px; margin: 0px">';
}
function getSmallStringCell($string, $align) {
return (array($start_msg,$end_msg));
}
+// This should go in imap_mailbox.php
function handleAsSent($mailbox) {
global $handleAsSent_result;
/* And return the result. */
return $handleAsSent_result;
}
+
?>