From 43fa235da354c8b53aa69ba745c1d398a758fcaf Mon Sep 17 00:00:00 2001
From: svncommit <devs@roundcube.net>
Date: Wed, 26 Oct 2005 05:42:19 -0400
Subject: [PATCH] 

---
 program/js/app.js |   56 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 45 insertions(+), 11 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index fb0c455..7179898 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -6,7 +6,7 @@
  | Copyright (C) 2005, RoundCube Dev, - Switzerland                      |
  | Licensed under the GNU GPL                                            |
  |                                                                       |
- | Modified: 2005/10/13 (tbr)                                            |
+ | Modified: 2005/10/21 (roundcube)                                      |
  |                                                                       |
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
@@ -31,6 +31,7 @@
   // webmail client settings
   this.dblclick_time = 600;
   this.message_time = 5000;
+  this.request_timeout = 120000;
   this.mbox_expression = new RegExp('[^0-9a-z\-_]', 'gi');
   this.env.blank_img = 'skins/default/images/blank.gif';
   
@@ -76,8 +77,7 @@
     this.task = this.env.task;
     
     // check browser
-    if (!(bw.dom && ((bw.ie && bw.vendver>=5.5 && !bw.opera) || (bw.mz && bw.vendver>=1) || (bw.safari && bw.vendver>=125) ||
-                     (bw.opera && bw.vendver>=8) || (bw.konq && bw.vendver>=3.4))))
+    if (!bw.dom || !bw.xmlhttp_test())
       {
       location.href = this.env.comm_path+'&_action=error&_code=0x199';
       return;
@@ -127,7 +127,7 @@
           this.enable_command('add-attachment', 'send-attachment', 'send', true);
           
         if (this.env.messagecount)
-          this.enable_command('select-all', 'select-none', true);
+          this.enable_command('select-all', 'select-none', 'sort', true);
 
         this.set_page_buttons();
 
@@ -204,7 +204,7 @@
 
     // flag object as complete
     this.loaded = true;
-      
+          
     // show message
     if (this.pending_message)
       this.display_message(this.pending_message[0], this.pending_message[1]);
@@ -441,6 +441,11 @@
           this.list_mailbox(props);
         else if (this.task=='addressbook')
           this.list_contacts();
+        break;
+
+      case 'sort':
+        // get the type of sorting
+        this.list_mailbox('', '', props);
         break;
 
       case 'nextpage':
@@ -732,6 +737,7 @@
     };
 
 
+  // lock/unlock interface
   this.set_busy = function(a, message)
     {
     if (a && message)
@@ -744,6 +750,14 @@
     
     if (this.gui_objects.editform)
       this.lock_form(this.gui_objects.editform, a);
+      
+    // clear pending timer
+    if (this.request_timer)
+      clearTimeout(this.request_timer);
+
+    // set timer for requests
+    if (a && this.request_timeout)
+      this.request_timer = setTimeout(this.ref+'.request_timed_out()', this.request_timeout);
     };
 
 
@@ -763,6 +777,14 @@
       url = this.env.comm_path;
 
     return url.replace(/_task=[a-z]+/, '_task='+task);
+    };
+    
+  
+  // called when a request timed out
+  this.request_timed_out = function()
+    {
+    this.set_busy(false);
+    this.display_message('Request timed out!', 'error');
     };
 
 
@@ -994,7 +1016,7 @@
 
 
   // list messages of a specific mailbox
-  this.list_mailbox = function(mbox, page)
+  this.list_mailbox = function(mbox, page, sort)
     {
     var add_url = '';
     var target = window;
@@ -1002,10 +1024,15 @@
     if (!mbox)
       mbox = this.env.mailbox;
 
+    // add sort to url if set
+    if (sort)
+      add_url += '&_sort=' + sort;
+      
     // set page=1 if changeing to another mailbox
     if (!page && mbox != this.env.mailbox)
       {
       page = 1;
+      add_url += '&_refresh=1';
       this.env.current_page = page;
       this.clear_selection();
       }
@@ -1016,14 +1043,14 @@
     // load message list remotely
     if (this.gui_objects.messagelist)
       {
-      this.list_mailbox_remote(mbox, page);
+      this.list_mailbox_remote(mbox, page, add_url);
       return;
       }
     
     if (this.env.contentframe && window.frames && window.frames[this.env.contentframe])
       {
       target = window.frames[this.env.contentframe];
-      add_url = '&_framed=1';
+      add_url += '&_framed=1';
       }
 
     // load message list to target frame/window
@@ -1036,7 +1063,7 @@
 
 
   // send remote request to load message list
-  this.list_mailbox_remote = function(mbox, page)
+  this.list_mailbox_remote = function(mbox, page, add_url)
     {
     // clear message list
     var table = this.gui_objects.messagelist;
@@ -1050,7 +1077,7 @@
     // send request to server
     var url = '_mbox='+escape(mbox)+(page ? '&_page='+page : '');
     this.set_busy(true, 'loading');
-    this.http_request('list', url);
+    this.http_request('list', url+add_url);
     };
 
 
@@ -1967,9 +1994,13 @@
     var cont = msg;
     if (type)
       cont = '<div class="'+type+'">'+cont+'</div>';
-      
+
+    this.gui_objects.message._rcube = this;
     this.gui_objects.message.innerHTML = cont;
     this.gui_objects.message.style.display = 'block';
+    
+    if (type!='loading')
+      this.gui_objects.message.onmousedown = function(){ this._rcube.hide_message(); return true; };
     
     if (!hold)
       this.message_timer = setTimeout(this.ref+'.hide_message()', this.message_time);
@@ -1980,7 +2011,10 @@
   this.hide_message = function()
     {
     if (this.gui_objects.message)
+      {
       this.gui_objects.message.style.display = 'none';
+      this.gui_objects.message.onmousedown = null;
+      }
     };
 
 

--
Gitblit v1.9.1