| | |
| | | |
| | | this.enable_command('add', 'import', this.env.writable_source); |
| | | this.enable_command('list', 'listgroup', 'advanced-search', true); |
| | | |
| | | // load contacts of selected source |
| | | if (!this.env.action) |
| | | this.command('list', this.env.source); |
| | | break; |
| | | |
| | | |
| | |
| | | this.auto_save_start(); |
| | | }; |
| | | |
| | | this.init_address_input_events = function(obj) |
| | | this.init_address_input_events = function(obj, action) |
| | | { |
| | | obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e){ return ref.ksearch_keydown(e, this); }) |
| | | obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e) { return ref.ksearch_keydown(e, this, action); }) |
| | | .attr('autocomplete', 'off'); |
| | | }; |
| | | |
| | |
| | | /*********************************************************/ |
| | | |
| | | // handler for keyboard events on address-fields |
| | | this.ksearch_keydown = function(e, obj) |
| | | this.ksearch_keydown = function(e, obj, action) |
| | | { |
| | | if (this.ksearch_timer) |
| | | clearTimeout(this.ksearch_timer); |
| | | |
| | | var highlight; |
| | | var key = rcube_event.get_keycode(e); |
| | | var mod = rcube_event.get_modifier(e); |
| | | var highlight, |
| | | key = rcube_event.get_keycode(e), |
| | | mod = rcube_event.get_modifier(e); |
| | | |
| | | switch (key) { |
| | | case 38: // key up |
| | |
| | | break; |
| | | |
| | | case 13: // enter |
| | | if (this.ksearch_selected===null || !this.ksearch_input || !this.ksearch_value) |
| | | if (this.ksearch_selected === null || !this.ksearch_input || !this.ksearch_value) |
| | | break; |
| | | |
| | | // insert selected address and hide ksearch pane |
| | |
| | | } |
| | | |
| | | // start timer |
| | | this.ksearch_timer = window.setTimeout(function(){ ref.ksearch_get_results(); }, 200); |
| | | this.ksearch_timer = window.setTimeout(function(){ ref.ksearch_get_results(action); }, 200); |
| | | this.ksearch_input = obj; |
| | | |
| | | return true; |
| | |
| | | }; |
| | | |
| | | // address search processor |
| | | this.ksearch_get_results = function() |
| | | this.ksearch_get_results = function(action) |
| | | { |
| | | var inp_value = this.ksearch_input ? this.ksearch_input.value : null; |
| | | |
| | |
| | | return; |
| | | |
| | | var lock = this.display_message(this.get_label('searching'), 'loading'); |
| | | this.http_post('mail/autocomplete', '_search='+urlencode(q), lock); |
| | | this.http_post(action ? action : 'mail/autocomplete', '_search='+urlencode(q), lock); |
| | | }; |
| | | |
| | | this.ksearch_query_results = function(results, search) |
| | |
| | | row.obj.onmouseout = function() { p.unfocus_subscription(row.id); }; |
| | | }; |
| | | this.subscription_list.init(); |
| | | $('#mailboxroot') |
| | | .mouseover(function(){ p.focus_subscription(this.id); }) |
| | | .mouseout(function(){ p.unfocus_subscription(this.id); }) |
| | | .mouseup(function(){ if (p.drag_active) p.subscription_move_folder(); }); |
| | | }; |
| | | |
| | | this.focus_subscription = function(id) |
| | |
| | | this.set_env('dstfolder', folder); |
| | | $(row).addClass('droptarget'); |
| | | } |
| | | } |
| | | else if (id == 'mailboxroot') { |
| | | this.set_env('dstfolder', ''); |
| | | $(row).addClass('droptarget'); |
| | | } |
| | | else if (this.env.mailbox.match(new RegExp(delim))) { |
| | | this.set_env('dstfolder', this.env.delimiter); |
| | |
| | | (this.env.dstfolder != this.env.mailbox.replace(reg, '')) |
| | | ) { |
| | | reg = new RegExp('[^'+delim+']*['+delim+']', 'g'); |
| | | var lock = this.set_busy(true, 'foldermoving'), |
| | | basename = this.env.mailbox.replace(reg, ''), |
| | | var basename = this.env.mailbox.replace(reg, ''), |
| | | newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename; |
| | | |
| | | this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), lock); |
| | | |
| | | if (newname != this.env.mailbox) { |
| | | this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), this.set_busy(true, 'foldermoving')); |
| | | this.subscription_list.draglayer.hide(); |
| | | } |
| | | } |
| | | this.drag_active = false; |
| | | this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder)); |
| | |
| | | if (!this.gui_objects.subscriptionlist) |
| | | return false; |
| | | |
| | | var row, n, i, tmp, folders, len, list = [], slist = [], |
| | | var row, n, i, tmp, folders, rowid, list = [], slist = [], |
| | | tbody = this.gui_objects.subscriptionlist.tBodies[0], |
| | | refrow = $('tr', tbody).get(0), |
| | | refrow = $('tr', tbody).get(1), |
| | | id = 'rcmrow'+((new Date).getTime()); |
| | | |
| | | if (!refrow) { |
| | |
| | | this.env.subscriptionrows[id] = [name, display_name, 0]; |
| | | |
| | | // sort folders, to find a place where to insert the row |
| | | folders = this.env.subscriptionrows; |
| | | folders = []; |
| | | $.each(this.env.subscriptionrows, function(k,v){ folders.push(v) }); |
| | | folders.sort(function(a,b){ return a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0) }); |
| | | |
| | | for (n in folders) { |
| | | // protected folder |
| | | if (folders[n][2]) { |
| | |
| | | tmp = null; |
| | | } |
| | | } |
| | | list.sort(); |
| | | // make sure protected folders (and their subs) are on top |
| | | list = slist.concat(list); |
| | | |
| | | // check if subfolder of a protected folder |
| | | for (n=0; n<slist.length; n++) { |
| | | if (name.indexOf(slist[n]+this.env.delimiter) == 0) |
| | | rowid = this.get_folder_row_id(slist[n]); |
| | | } |
| | | |
| | | // find folder position after sorting |
| | | for (n=0, len=list.length; n<len; n++) { |
| | | if (list[n] == name) |
| | | break; |
| | | for (n=0; !rowid && n<list.length; n++) { |
| | | if (n && list[n] == name) |
| | | rowid = this.get_folder_row_id(list[n-1]); |
| | | } |
| | | |
| | | // add row to the table |
| | | if (n && n < len) |
| | | $('#'+this.get_folder_row_id(list[n-1])).after(row); |
| | | if (rowid) |
| | | $('#'+rowid).after(row); |
| | | else |
| | | row.appendTo(tbody); |
| | | |
| | |
| | | |
| | | if (elm.type == 'hidden') |
| | | continue; |
| | | |
| | | // remember which elem was disabled before lock |
| | | if (lock && elm.disabled) |
| | | this.disabled_form_elements.push(elm); |
| | | else if (lock || $.inArray(elm, this.disabled_form_elements)<0) |
| | | else if (lock || (this.disabled_form_elements && $.inArray(elm, this.disabled_form_elements)<0)) |
| | | elm.disabled = lock; |
| | | } |
| | | }; |