From 8c2e58b42e89ca0216307553a906c2ca776c44f8 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Mon, 20 Mar 2006 17:11:35 -0500 Subject: [PATCH] Minor improvements and bugfixes (see changelog) --- program/js/app.js | 111 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 81 insertions(+), 30 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 3c91490..4713788 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -7,7 +7,8 @@ | Licensed under the GNU GPL | | | +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | + | Authors: Thomas Bruederli <roundcube@gmail.com> | + | Charles McNulty <charles@charlesmcnulty.com> | +-----------------------------------------------------------------------+ $Id$ @@ -145,6 +146,9 @@ if (this.env.messagecount) this.enable_command('select-all', 'select-none', 'sort', 'expunge', true); + if (this.env.messagecount && this.env.mailbox==this.env.trash_mailbox) + this.enable_command('purge', true); + this.set_page_buttons(); // focus this window @@ -228,7 +232,7 @@ this.enable_command('logout', true); // disable browser's contextmenus - //document.oncontextmenu = function(){ return false; } + // document.oncontextmenu = function(){ return false; } // load body click event document.onmousedown = function(){ return rcube_webmail_client.reset_click(); }; @@ -245,7 +249,7 @@ // start interval for keep-alive/recent_check signal if (this.kepp_alive_interval && this.task=='mail' && this.gui_objects.messagelist) this.kepp_alive_int = setInterval(this.ref+'.check_for_recent()', this.kepp_alive_interval); - else + else if (this.task!='login') this.kepp_alive_int = setInterval(this.ref+'.send_keep_alive()', this.kepp_alive_interval); }; @@ -262,7 +266,6 @@ this.in_message_list = true; e.cancelBubble = true; - if (e.stopPropagation) e.stopPropagation(); }; // reset last clicked if user clicks on anything other than the message table @@ -273,7 +276,7 @@ var keyCode = document.layers ? e.which : document.all ? event.keyCode : document.getElementById ? e.keyCode : 0; var mod_key = this.get_modifier(e); var scroll_to = 0; - + var last_selected_row = this.list_rows[this.last_selected]; if (keyCode == 40) { // down arrow key pressed @@ -290,7 +293,7 @@ } if (!new_row) return false; scroll_to = new_row.offsetTop; - } else {return false}; + } else {return true;} if (mod_key != CONTROL_KEY) this.select_row(new_row.uid,mod_key); @@ -446,7 +449,7 @@ this.list_rows = this.contact_rows; if (this.env.cid) - this.select(this.env.cid); + this.highlight_row(this.env.cid); }; @@ -510,7 +513,7 @@ this.list_rows = this.identity_rows; if (this.env.iid) - this.select(this.env.iid); + this.highlight_row(this.env.iid); }; @@ -622,9 +625,10 @@ this.expunge_mailbox(this.env.mailbox); break; - case 'clear-mailbox': - //if (this.env.messagecount) - //this.clear_mailbox(this.env.mailbox); + case 'purge': + case 'empty-mailbox': + if (this.env.messagecount) + this.purge_mailbox(this.env.mailbox); break; @@ -1086,6 +1090,7 @@ // onmouseup-handler of message list row this.click_row = function(e, id) { + var mod_key = this.get_modifier(e); // don't do anything (another action processed before) if (this.dont_select) @@ -1095,15 +1100,14 @@ } // unselects currently selected row - if (!this.drag_active && this.in_selection_before==id) { - var mod_key = this.get_modifier(e); + if (!this.drag_active && this.in_selection_before==id) this.select_row(id,mod_key); - } + this.drag_start = false; this.in_selection_before = false; // row was double clicked - if (this.task=='mail' && this.list_rows && this.list_rows[id].clicked) + if (this.task=='mail' && this.list_rows && this.list_rows[id].clicked && !mod_key) { this.show_message(id); return false; @@ -1296,7 +1300,7 @@ for (var n in this.list_rows) if (!filter || this.list_rows[n][filter]==true) - this.select(n, true); + this.highlight_row(n, true); }; @@ -1434,6 +1438,28 @@ this.http_request('expunge', url+add_url, lock); }; + + this.purge_mailbox = function(mbox) + { + var lock = false; + var add_url = ''; + + if (!confirm(this.get_label('purgefolderconfirm'))) + return false; + + // lock interface if it's the active mailbox + if (mbox == this.env.mailbox) + { + lock = true; + this.set_busy(true, 'loading'); + add_url = '&_reload=1'; + } + + // send request to server + var url = '_mbox='+escape(mbox); + this.http_request('purge', url+add_url, lock); + }; + // move selected messages to the specified mailbox this.move_messages = function(mbox) @@ -2068,6 +2094,7 @@ return false; //if (this.env.framed && add_url=='') + // add_url = '&_framed=1'; if (action && (cid || action=='add')) @@ -2081,9 +2108,9 @@ this.delete_contacts = function() { // exit if no mailbox specified or if selection is empty - if (!(this.selection.length || this.env.cid)) + if (!(this.selection.length || this.env.cid) || !confirm(this.get_label('deletecontactconfirm'))) return; - + var a_cids = new Array(); if (this.env.cid) @@ -2618,6 +2645,13 @@ this.set_page_buttons(); }; + // replace content of quota display + this.set_quota = function(text) + { + if (this.gui_objects.quotadisplay) + this.gui_objects.quotadisplay.innerHTML = text; + }; + // update the mailboxlist this.set_unread_count = function(mbox, count, set_title) @@ -2647,10 +2681,10 @@ } // set unread count to window title - if (set_title && document.title) + reg = /^\([0-9]+\)\s+/i; + if (set_title && count && document.title) { var doc_title = String(document.title); - reg = /^\([0-9]+\)\s+/i; if (count && doc_title.match(reg)) document.title = doc_title.replace(reg, '('+count+') '); @@ -2658,6 +2692,11 @@ document.title = '('+count+') '+doc_title; else document.title = doc_title.replace(reg, ''); + } + // remove unread count from window title + else if (document.title) + { + document.title = document.title.replace(reg, ''); } }; @@ -2821,7 +2860,7 @@ if (request_obj.__lock) this.set_busy(false); - console(request_obj.responseText); + console(request_obj.get_text()); // if we get javascript code from server -> execute it if (request_obj.get_text() && (ctype=='text/javascript' || ctype=='application/x-javascript')) @@ -2837,9 +2876,12 @@ break; case 'list': + if (this.env.messagecount) + this.enable_command('purge', (this.env.mailbox==this.env.trash_mailbox)); + case 'expunge': this.enable_command('select-all', 'select-none', 'expunge', this.env.messagecount ? true : false); - break; + break; } request_obj.reset(); @@ -2893,6 +2935,8 @@ }; +/* deprecated methods + // check if Shift-key is pressed on event this.check_shiftkey = function(e) { @@ -2922,22 +2966,29 @@ else return false; } +*/ - -// returns modifier key (constants defined at top of file) + // returns modifier key (constants defined at top of file) this.get_modifier = function(e) { var opcode = 0; - if (e = e || window.event) - { + e = e || window.event; + + if (bw.mac && e) + { + opcode += (e.metaKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY); + return opcode; + } + if (e) + { opcode += (e.ctrlKey && CONTROL_KEY) + (e.shiftKey && SHIFT_KEY); - return opcode; - } + return opcode; + } if (e.cancelBubble) - { + { e.cancelBubble = true; e.returnValue = false; - } + } else if (e.preventDefault) e.preventDefault(); } -- Gitblit v1.9.1