X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Fmailbox_display.php;h=72cbd44772c18dcfc3ca0aa9524c5eeeca78eab1;hb=4b5049de2fa934c45599d6e4c74bf2bbee10d34d;hp=2de35bb26817157555bc7b2cdca40ef0e9c603b7;hpb=6c99d1de81366bceab6c9d6cf12179eedc81f9bc;p=squirrelmail.git diff --git a/functions/mailbox_display.php b/functions/mailbox_display.php index 2de35bb2..72cbd447 100644 --- a/functions/mailbox_display.php +++ b/functions/mailbox_display.php @@ -6,7 +6,7 @@ * This contains functions that display mailbox information, such as the * table row that has sender, date, subject, etc... * - * @copyright © 1999-2006 The SquirrelMail Project Team + * @copyright © 1999-2007 The SquirrelMail Project Team * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @version $Id$ * @package squirrelmail @@ -21,7 +21,9 @@ * @param string $mailbox mailbox to select and retrieve message headers from * @param array $aConfig array with system config settings and incoming vars * @param array $aProps mailbox specific properties + * * @return array $aMailbox mailbox array with all relevant information + * * @since 1.5.1 * @author Marc Groot Koerkamp */ @@ -604,7 +606,7 @@ function prepareMessageList(&$aMailbox, $aProps) { // $onclick, $link_extra, $title, and so forth) // plugins are responsible for sharing nicely (such as for // setting the target, etc) - do_hook('subject_link', array($iPageOffset, $sSearch, $aSearch)); + do_hook('subject_link', $temp=array(&$iPageOffset, &$sSearch, &$aSearch)); } $value = (trim($value)) ? $value : _("(no subject)"); /* add thread indentation */ @@ -985,11 +987,11 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) { $thread_name = _("Thread View"); $newsort = $aMailbox['SORT'] + SQSORT_THREAD; } - $thread_link_str = '[' . $thread_name - . ']'; + $thread_link_uri = $baseurl . '&srt=' . $newsort + . '&startMessage=1'; } else { - $thread_link_str =''; + $thread_link_uri =''; + $thread_name = ''; } $sort = $aMailbox['SORT']; @@ -1087,23 +1089,30 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) { case 'undeleteButton': case 'expungeButton': case 'forward': - $aFormElements[$k] = array($aButtonStrings[$k],'submit'); + $aFormElements[$k] + = array('value' => $aButtonStrings[$k], 'type' => 'submit'); break; case 'bypass_trash': - $aFormElements[$k] = array($aButtonStrings[$k],'checkbox'); + $aFormElements[$k] + = array('value' => $aButtonStrings[$k], 'type' => 'checkbox'); break; case 'moveButton': case 'copyButton': - $aFormElements['targetMailbox'] = - array(sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)), 0, $boxes),'select'); - $aFormElements['mailbox'] = array($aMailbox['NAME'],'hidden'); - $aFormElements['startMessage'] = array($aMailbox['PAGEOFFSET'],'hidden'); - $aFormElements[$k] = array($aButtonStrings[$k],'submit'); + $aFormElements['targetMailbox'] + = array('options_list' => sqimap_mailbox_option_list($imapConnection, array(strtolower($lastTargetMailbox)), 0, $boxes), + 'type' => 'select'); + $aFormElements['mailbox'] + = array('value' => $aMailbox['NAME'], 'type' => 'hidden'); + $aFormElements['startMessage'] + = array('value' => $aMailbox['PAGEOFFSET'], 'type' => 'hidden'); + $aFormElements[$k] + = array('value' => $aButtonStrings[$k], 'type' => 'submit'); break; } } - $aFormElements['account'] = array($iAccount,'hidden'); + $aFormElements['account'] = array('value' => $iAccount,'type' => 'hidden'); } + do_hook('message_list_controls', $aFormElements); /* * This is the beginning of the message list table. @@ -1119,7 +1128,8 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) { /* finally set the template vars */ - // FIX ME, before we support multiple templates we must review the names of the vars +// FIXME, before we support multiple templates we must review the names of the vars +// BUMP! $aTemplate['color'] = $color; @@ -1141,9 +1151,11 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) { $aTemplate['trash_folder'] = $trash_folder; $aTemplate['sent_folder'] = $sent_folder; $aTemplate['draft_folder'] = $draft_folder; - $aTemplate['thread_link_str'] = $thread_link_str; + $aTemplate['thread_link_uri'] = $thread_link_uri; + $aTemplate['thread_name'] = $thread_name; $aTemplate['php_self'] = str_replace('&','&',$php_self); $aTemplate['mailbox'] = $sMailbox; +//FIXME: javascript_on is always assigned to the template object in places like init.php; is there some reason to reassign it here? is there some chance that it was changed? if not, please remove this line! $aTemplate['javascript_on'] = (isset($aProps['config']['javascript_on'])) ? $aProps['config']['javascript_on'] : false; $aTemplate['enablesort'] = (isset($aProps['config']['enablesort'])) ? $aProps['config']['enablesort'] : false; $aTemplate['icon_theme'] = (isset($aProps['config']['icon_theme'])) ? $aProps['config']['icon_theme'] : false; @@ -1152,7 +1164,68 @@ function showMessagesForMailbox($imapConnection, &$aMailbox,$aProps, &$iError) { $aTemplate['fancy_index_highlite'] = $fancy_index_highlite; + /** + * Set up sort possibilities; one could argue that this is best + * placed in the template, but most template authors won't understand + * or need to understand it, so some advanced templates can override + * it if they do something different. + */ + if (!($aTemplate['sort'] & SQSORT_THREAD) && $aTemplate['enablesort']) { + $aTemplate['aSortSupported'] + = array(SQM_COL_SUBJ => array(SQSORT_SUBJ_ASC , SQSORT_SUBJ_DESC), + SQM_COL_DATE => array(SQSORT_DATE_DESC , SQSORT_DATE_ASC), + SQM_COL_INT_DATE => array(SQSORT_INT_DATE_DESC, SQSORT_INT_DATE_ASC), + SQM_COL_FROM => array(SQSORT_FROM_ASC , SQSORT_FROM_DESC), + SQM_COL_TO => array(SQSORT_TO_ASC , SQSORT_TO_DESC), + SQM_COL_CC => array(SQSORT_CC_ASC , SQSORT_CC_DESC), + SQM_COL_SIZE => array(SQSORT_SIZE_ASC , SQSORT_SIZE_DESC)); + } else { + $aTemplate['aSortSupported'] = array(); + } + + + /** + * Figure out which columns should serve as labels for checkbox: + * we try to grab the two columns before and after the checkbox, + * except the subject column, since it is the link that opens + * the message view + * + * if $javascript_on is set, then the highlighting code takes + * care of this; just skip it + * + * This code also might be more appropriate in a template file, but + * we are moving this complex stuff out of the way of template + * authors; advanced template sets are always free to override + * the resultant values. + * + */ + $show_label_columns = array(); + $index_order_part = array(); + if (!($aTemplate['javascript_on'] && $aTemplate['fancy_index_highlite'])) { + $get_next_two = 0; + $last_order_part = 0; + $last_last_order_part = 0; + foreach ($aTemplate['aOrder'] as $index_order_part) { + if ($index_order_part == SQM_COL_CHECK) { + $get_next_two = 1; + if ($last_last_order_part != SQM_COL_SUBJ) + $show_label_columns[] = $last_last_order_part; + if ($last_order_part != SQM_COL_SUBJ) + $show_label_columns[] = $last_order_part; + + } else if ($get_next_two > 0 && $get_next_two < 3 && $index_order_part != SQM_COL_SUBJ) { + $show_label_columns[] = $index_order_part; + $get_next_two++; + } + $last_last_order_part = $last_order_part; + $last_order_part = $index_order_part; + } + } + $aTemplate['show_label_columns'] = $show_label_columns; + + return $aTemplate; + } @@ -1304,7 +1377,7 @@ function handleMessageListForm($imapConnection,&$aMailbox,$sButton='',$aUid = ar break; default: // Hook for plugin buttons - do_hook_function('mailbox_display_button_action', $aUid); + do_hook('mailbox_display_button_action', $aUid); break; } /** @@ -1405,9 +1478,6 @@ function handleMessageListForm($imapConnection,&$aMailbox,$sButton='',$aUid = ar * @author Marc Groot Koerkamp */ function attachSelectedMessages($imapConnection,$aMsgHeaders) { - global $username, $attachment_dir, - $data_dir; - sqgetGlobalVar('composesession', $composesession, SQ_SESSION); sqgetGlobalVar('compose_messages', $compose_messages, SQ_SESSION); @@ -1424,8 +1494,6 @@ function attachSelectedMessages($imapConnection,$aMsgHeaders) { sqsession_register($composesession,'composesession'); } - $hashed_attachment_dir = getHashedDir($username, $attachment_dir); - $composeMessage = new Message(); $rfc822_header = new Rfc822Header(); $composeMessage->rfc822_header = $rfc822_header; @@ -1445,14 +1513,13 @@ function attachSelectedMessages($imapConnection,$aMsgHeaders) { $body = implode('', $body_a); $body .= "\r\n"; - $localfilename = GenerateRandomString(32, 'FILE', 7); - $full_localfilename = "$hashed_attachment_dir/$localfilename"; - - $fp = fopen( $full_localfilename, 'wb'); + $filename = sq_get_attach_tempfile(); + $fp = fopen($filename, 'wb'); fwrite ($fp, $body); fclose($fp); + $composeMessage->initAttachment('message/rfc822',$subject.'.msg', - $full_localfilename); + $filename); } } @@ -1460,3 +1527,4 @@ function attachSelectedMessages($imapConnection,$aMsgHeaders) { sqsession_register($compose_messages,'compose_messages'); return $composesession; } +