"
- . '"
- . "";
+
/* if using server sort we highjack the
* the $sort var and use $server_sort_order
* instead. but here we reset sort for a bit
@@ -774,56 +850,135 @@ $start_msg = 1) {
if ($allow_server_sort == TRUE) {
$sort = $server_sort_order;
}
- /* Print the headers. */
- for ($i=1; $i <= count($index_order); $i++) {
- switch ($index_order[$i]) {
+}
+
+/**
+* FIXME: Undocumented function
+*
+* @param mixed $num_msgs
+* @param mixed $paginator_str
+* @param mixed $msg_cnt_str
+* @param mixed $color
+*/
+function mail_message_listing_end($num_msgs, $paginator_str, $msg_cnt_str, $color) {
+if ($num_msgs) {
+ /* space between list and footer */
+?>
+
+
+
+
+
+
+\n";
+}
+
+/**
+* FIXME: Undocumented function
+*
+* @param string $mailbox
+* @param mixed $sort
+* @param mixed $color
+* @param bool $showsort
+* @param mixed $start_msg
+*/
+function printHeader($mailbox, $sort, $color, $showsort=true, $start_msg=1) {
+ global $index_order, $internal_date_sort;
+ echo html_tag( 'tr' ,'' , 'center', $color[5] );
+
+ /* 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 */
+ echo html_tag( 'td',get_selectall_link($start_msg, $sort, $mailbox) , '', '', 'width="1%"' );
+ break;
case 5: /* flags */
- echo ' ';
+ echo html_tag( 'td','' , '', '', 'width="1%"' );
break;
case 2: /* from */
if (handleAsSent($mailbox)) {
- echo ' ' . _("To") . ' ';
+ echo html_tag( 'td' ,'' , 'left', '', 'width="25%"' )
+ . '' . _("To") . ' ';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, SQSORT_TO_ASC, SQSORT_TO_DEC);
+ }
} else {
- echo ' ' . _("From") . ' ';
- }
- if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
- ShowSortButton($sort, $mailbox, 2, 3);
+ echo html_tag( 'td' ,'' , 'left', '', 'width="25%"' )
+ . '' . _("From") . ' ';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, SQSORT_FROM_ASC, SQSORT_FROM_DEC);
+ }
}
- echo " \n";
+ echo "\n";
break;
case 3: /* date */
- echo ' ' . _("Date") . ' ';
- if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
- ShowSortButton($sort, $mailbox, 0, 1);
+ echo html_tag( 'td' ,'' , 'left', '', 'width="5%" nowrap' )
+ . '' . _("Date") . ' ';
+ if ($showsort) {
+ if ($internal_date_sort) {
+ ShowSortButton($sort, $mailbox, SQSORT_INT_DATE_ASC, SQSORT_INT_DATE_DEC);
+ } else {
+ ShowSortButton($sort, $mailbox, SQSORT_DATE_ASC, SQSORT_DATE_DEC);
+ }
}
- echo " \n";
+ echo "\n";
break;
- case 4: /* subject */
- echo ' ' . _("Subject") . ' ';
- if ($allow_thread_sort != TRUE || $thread_sort_messages != 1) {
- ShowSortButton($sort, $mailbox, 4, 5);
+ case 4: /* subject */
+ echo html_tag( 'td' ,'' , 'left', '', 'width="'.$subjectwidth.'%"' )
+ . '' . _("Subject") . ' ';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, SQSORT_SUBJ_ASC, SQSORT_SUBJ_DEC);
}
- echo " \n";
+ echo "\n";
break;
case 6: /* size */
- echo html_tag( 'td', '' . _("Size") . ' ', 'center', '', 'width="5%"' );
+ echo html_tag( 'td', '', 'center','','width="5%" nowrap')
+ . '' . _("Size") . ' ';
+ if ($showsort) {
+ ShowSortButton($sort, $mailbox, SQSORT_SIZE_ASC, SQSORT_SIZE_DEC);
+ }
+ echo "\n";
break;
}
}
- /* if using server-sorting,
- * send sort back to 6
- */
- if ($allow_server_sort == TRUE) {
- $sort = 6;
- }
- echo "\n";
+ echo "\n";
}
-/*
+
+/**
* This function shows the sort button. Isn't this a good comment?
+*
+* @param mixed $sort
+* @param string $mailbox
+* @param mixed $Down
+* @param mixed $Up
*/
-function ShowSortButton($sort, $mailbox, $Up, $Down) {
+function ShowSortButton($sort, $mailbox, $Down, $Up ) {
+ global $PHP_SELF;
+
/* Figure out which image we want to use. */
if ($sort != $Up && $sort != $Down) {
$img = 'sort_none.png';
@@ -833,43 +988,62 @@ function ShowSortButton($sort, $mailbox, $Up, $Down) {
$which = $Down;
} else {
$img = 'down_pointer.png';
- $which = 6;
+ $which = 0;
+ }
+
+ if (preg_match('/^(.+)\?.+$/',$PHP_SELF,$regs)) {
+ $source_url = $regs[1];
+ } else {
+ $source_url = $PHP_SELF;
}
/* Now that we have everything figured out, show the actual button. */
- echo ' ';
+ echo ' ';
}
-function get_selectall_link($start_msg, $sort) {
- global $checkall, $what, $where, $mailbox, $javascript_on;
+/**
+* FIXME: Undocumented function
+*
+* @param mixed $start_msg
+* @param mixed $sort
+* @param string $mailbox
+*/
+function get_selectall_link($start_msg, $sort, $mailbox) {
+ global $checkall, $what, $where, $javascript_on;
global $PHP_SELF, $PG_SHOWNUM;
$result = '';
if ($javascript_on) {
- $result =
- '' . _("Toggle All")
- . " \n";
+ $safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $mailbox);
+ $func_name = "CheckAll" . $safe_name;
+ $form_name = "FormMsgs" . $safe_name;
+ $result = ''
+ . ' ';
+// . ' . _("Toggle All")
+// . " \n";
} else {
if (strpos($PHP_SELF, "?")) {
$result .= "";
-
- if (isset($checkall) && ($checkall == '1')) {
- $result .= _("Unselect All");
- } else {
- $result .= _("Select All");
- }
-
- $result .= " \n";
+ $result .= _("All");
+ $result .= "\n";
}
/* Return our final result. */
return ($result);
}
-/*
+/**
* This function computes the "Viewing Messages..." string.
+*
+* @param integer $start_msg first message number
+* @param integer $end_msg last message number
+* @param integer $num_msgs total number of message in folder
+* @return string
*/
function get_msgcnt_str($start_msg, $end_msg, $num_msgs) {
/* Compute the $msg_cnt_str. */
$result = '';
if ($start_msg < $end_msg) {
- $result = sprintf(_("Viewing Messages: %s to %s (%s total)"),
- $start_msg, $end_msg, $num_msgs);
+ $result = sprintf(_("Viewing Messages: %s to %s (%s total)"),
+ ''.$start_msg.' ', ''.$end_msg.' ', $num_msgs);
} else if ($start_msg == $end_msg) {
- $result = sprintf(_("Viewing Message: %s (1 total)"), $start_msg);
+ $result = sprintf(_("Viewing Message: %s (1 total)"), ''.$start_msg.' ');
} else {
- $result = ' ';
+ $result = ' ';
}
-
/* Return our result string. */
return ($result);
}
-/*
+/**
* Generate a paginator link.
+*
+* @param mixed $box
+* @param mixed $start_msg
+* @param mixed $use
+* @param string $text text used for paginator link
+* @return string
*/
function get_paginator_link($box, $start_msg, $use, $text) {
- $result = "$text ";
+
+ $result = "$text ";
+
return ($result);
}
-/*
+/**
* This function computes the paginator string.
+*
+* @param mixed $box
+* @param mixed $start_msg
+* @param mixed $end_msg
+* @param integer $num_msgs
+* @param mixed $show_num
+* @param mixed $sort
*/
function get_paginator_str($box, $start_msg, $end_msg, $num_msgs,
-$show_num, $sort) {
+ $show_num, $sort) {
global $username, $data_dir, $use_mailbox_cache, $color, $PG_SHOWNUM;
/* Initialize paginator string chunks. */
$prv_str = '';
$nxt_str = '';
- $pg_str = '';
+ $pg_str = '';
$all_str = '';
- $tgl_str = '';
+
+ $box = urlencode($box);
/* Create simple strings that will be creating the paginator. */
$spc = ' '; /* This will be used as a space. */
@@ -969,9 +1156,9 @@ $show_num, $sort) {
$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 = ""._("Next")." \n";
+ $nxt_str = _("Next");
} else if (($next_grp <= $num_msgs) && ($prev_grp < 0)) {
- $prv_str = ""._("Previous") . ' ';
+ $prv_str = _("Previous");
$nxt_str = get_paginator_link($box, $next_grp, $use, _("Next"));
}
@@ -992,7 +1179,7 @@ $show_num, $sort) {
$q2_pgs = $q3_pgs = 0;
$q4_pgs = $tot_pgs - $cur_pg;
- /* Otherwise, compute some magic to choose the four quarters. */
+ /* Otherwise, compute some magic to choose the four quarters. */
} else {
/*
* Compute the magic base values. Added together,
@@ -1013,15 +1200,15 @@ $show_num, $sort) {
$q3_pgs += ceil($extra_pgs / 2);
$q4_pgs += floor($extra_pgs / 2);
- /* Adjust if the first and second quarters intersect. */
+ /* 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 fourth quarter contains the current page. */
+ /* Adjust if the fourth quarter contains the current page. */
} else if (($cur_pg + $q4_pgs) >= $tot_pgs) {
$extra_pgs = ($q4_pgs - ($tot_pgs - $cur_pg)) + $q3_pgs;
$q3_pgs = 0;
@@ -1029,11 +1216,11 @@ $show_num, $sort) {
$q1_pgs += floor($extra_pgs / 2);
$q2_pgs += ceil($extra_pgs / 2);
- /* Adjust if the third and fourth quarter intersect. */
+ /* 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);
}
@@ -1043,7 +1230,7 @@ $show_num, $sort) {
* I am leaving this debug code here, commented out, because
* it is a really nice way to see what the above code is doing.
* echo "qts = $q1_pgs/$q2_pgs/$q3_pgs/$q4_pgs = "
- * . ($q1_pgs + $q2_pgs + $q3_pgs + $q4_pgs) . ' ';
+ * . ($q1_pgs + $q2_pgs + $q3_pgs + $q4_pgs) . ' ';
*/
/* Print out the page links from the compute page quarters. */
@@ -1089,32 +1276,32 @@ $show_num, $sort) {
}
}
} else if ($PG_SHOWNUM == 999999) {
- $pg_str = "" ._("Paginate") . ' ' . $spc;
+ $pg_str = "" ._("Paginate") . ' ';
}
- /* If necessary, compute the 'show all' string. */
- if (($prv_str != '') || ($nxt_str != '')) {
- $all_str = "" . _("Show All") . ' ';
- }
-
- /* 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 = '';
+ if ( $prv_str != '' || $nxt_str != '' )
+ {
+ $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);
+ $result .= ($nxt_str != '' ? $nxt_str : '');
+ $result .= ']' . $spc ;
+
+ /* Compute the 'show all' string. */
+ $all_str = "" . _("Show All") . ' ';
+ }
+
+ $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 == '') {
@@ -1125,49 +1312,153 @@ $show_num, $sort) {
return ($result);
}
-function processSubject($subject) {
- /* Shouldn't ever happen -- caught too many times in the IMAP functions */
- if ($subject == '')
- return _("(no subject)");
+/**
+* FIXME: Undocumented function
+*/
+function truncateWithEntities($subject, $trim_at)
+{
+ $ent_strlen = strlen($subject);
+ if (($trim_at <= 0) || ($ent_strlen <= $trim_at))
+ return $subject;
- if (strlen($subject) <= 55)
- return $subject;
+ global $languages, $squirrelmail_language;
- $ent_strlen=strlen($subject);
- $trim_val=50;
- $ent_offset=0;
/*
* 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.
*/
- while ( (($ent_loc = strpos($subject, '&', $ent_offset)) !== false) &&
- (($ent_loc_end = strpos($subject, ';', $ent_loc)) !== false) ) {
- $trim_val += ($ent_loc_end-$ent_loc)+1;
- $ent_strlen -= $ent_loc_end-$ent_loc;
- $ent_offset = $ent_loc_end+1;
+ $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;
}
-
- if ($ent_strlen <= 55){
+ 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);
+ }
+ }
+ // 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);
}
+/**
+* FIXME: Undocumented function
+*/
+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);
+}
+
+/**
+* FIXME: Undocumented function
+*
+* @param mixed $imapConnection
+* @param mixed $boxes
+*/
+function getMbxList($imapConnection, $boxes = 0) {
+ global $lastTargetMailbox;
+ echo ' ';
+ echo sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)), 0, $boxes);
+ echo ' ';
+}
+
+/**
+* Creates button
+*
+* @deprecated see form functions available in 1.5.1 and 1.4.3.
+* @param string $type
+* @param string $name
+* @param string $value
+* @param string $js
+* @param bool $enabled
+*/
+function getButton($type, $name, $value, $js = '', $enabled = TRUE) {
+ $disabled = ( $enabled ? '' : 'disabled ' );
+ $js = ( $js ? $js.' ' : '' );
+ return ' ';
+}
+
+/**
+* Puts string into cell, aligns it and adds tag
+*
+* @param string $string string
+* @param string $align alignment
+*/
+function getSmallStringCell($string, $align) {
+ return html_tag('td',
+ '' . $string . ': ',
+ $align,
+ '',
+ 'nowrap' );
+}
+
+/**
+* FIXME: Undocumented function
+*
+* @param integer $start_msg
+* @param integer $show_num
+* @param integer $num_msgs
+*/
+function getEndMessage($start_msg, $show_num, $num_msgs) {
+ if ($start_msg + ($show_num - 1) < $num_msgs){
+ $end_msg = $start_msg + ($show_num - 1);
+ } else {
+ $end_msg = $num_msgs;
+ }
+
+ if ($end_msg < $start_msg) {
+ $start_msg = $start_msg - $show_num;
+ if ($start_msg < 1) {
+ $start_msg = 1;
+ }
+ }
+ return (array($start_msg,$end_msg));
+}
+
+/**
+* This should go in imap_mailbox.php
+* @param string $mailbox
+*/
function handleAsSent($mailbox) {
- global $sent_folder, $draft_folder, $handleAsSent_result;
+ global $handleAsSent_result;
/* First check if this is the sent or draft folder. */
- $handleAsSent_result = (($mailbox == $sent_folder)
- || ($mailbox == $draft_folder));
+ $handleAsSent_result = isSentMailbox($mailbox) || isDraftMailbox($mailbox);
/* Then check the result of the handleAsSent hook. */
do_hook('check_handleAsSent_result', $mailbox);
/* And return the result. */
- return ($handleAsSent_result);
+ return $handleAsSent_result;
}
-?>
\ No newline at end of file
+?>