From ed5d29f4b3c57235594931d33dde7cccaf7cd58b Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 25 May 2006 14:25:04 -0400
Subject: [PATCH] Finalized GoogieSpell integration

---
 program/steps/mail/func.inc |   52 +++++++++++++++++++++++++++++++++-------------------
 1 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index a6f8b3f..1be690a 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -25,6 +25,10 @@
 
 $EMAIL_ADDRESS_PATTERN = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/i';
 
+if (empty($_SESSION['mbox'])){
+  $_SESSION['mbox'] = $IMAP->get_mailbox_name();
+}
+
 // set imap properties and session vars
 if (strlen($_GET['_mbox']))
   {
@@ -38,6 +42,9 @@
   $_SESSION['page'] = $_GET['_page'];
   }
 
+// set mailbox to INBOX if not set
+if (empty($_SESSION['mbox']))
+  $_SESSION['mbox'] = $IMAP->get_mailbox_name();
 
 // set default sort col/order to session
 if (!isset($_SESSION['sort_col']))
@@ -53,7 +60,6 @@
 
 // set current mailbox in client environment
 $OUTPUT->add_script(sprintf("%s.set_env('mailbox', '%s');", $JS_OBJECT_NAME, $IMAP->get_mailbox_name()));
-
 
 if ($CONFIG['trash_mbox'])
   $OUTPUT->add_script(sprintf("%s.set_env('trash_mailbox', '%s');", $JS_OBJECT_NAME, $CONFIG['trash_mbox']));
@@ -90,7 +96,7 @@
                     rcube_label($attrib['noselection']));
   
   // get mailbox list
-  $mbox = $IMAP->get_mailbox_name();
+  $mbox_name = $IMAP->get_mailbox_name();
   
   // for these mailboxes we have localized labels
   $special_mailboxes = array('inbox', 'sent', 'drafts', 'trash', 'junk');
@@ -113,9 +119,9 @@
 // var_dump($a_mailboxes);
 
   if ($type=='select')
-    $out .= rcmail_render_folder_tree_select($a_mailboxes, $special_mailboxes, $mbox, $attrib['maxlength']);
+    $out .= rcmail_render_folder_tree_select($a_mailboxes, $special_mailboxes, $mbox_name, $attrib['maxlength']);
    else
-    $out .= rcmail_render_folder_tree_html($a_mailboxes, $special_mailboxes, $mbox, $attrib['maxlength']);
+    $out .= rcmail_render_folder_tree_html($a_mailboxes, $special_mailboxes, $mbox_name, $attrib['maxlength']);
 
 // rcube_print_time($mboxlist_start, 'render_folder_tree()');
 
@@ -159,7 +165,7 @@
   
 
 // return html for a structured list <ul> for the mailbox tree
-function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox, $maxlength, $nestLevel=0)
+function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox_name, $maxlength, $nestLevel=0)
   {
   global $JS_OBJECT_NAME, $COMM_PATH, $IMAP, $CONFIG, $OUTPUT;
 
@@ -188,7 +194,7 @@
       }
 
     // add unread message count display
-    if ($unread_count = $IMAP->messagecount($folder['id'], 'RECENT', ($folder['id']==$mbox)))
+    if ($unread_count = $IMAP->messagecount($folder['id'], 'RECENT', ($folder['id']==$mbox_name)))
       $foldername .= sprintf(' (%d)', $unread_count);
 
     // make folder name safe for ids and class names
@@ -211,7 +217,7 @@
                     $class_name,
                     $zebra_class,
                     $unread_count ? ' unread' : '',
-                    $folder['id']==$mbox ? ' selected' : '',
+                    $folder['id']==$mbox_name ? ' selected' : '',
                     $COMM_PATH,
                     urlencode($folder['id']),
                     $JS_OBJECT_NAME,
@@ -222,7 +228,7 @@
                     rep_specialchars_output($foldername, 'html', 'all'));
 
     if (!empty($folder['folders']))
-      $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $special, $mbox, $maxlength, $nestLevel+1) . "</ul>\n";
+      $out .= "\n<ul>\n" . rcmail_render_folder_tree_html($folder['folders'], $special, $mbox_name, $maxlength, $nestLevel+1) . "</ul>\n";
 
     $out .= "</li>\n";
     $idx++;
@@ -233,7 +239,7 @@
 
 
 // return html for a flat list <select> for the mailbox tree
-function rcmail_render_folder_tree_select(&$arrFolders, &$special, &$mbox, $maxlength, $nestLevel=0)
+function rcmail_render_folder_tree_select(&$arrFolders, &$special, &$mbox_name, $maxlength, $nestLevel=0)
   {
   global $IMAP, $OUTPUT;
 
@@ -259,7 +265,7 @@
                     rep_specialchars_output($foldername, 'html', 'all'));
 
     if (!empty($folder['folders']))
-      $out .= rcmail_render_folder_tree_select($folder['folders'], $special, $mbox, $maxlength, $nestLevel+1);
+      $out .= rcmail_render_folder_tree_select($folder['folders'], $special, $mbox_name, $maxlength, $nestLevel+1);
 
     $idx++;
     }
@@ -390,13 +396,16 @@
     $zebra_class = $i%2 ? 'even' : 'odd';
 
     // set messag attributes to javascript array
+    if ($header->deleted)
+      $js_row_arr['deleted'] = true;
     if (!$header->seen)
       $js_row_arr['unread'] = true;
     if ($header->answered)
       $js_row_arr['replied'] = true;
-
-	// set message icon    
-    if ($attrib['unreadicon'] && !$header->seen)
+    // set message icon  
+    if ($attrib['deletedicon'] && $header->deleted)
+      $message_icon = $attrib['deletedicon'];
+    else if ($attrib['unreadicon'] && !$header->seen)
       $message_icon = $attrib['unreadicon'];
     else if ($attrib['repliedicon'] && $header->answered)
       $message_icon = $attrib['repliedicon'];
@@ -456,6 +465,8 @@
   
   if ($attrib['messageicon'])
     $javascript .= sprintf("%s.set_env('messageicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path, $attrib['messageicon']);
+  if ($attrib['deletedicon'])
+    $javascript .= sprintf("%s.set_env('deletedicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path, $attrib['deletedicon']);
   if ($attrib['unreadicon'])
     $javascript .= sprintf("%s.set_env('unreadicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path, $attrib['unreadicon']);
   if ($attrib['repliedicon'])
@@ -510,12 +521,9 @@
       $a_msg_cols[$col] = $cont;
       }
 
+    $a_msg_flags['deleted'] = $header->deleted ? 1 : 0;
     $a_msg_flags['unread'] = $header->seen ? 0 : 1;
     $a_msg_flags['replied'] = $header->answered ? 1 : 0;
-    
-    if ($header->deleted)
-      $a_msg_flags['deleted'] = 1;
-  
     $commands .= sprintf("this.add_message_row(%s, %s, %s, %b, %b);\n",
                          $header->uid,
                          array2js($a_msg_cols),
@@ -893,7 +901,7 @@
 
       // part is file/attachment
       else if ($mail_part->disposition=='attachment' || $mail_part->disposition=='inline' || $mail_part->headers['content-id'] ||
-               (empty($mail_part->disposition) && ($mail_part->d_parameters['filename'] || $mail_part->d_parameters['name'])))
+               (empty($mail_part->disposition) && ($mail_part->d_parameters['filename'] || $mail_part->ctype_parameters['name'])))
         {
         if ($message_ctype_secondary=='related' && $mail_part->headers['content-id'])
           $sa_inline_objects[] = array('filename' => rcube_imap::decode_mime_string($mail_part->d_parameters['filename']),
@@ -917,7 +925,13 @@
                                    'size'     => strlen($IMAP->mime_decode($mail_part->body, $mail_part->headers['content-transfer-encoding'])) /*,
                                    'content'  => $mail_part->body */);
                                    
-                                   
+        else if ($mail_part->headers['content-description'])
+	  $a_attachments[] = array('filename' => rcube_imap::decode_mime_string($mail_part->headers['content-description']),
+	  			   'encoding' => strtolower($mail_part->headers['content-transfer-encoding']),
+                                   'mimetype' => strtolower("$primary_type/$secondary_type"),
+                                   'part_id'  => $mail_part->mime_id,
+                                   'size'     => strlen($IMAP->mime_decode($mail_part->body, $mail_part->headers['content-transfer-encoding'])) /*,
+                                   'content'  => $mail_part->body */);
         }
       }
 

--
Gitblit v1.9.1