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 | 68 +++++++++++++++++++++++++++------- 1 files changed, 54 insertions(+), 14 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 3182ce3..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/08/19 (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]); @@ -443,6 +443,11 @@ this.list_contacts(); break; + case 'sort': + // get the type of sorting + this.list_mailbox('', '', props); + break; + case 'nextpage': this.list_page('next'); break; @@ -565,12 +570,14 @@ case 'nextmessage': if (this.env.next_uid) - location.href = this.env.comm_path+'&_action=show&_uid='+this.env.next_uid+'&_mbox='+this.env.mailbox; + this.show_message(this.env.next_uid); + //location.href = this.env.comm_path+'&_action=show&_uid='+this.env.next_uid+'&_mbox='+this.env.mailbox; break; case 'previousmessage': if (this.env.prev_uid) - location.href = this.env.comm_path+'&_action=show&_uid='+this.env.prev_uid+'&_mbox='+this.env.mailbox; + this.show_message(this.env.prev_uid); + //location.href = this.env.comm_path+'&_action=show&_uid='+this.env.prev_uid+'&_mbox='+this.env.mailbox; break; case 'compose': @@ -730,6 +737,7 @@ }; + // lock/unlock interface this.set_busy = function(a, message) { if (a && message) @@ -742,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); }; @@ -761,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'); }; @@ -964,7 +988,7 @@ if (id) { - this.set_busy(true); + this.set_busy(true, 'loading'); target.location.href = this.env.comm_path+'&_action=show&_uid='+id+'&_mbox='+escape(this.env.mailbox)+add_url; } }; @@ -992,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; @@ -1000,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(); } @@ -1014,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 @@ -1034,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; @@ -1048,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); }; @@ -1800,6 +1829,10 @@ } if (row.cells[2].firstChild.tagName=='A') row.cells[2].firstChild.onclick = new Function(this.ref+".command('delete-folder','"+name+"')"); + + var form; + if ((form = this.gui_objects.editform) && form.elements['_folder_name']) + form.elements['_folder_name'].value = ''; }; @@ -1961,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); @@ -1974,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