| | |
| | | | Licensed under the GNU GPL | |
| | | | | |
| | | +-----------------------------------------------------------------------+ |
| | | | Author: Thomas Bruederli <roundcube@gmail.com> | |
| | | | Authors: Thomas Bruederli <roundcube@gmail.com> | |
| | | | Charles McNulty <charles@charlesmcnulty.com> | |
| | | +-----------------------------------------------------------------------+ |
| | | |
| | | $Id$ |
| | |
| | | } |
| | | |
| | | // enable mail commands |
| | | this.enable_command('list', 'compose', 'add-contact', true); |
| | | this.enable_command('list', 'compose', 'add-contact', 'search', 'reset-search', true); |
| | | |
| | | if (this.env.action=='show') |
| | | { |
| | |
| | | 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(); }; |
| | |
| | | // 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); |
| | | }; |
| | | |
| | |
| | | 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 |
| | |
| | | // misc list commands |
| | | case 'list': |
| | | if (this.task=='mail') |
| | | { |
| | | if (this.env.search_request<0 || (this.env.search_request && props != this.env.mailbox)) |
| | | this.reset_qsearch(); |
| | | this.list_mailbox(props); |
| | | } |
| | | else if (this.task=='addressbook') |
| | | this.list_contacts(); |
| | | break; |
| | |
| | | this.add_contact(props); |
| | | break; |
| | | |
| | | // mail quicksearch |
| | | case 'search': |
| | | if (!props && this.gui_objects.qsearchbox) |
| | | props = this.gui_objects.qsearchbox.value; |
| | | if (props) |
| | | this.qsearch(escape(props), this.env.mailbox); |
| | | break; |
| | | |
| | | // reset quicksearch |
| | | case 'reset-search': |
| | | var s = this.env.search_request; |
| | | this.reset_qsearch(); |
| | | |
| | | if (s) |
| | | this.list_mailbox(this.env.mailbox); |
| | | break; |
| | | |
| | | // ldap search |
| | | case 'ldappublicsearch': |
| | |
| | | // 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) |
| | |
| | | } |
| | | |
| | | // 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; |
| | |
| | | this.env.current_page = page; |
| | | this.clear_selection(); |
| | | } |
| | | |
| | | // also send search request to get the right messages |
| | | if (this.env.search_request) |
| | | add_url += '&_search='+this.env.search_request; |
| | | |
| | | if (this.env.mailbox!=mbox) |
| | | this.select_mailbox(mbox); |
| | |
| | | this.http_request('addcontact', '_address='+value); |
| | | }; |
| | | |
| | | // send remote request to search mail |
| | | this.qsearch = function(value, mbox) |
| | | { |
| | | if (value && mbox) |
| | | { |
| | | this.clear_message_list(); |
| | | this.set_busy(true, 'searching'); |
| | | this.http_request('search', '_search='+value+'&_mbox='+mbox, true); |
| | | } |
| | | }; |
| | | |
| | | // reset quick-search form |
| | | this.reset_qsearch = function() |
| | | { |
| | | if (this.gui_objects.qsearchbox) |
| | | this.gui_objects.qsearchbox.value = ''; |
| | | |
| | | this.env.search_request = null; |
| | | }; |
| | | |
| | | |
| | | /*********************************************************/ |
| | | /********* keyboard live-search methods *********/ |
| | |
| | | } |
| | | |
| | | // set unread count to window title |
| | | if ((set_title || mbox==this.env.mailbox) && 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+') '); |
| | |
| | | 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, ''); |
| | | } |
| | | }; |
| | | |
| | |
| | | }; |
| | | |
| | | |
| | | /* deprecated methods |
| | | |
| | | // check if Shift-key is pressed on event |
| | | this.check_shiftkey = function(e) |
| | | { |
| | |
| | | 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(); |
| | | } |