| | |
| | | |
| | | this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi'); |
| | | |
| | | // mimetypes supported by the browser (default settings) |
| | | this.mimetypes = new Array('text/plain', 'text/html', 'text/xml', |
| | | 'image/jpeg', 'image/gif', 'image/png', |
| | | 'application/x-javascript', 'application/pdf', 'application/x-shockwave-flash'); |
| | | |
| | | // default environment vars |
| | | this.env.keep_alive = 60; // seconds |
| | | this.env.request_timeout = 180; // seconds |
| | |
| | | if (over) button_prop.over = over; |
| | | |
| | | this.buttons[command].push(button_prop); |
| | | |
| | | if (this.loaded) |
| | | init_button(command, button_prop); |
| | | }; |
| | | |
| | | // register a specific gui object |
| | | this.gui_object = function(name, id) |
| | | { |
| | | this.gui_objects[name] = id; |
| | | this.gui_objects[name] = this.loaded ? rcube_find_object(id) : id; |
| | | }; |
| | | |
| | | // register a container object |
| | |
| | | } |
| | | if (this.gui_objects.qsearchbox) { |
| | | this.enable_command('search', 'reset-search', 'moveto', true); |
| | | $(this.gui_objects.qsearchbox).select(); |
| | | } |
| | | |
| | | if (this.contact_list && this.contact_list.rowcount > 0) |
| | |
| | | var qstring = '_mbox='+urlencode(this.env.mailbox)+'&_uid='+this.env.uid+'&_part='+props.part; |
| | | |
| | | // open attachment in frame if it's of a supported mimetype |
| | | if (this.env.uid && props.mimetype && $.inArray(props.mimetype, this.mimetypes)>=0) { |
| | | if (this.env.uid && props.mimetype && this.env.mimetypes && $.inArray(props.mimetype, this.env.mimetypes)>=0) { |
| | | if (props.mimetype == 'text/html') |
| | | qstring += '&_safe=1'; |
| | | this.attachment_win = window.open(this.env.comm_path+'&_action=get&'+qstring+'&_frame=1', 'rcubemailattachment'); |
| | |
| | | // reset quicksearch |
| | | case 'reset-search': |
| | | var n, s = this.env.search_request || this.env.qsearch; |
| | | |
| | | this.reset_qsearch(); |
| | | this.select_all_mode = false; |
| | | |
| | | if (s && this.env.mailbox) |
| | | this.list_mailbox(this.env.mailbox); |
| | | this.list_mailbox(this.env.mailbox, 1); |
| | | else if (s && this.task == 'addressbook') { |
| | | if (this.env.source == '') { |
| | | for (n in this.env.address_sources) break; |
| | | this.env.source = n; |
| | | this.env.group = ''; |
| | | } |
| | | this.list_contacts(this.env.source, this.env.group); |
| | | this.list_contacts(this.env.source, this.env.group, 1); |
| | | } |
| | | break; |
| | | |
| | |
| | | this.drag_menu = function(e, target) |
| | | { |
| | | var modkey = rcube_event.get_modifier(e), |
| | | menu = $('#'+this.gui_objects.message_dragmenu); |
| | | menu = this.gui_objects.message_dragmenu; |
| | | |
| | | if (menu && modkey == SHIFT_KEY && this.commands['copy']) { |
| | | var pos = rcube_event.get_mouse_pos(e); |
| | | this.env.drag_target = target; |
| | | menu.css({top: (pos.y-10)+'px', left: (pos.x-10)+'px'}).show(); |
| | | $(menu).css({top: (pos.y-10)+'px', left: (pos.x-10)+'px'}).show(); |
| | | return true; |
| | | } |
| | | |
| | |
| | | |
| | | this.drag_menu_action = function(action) |
| | | { |
| | | var menu = $('#'+this.gui_objects.message_dragmenu); |
| | | var menu = this.gui_objects.message_dragmenu; |
| | | if (menu) { |
| | | menu.hide(); |
| | | $(menu).hide(); |
| | | } |
| | | this.command(action, this.env.drag_target); |
| | | this.env.drag_target = null; |
| | |
| | | |
| | | this.expunge_mailbox = function(mbox) |
| | | { |
| | | var lock = false, |
| | | url = '_mbox='+urlencode(mbox); |
| | | var lock, url = '_mbox='+urlencode(mbox); |
| | | |
| | | // lock interface if it's the active mailbox |
| | | if (mbox == this.env.mailbox) { |
| | | lock = this.set_busy(true, 'loading'); |
| | | url += '&_reload=1'; |
| | | } |
| | | lock = this.set_busy(true, 'loading'); |
| | | url += '&_reload=1'; |
| | | if (this.env.search_request) |
| | | url += '&_search='+this.env.search_request; |
| | | } |
| | | |
| | | // send request to server |
| | | this.http_post('expunge', url, lock); |
| | |
| | | |
| | | case 27: // escape |
| | | this.ksearch_hide(); |
| | | break; |
| | | return; |
| | | |
| | | case 37: // left |
| | | case 39: // right |
| | |
| | | /********* GUI functionality *********/ |
| | | /*********************************************************/ |
| | | |
| | | var init_button = function(cmd, prop) |
| | | { |
| | | var elm = document.getElementById(prop.id); |
| | | if (!elm) |
| | | return; |
| | | |
| | | var preload = false; |
| | | if (prop.type == 'image') { |
| | | elm = elm.parentNode; |
| | | preload = true; |
| | | } |
| | | |
| | | elm._command = cmd; |
| | | elm._id = prop.id; |
| | | if (prop.sel) { |
| | | elm.onmousedown = function(e){ return rcmail.button_sel(this._command, this._id); }; |
| | | elm.onmouseup = function(e){ return rcmail.button_out(this._command, this._id); }; |
| | | if (preload) |
| | | new Image().src = prop.sel; |
| | | } |
| | | if (prop.over) { |
| | | elm.onmouseover = function(e){ return rcmail.button_over(this._command, this._id); }; |
| | | elm.onmouseout = function(e){ return rcmail.button_out(this._command, this._id); }; |
| | | if (preload) |
| | | new Image().src = prop.over; |
| | | } |
| | | }; |
| | | |
| | | // enable/disable buttons for page shifting |
| | | this.set_page_buttons = function() |
| | | { |
| | |
| | | continue; |
| | | |
| | | for (var i=0; i< this.buttons[cmd].length; i++) { |
| | | var prop = this.buttons[cmd][i]; |
| | | var elm = document.getElementById(prop.id); |
| | | if (!elm) |
| | | continue; |
| | | |
| | | var preload = false; |
| | | if (prop.type == 'image') { |
| | | elm = elm.parentNode; |
| | | preload = true; |
| | | } |
| | | |
| | | elm._command = cmd; |
| | | elm._id = prop.id; |
| | | if (prop.sel) { |
| | | elm.onmousedown = function(e){ return rcmail.button_sel(this._command, this._id); }; |
| | | elm.onmouseup = function(e){ return rcmail.button_out(this._command, this._id); }; |
| | | if (preload) |
| | | new Image().src = prop.sel; |
| | | } |
| | | if (prop.over) { |
| | | elm.onmouseover = function(e){ return rcmail.button_over(this._command, this._id); }; |
| | | elm.onmouseout = function(e){ return rcmail.button_out(this._command, this._id); }; |
| | | if (preload) |
| | | new Image().src = prop.over; |
| | | } |
| | | init_button(cmd, this.buttons[cmd][i]); |
| | | } |
| | | } |
| | | }; |
| | |
| | | var base = this.env.comm_path; |
| | | |
| | | // overwrite task name |
| | | if (query._action.match(/([a-z]+)\/([a-z-_]+)/)) { |
| | | if (query._action.match(/([a-z]+)\/([a-z-_.]+)/)) { |
| | | query._action = RegExp.$2; |
| | | base = base.replace(/\_task=[a-z]+/, '_task='+RegExp.$1); |
| | | } |